5

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オブジェクトでどのように変換されているかということです。

4

1 に答える 1

10

したがって、特徴ベクトルからの数値は0.2値以下である必要があります。

いいえ。この論文によると、SIFT記述子は次のとおりです。

  1. 正規化(L2ノルムを使用)
  2. しきい値として使用0.2して切り捨てられます(つまり、正規化された値をループし、必要に応じて切り捨てられます)
  3. 再び正規化

したがって、理論[0, 1]的には、実際には観測された有効射程は小さいですが、SIFT記述子コンポーネントはの間にあります(以下を参照)。

問題は、これらの値がMatオブジェクトでどのように変換されているかということです。

それらは浮動小数点値からunsigned char-sに変換されます。

OpenCVmodules/nonfree/src/sift.cpp calcSIFTDescriptorメソッドの関連セクションは次のとおりです。

float nrm2 = 0;
len = d*d*n;
for( k = 0; k < len; k++ )
    nrm2 += dst[k]*dst[k];
float thr = std::sqrt(nrm2)*SIFT_DESCR_MAG_THR;
for( i = 0, nrm2 = 0; i < k; i++ )
{
    float val = std::min(dst[i], thr);
    dst[i] = val;
    nrm2 += val*val;
}
nrm2 = SIFT_INT_DESCR_FCTR/std::max(std::sqrt(nrm2), FLT_EPSILON);
for( k = 0; k < len; k++ )
{
    dst[k] = saturate_cast<uchar>(dst[k]*nrm2);
}

と:

static const float SIFT_INT_DESCR_FCTR = 512.f;

これは、従来のSIFT実装では、正規化された浮動小数点値がunsigned char512の乗算係数を介して整数に量子化されるためです。これは、SIFTコンポーネントがの間で変化することを考慮するのと同等であり、したがって、全範囲[0, 1/2]をエンコードしようとして精度が低下することを回避します。[0, 1]

于 2013-02-16T22:58:52.833 に答える