opencv warpPerspective稳定失真的结果

时间:2012-05-21 18:52:55

标签: opencv

我正在使用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);

1 个答案:

答案 0 :(得分:3)

您提供的图像中的工件看起来像是最近邻插值的结果。

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

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

warpPerspective(image, newImage, lastHomography, image.size(), INTER_LINEAR | WARP_INVERSE_MAP, BORDER_TRANSPARENT);
相关问题