I know the cv::8UC1
or cv::8UC3
formats for images, those are 1-channel 0-255 unsigned char or 3-channel for RGB 0-255 unsigned char image formats to store respectively.
But what about floating point formats like cv::32F
? I have two questions about these guys.
1-Why they are 32-bit? I mean why we need to store intensity of a pixel in range of 0-4294967296 ? (Then I think we must convert it again to 8-bit numbers in 0-255 range!)
2-As I know we use a 2-dimensional matrix to store an image that has an integer coordinates(x,y). But I saw in some codes they use floating point numbers to find a pixel's location/coordinates. Like this part of O'reilly's book:
Subpixel corners If you are processing images for the purpose of extracting geometric measurements, as opposed to extracting features for recognition, then you will normally need more resolution than the simple pixel values supplied by cv::goodFeaturesToTrack() . Another way of saying this is that such pixels
come with integer coordinates whereas we sometimes require real-valued coordinates — for example, a pixel location of (8.25, 117.16).
What is the meaning of this?