1

OpenCV SURF 实现为图像中找到的每个特征点返回一系列 64/128 32 位浮点值(描述符)。有没有办法标准化这个浮点值并将它们带到一个整数比例(例如,[0, 255])?这将节省重要的空间(每个值 1 或 2 个字节,而不是 4 个)。此外,转换应确保描述符对于其他用途(例如聚类)仍然有意义。

谢谢!

4

3 回答 3

0

除了 SURF,还有其他特征提取器。Brief 提取器每个描述符仅使用 32 个字节。它使用 32 个无符号字节 [0-255] 作为其元素。您可以像这样创建一个:

Ptr ptrExtractor = DescriptorExtractor::create("BRIEF");

请注意,OpenCV 中的许多图像处理例程需要或假设数据存储为浮点数。

于 2011-11-01T18:13:02.923 回答
0

您可以将浮动特征视为普通图像(Mat 或 cvmat),然后使用 cv::normalize()。另一种选择是使用 cv::norm() 查找描述符值的范围,然后使用 cv::convertTo() 转换为 CV_8U。查找这些函数的 OpenCV 文档。

于 2012-02-11T22:54:48.533 回答
0

cv::SurfFeatureDetector 返回的描述符已经标准化。您可以通过采用返回的 cv::Mat 的 L2 范数来验证这一点,或者参考论文。

于 2015-06-04T23:15:26.210 回答