1

ORBアルゴリズムを使用して画像認識を実装するためにJavaCVを使用しようとしています。一部の論文[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 に関するドキュメントはありません。どのタイプをパラメータ記述子にするべきか、またバイナリ文字列を出力する方法がわかりません。助けていただければ幸いです、ありがとう。

4

1 に答える 1

2

descriptorsパラメータは 2D 行列であると想定されています(Matからorg.opencv.core.Mat):

  • 次元:NxDどこでN = number of keypoints(行) とD = descriptor dimension = 32(列),
  • type: CV_8UC1、つまり、各行列値は 1 バイト (別名 8 ビットの単一チャネル行列) です。

各記述子は、32 バイトを 256 ビットで構成されるバイト配列に連結することで表すことができます。このため、論文ではそれをバイナリ文字列と呼んでいます。

詳細については、を参照ORBDescriptorExtractorTest.javaしてください。

于 2012-10-02T17:01:07.067 に答える