これは十分に文書化された問題であることは知っていますが、オンラインで満足のいく解決策を見つけることができませんでした。ここに行きます。
特徴点の動きを追跡するために cvCalcOpticalFlowPyrLK を使用しています。cvGoodFeaturesToTrack で特徴点を見つけ、cvFindCornerSubPix で調整します。最初のフレーム (参照フレーム) で特徴点を見つけ、LK を使用して参照フレームに対するこれらの点の動きを追跡します。見つかった現在のフレームの特徴点座標で点を更新します。私が観察したものは次のとおりです。
1) いいえ。cvGoodFeaturesToTrack によって検出された優れた特徴点はごくわずかです。私は 100 点を見つけようとしましたが、いつも 10 点未満になります。2) いいえ。5 ~ 6 フレーム後の特徴点の数は 50% 減少し、5 フレーム後にはさらに 50% 減少しました。これは被写体が動いていないときです。一部のポイントは正しく追跡されていますが、一部はかなり外れているという意味で、追跡は不完全です。
YouTube または iPhone アプリでデモ アプリケーションを見たことがあります。いいえのドロップオフ。フレームからフレームへの特徴点の数は、アプリケーションで表示されるものではありません。そのため、設定したパラメーターが間違っているのではないかと疑っています。
これは私が関数を呼び出す方法です:
cvGoodFeaturesToTrack( image, eigen_image, temp_image, corners_point, &corner_count, 0.01(品質レベル), 3(最小距離), 0, 10(ブロックサイズ), 0(ハリスを使用), 0.04(k));
cvFindCornerSubPix( image, cornersPoint, corner_count, cvSize(WINDOW_SIZE, WINDOW_SIZE), cvSize(-1, -1), cvTermCriteria(CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.3));
cvCalcOpticalFlowPyrLK(image, currentFrame, rpV->pyramid_images0, rpV->pyramid_images1, cornersPoint, cornersCurrent, corner_count, cvSize(WINDOW_SIZE, WINDOW_SIZE), 10(レベル), features_found, feature_errors, cvTermCriteria(CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.3), 0 );
もう 1 つのことは、グレースケール カメラ (赤外線カメラ) を使用していることです。私はそれがあまりにも重要ではありません。ここで重要な何かが欠けているのではないかと思っています。
どんな形の助けも大歓迎です。
ありがとう、ケルビン