1

ビデオの安定化を行うために、calcOpticalFlowPyrLK、findHomography、warpPerspective を使用しています。

結果は安定しています。これは素晴らしいことですが、歪みもあります。上部/下部には、warpPerspective が変換を行ったときにエッジが表示されます。中央がつぶれている場合もあります。

これが機能の一部であることは理解していますが、これらの醜い歪みをできるだけなくすにはどうすればよいでしょうか?

最悪の場合、位相相関と同様に 2D でのみ変換するように指示できますか?

更新: サンプル画像へのリンク: http://i.imgur.com/OuuGU.png

Update2、コード:

calcOpticalFlowPyrLK(baseGray, gray, points[0], points[1], status, err, winSize, 3, termcrit, 0, 0.001);
lastHomography = findHomography(points[0], points[1], CV_RANSAC, 3); 
warpPerspective(image, newImage, lastHomography, image.size(), WARP_INVERSE_MAP, BORDER_TRANSPARENT);
4

1 に答える 1

3

提供された画像のアーティファクトは、最近隣内挿法の結果であるように見えます。

ドキュメントによるデフォルトの補間方法は、線形補間である必要があります。しかしWARP_INVERSE_MAP、内挿法を明示的に指定せずにフラグを使用することにより、opencvは代わりに最近傍法を使用するようです。

したがって、問題の解決策は、補間方法も明示的に指定することです。

warpPerspective(image, newImage, lastHomography, image.size(), INTER_LINEAR | WARP_INVERSE_MAP, BORDER_TRANSPARENT);
于 2012-05-25T11:56:40.607 に答える