SiftDescriptorExtractorジョブの最後の部分について質問があります。
私は次のことをしています:
SiftDescriptorExtractor extractor;
Mat descriptors_object;
extractor.compute( img_object, keypoints_object, descriptors_object );
ここで、descriptors_objectMatオブジェクトの要素を確認します。
std::cout<< descriptors_object.row(1) << std::endl;
出力は次のようになります。
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 32, 15, 0, 0, 0, 0, 0, 0, 73, 33, 11, 0, 0, 0, 0, 0, 0, 5, 114, 1, 0, 0, 0, 0, 51, 154, 20, 0, 0, 0, 0, 0, 154, 154, 1, 2, 1, 0, 0, 0, 154, 148, 18, 1, 0, 0, 0, 0, 0, 2, 154, 61, 0, 0, 0, 0, 5, 60, 154, 30, 0, 0, 0, 0, 34, 70, 6, 15, 3, 2, 1, 0, 14, 16, 2, 0, 0, 0, 0, 0, 0, 0, 154, 84, 0, 0, 0, 0, 0, 0, 154, 64, 0, 0, 0, 0, 0, 0, 6, 6, 1, 0, 1, 0, 0, 0]
しかし、ロウの論文では、次のように述べられています。
したがって、単位特徴ベクトルの値をそれぞれ0.2以下にしきい値処理し、次に単位長に再正規化することにより、大きな勾配の大きさの影響を減らします。これは、大きな勾配の大きさを一致させることはもはや重要ではなく、方向の分布がより重要であることを意味します。0.2の値は、同じ3Dオブジェクトの異なる照明を含む画像を使用して実験的に決定されました。
したがって、特徴ベクトルからの数値は0.2値以下である必要があります。
問題は、これらの値がMatオブジェクトでどのように変換されているかということです。