この記事に従って、C++ で SIFTRoot を実装しようとしています。
特に:
# apply the Hellinger kernel by first L1-normalizing and taking the
# square-root
descs /= (descs.sum(axis=1, keepdims=True) + eps)
descs = np.sqrt(descs)
私の質問は次のとおりです。
- OpenCV でこれを行う組み込みの C++ 関数はありますか?
- すべての記述子の値は正ですか? それ以外の場合、L1 ノルムは各要素の abs を使用する必要があります。
- 最初の行は、「各行ベクトルについて、そのすべての要素の合計を計算し、eps を追加して (0 で割らないようにするため)、最後に各ベクトル要素をこの合計値で割る」ことを意味します。