我正在使用SURF功能进行图像配准。我有uint16
类型的图片。
pts1 = detectSURFFeatures(image)
当我在uint16
图像上使用以上函数时,该函数返回了0个SURF点。解决方法是,我曾经将图像转换为uint8
,此后该函数返回了大量检测到的SURF点。因此,该功能适用于uint8
图像,但不适用于uint16
。
请注意,该函数没有显示任何错误。它执行成功,但是返回的SURFPoints object
具有0个SURFPoints。
为什么会这样?上述功能的documentation表示图像可以是single, double, uint8, uint16, int16 and logical
。那么,为什么该功能在我正在使用的uint16
图像上不起作用?
我通过将图像转换为double
数据类型进行了实验。没用仅当我将图像转换为uint8
时,它才起作用。
对不起,由于它们是机密数据,我无法共享这些图像,但是这里有人遇到过类似的问题吗?
我本可以继续转换为uint8
,但这带来了其他问题,因此我想知道基本问题的解决方案。
我正在使用MATLAB 2017。