I am using SURF features for image registration. I have images of type uint16
.
pts1 = detectSURFFeatures(image)
When I used the above function on uint16
images, the function returned 0 SURF points. As a workaround, I used to convert the images to uint8
, after which the function was returning a good amount of detected SURF points. Thus, the function worked on uint8
images, but not on uint16
.
Note, that the function doesn't show any error. It executes successfully, but the SURFPoints object
returned has 0 SURFPoints.
Why does this happen? The documentation of the above function says that the image can be single, double, uint8, uint16, int16 and logical
. Then why is the function not working on the uint16
images I am using?
I experimented by converting the image to double
data type. It didn't work. It worked only when I convert the image to uint8
.
Sorry I cannot share the images since they are confidential data, but did anybody here faced similar issues?
I could have continued with the conversion to uint8
, but that is posing some other problem, hence I want to know the solution to the fundamental issue.
I am using MATLAB 2017.