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 double, uint8, int8, 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.