我在 OpenCV 中使用 SURF 功能,其中输入图像被转换为灰色图像。
cvtColor(object, object, CV_RGB2GRAY);
当我浏览 OpenSURF 的文档时,我意识到它不是灰度的。
我的困惑是我们可以将 SURF 应用于任何图像格式(YUV、HSV、RGB)还是我们必须更改和修改程序才能实现这一点?
我在 OpenCV 中使用 SURF 功能,其中输入图像被转换为灰色图像。
cvtColor(object, object, CV_RGB2GRAY);
当我浏览 OpenSURF 的文档时,我意识到它不是灰度的。
我的困惑是我们可以将 SURF 应用于任何图像格式(YUV、HSV、RGB)还是我们必须更改和修改程序才能实现这一点?
大多数特征检测器在灰度上工作,因为它们分析图像块中的边缘模式。您可以在您提到的颜色格式中的任何单一颜色通道上运行 SURF,即您可以在 YUV 图像的 Y、U 或 V 上运行它,或者在 HSV 图像的 H、S 或 V 上运行它。不确定 OpenSURF 如何处理这个问题,但他们必须在内部使用灰度图像。
就像 OpenCV 一样,如果你给 OpenSURF 一个不是单通道的图像,它会调用cvtColor(src, dst, CV_BGR2GRAY)
. 如果你在 YUV、HSV、Lab 等中传递一个 3 通道图像,事情会变得非常糟糕,因为图像将应用不适当的颜色转换..