3

calcOpticalFlowPyrLKを使用して、300x400の画像内のポイントを検出しています。このデータをfindHomographyとwarpPerspectiveにフィードし、ビデオの安定化を行っています。iPhoneでは現在500msでこれを行っており、これを下げることができるかどうか疑問に思っていました。

TermCriteria termcrit(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03);
cv::Size winSize(31,31);
[..]
calcOpticalFlowPyrLK(baseGray, gray, points[0], points[1], status, err, winSize, 3, termcrit, 0, 0.001);

ビデオの安定化のために良い仕事をしている間、良いパラメータ(例えば勝利サイズ)は何でしょうか?

4

1 に答える 1

3

画像処理の時間のかかるアルゴリズムでは、通常、最初に画像の解像度を下げて(たとえば、2倍に)、同じ種類の結果が得られるかどうかを確認します。

オプティカルフローは、消費量の多い手法であることがよく知られています。

cvResizeはあなたの解決策かもしれません

多くの場合、アルゴリズムの結果はほぼ同じであり、場合によっては100ミリ秒まで低くなる可能性があります。

winsizeに関して、ドキュメントには次のように書かれています。

winSize –各ピラミッドレベルでの検索ウィンドウのサイズ。

これは検索ウィンドウなので、高速化するために縮小する必要があります。15ピクセルのウィンドウで試してください。

編集 :

ほとんどの場合、取得する入力画像ごとに異なる解像度のスニペットをいくつか作成しようとしています。このように、実行するアクションに応じて、解像度を賢く選択し、パフォーマンスを向上させることができます。

具体的な例:640*480の入力画像を取得します。この画像の320*240バージョンを作成します。何らかの理由で、消費していることがわかっているオプティカルフローを計算する必要があります。低解像度バージョンを使用して係数を計算します。事実、ヒストグラム均等化については、最大のデータを取得するための入力としてフル解像度の画像を選択します。

異なる解像度のデータを同時に計算することは避けてください。問題は発生しません。

于 2012-05-29T21:07:31.877 に答える