gpt4 book ai didi

image - 为什么我们在 OpenCV 中使用 float ?

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:55 24 4
gpt4 key购买 nike

我知道图像的 cv::8UC1cv::8UC3 格式,它们是 1 channel 0-255 无符号字符或 RGB 0 的 3 channel -255 unsigned char 图像格式分别存储。

但是像 cv::32F 这样的浮点格式呢?我有两个关于这些人的问题。

1-为什么它们是 32 位的?我的意思是为什么我们需要存储 0-4294967296 范围内的像素强度? (那我想我们必须把它再次转换成0-255范围内的8位数字!)

2-据我所知,我们使用二维矩阵来存储具有整数坐标 (x,y) 的图像。但是我在一些代码中看到他们使用 float 来查找像素的位置/坐标。喜欢 O'reilly 书中的这一部分:

Subpixel cornersIf you are processing images for the purpose of extracting geometricmeasurements, as opposed to extracting features for recognition, then you willnormally need more resolution than the simple pixel values supplied bycv::goodFeaturesToTrack(). Another way of saying this is that such pixels

come with integer coordinates whereas we sometimes require real-valuedcoordinates — for example, a pixel location of (8.25, 117.16).

这是什么意思?

最佳答案

我会尝试做一个简短的解释,但我相信随着时间的推移你会更好地理解它。当我们以数字方式捕捉图像时,我们实际上使用了一个像 table 一样的传感器,我们在其中测量照射到这个细胞上的光量。光是一个物理量。事实上,您将测量值限制为 0..255 并不意味着我们的眼睛无法看到更精细的划分。因此,许多应用程序确实给出了 0...2^16-1 的值,而不是 0...2^8-1(即 255)。现在,我认为你知道的足以回答你的问题了:

  1. 想象一下,我有一张从飞机上拍摄的农场图片。我知道这张照片中某处有一个农民。我想在每个像素中存储这个像素是农民的概率(从飞机上拍摄的人非常小)。概率范围从 0 到 1。因此我需要 float 。如果我进行高精度计算,我可能不仅需要 32 位 float ,还需要 64 位 float 以获得更高的精度。

  2. 如上所述,我们仅捕获“像素表”,但我们假设现实情况更为复杂。确实如此。所以农民可能会“陷入”两个像素之间。所以,我们可以采取不同的方法:试着找到农夫乘坐的拖拉机,然后从中间拿走。这可以很好地落在两个像素之间。

继续阅读,通过练习您会掌握它的窍门。

关于image - 为什么我们在 OpenCV 中使用 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51018378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com