2012-05-21 100 views
1

我正在使用calcOpticalFlowPyrLK,findHomography,warp查看视频稳定。opencv 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); 
+0

你可以发布一些“扭曲”的帧?您可能只是看到了运动模糊,在稳定后变得更加明显。 –

+0

我在问题描述中添加了快照链接。 –

+0

你使用什么插值方法?图像中的伪像看起来像最近的邻居内插。 – sietschie

回答

3

在你提供的图像的假象看起来他们是近邻插值的结果。

根据文档的默认插值方法应该是线性插值。但是通过使用WARP_INVERSE_MAP标志而不明确指定插值方法,opencv似乎使用最近邻居方法。

因此,解决您的问题的方法还是明确指定插值方法。

warpPerspective(image, newImage, lastHomography, image.size(), INTER_LINEAR | WARP_INVERSE_MAP, BORDER_TRANSPARENT);