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