JavaCV:如何获取描述符的二进制字符串

时间:2012-10-02 13:00:15

标签: java image-processing opencv image-recognition javacv

我正在尝试使用JavaCV来使用ORB算法实现图像识别。根据一些论文[1][2],ORB关键点描述符是二进制字符串。那么,如何在获取图像的关键点后得到这个二进制字符串呢?

以下是我获取关键点的代码

KeyPoint keypoints = new KeyPoint();
ORB orb = new ORB(MAX_FEATURES, (float) 1.2, 8, 1, 0, 2, 5, 31);
orb.detect(originalImg, greyScaleImg, keypoints);

获取描述符的代码:

DescriptorExtractor descriptor = orb.getDescriptorExtractor();
descriptor.compute(greyScaleImg, keypoints, descriptors);

因为没有关于描述符函数的文档,所以没有javadocs。我不知道参数描述符应该是什么类型以及如何打印二进制字符串。能够感谢一些帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

descriptors参数应该是二维矩阵Mat(来自org.opencv.core.Mat):

  • 维度:NxD其中N = number of keypoints(行)和D = descriptor dimension = 32(列),
  • 类型:CV_8UC1,即每个矩阵值都是一个字节(a.k.a 8位单通道矩阵)。

每个描述符可以通过将32个字节连接成由256位组成的字节数组来表示,这就是为什么论文将其称为二进制字符串

有关详细信息,请参阅ORBDescriptorExtractorTest.java