首页 > 解决方案 > MATLAB - 在 uint16 图像中未检测到 SURF 特征

问题描述

我正在使用 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。

标签: matlabimage-processingfeature-extractionsurfimage-registration

解决方案


推荐阅读