1

我正在使用 calcOpticalFlowPyrLK、findHomography、warpPerspective 来进行视频稳定。

结果是稳定的,这很好,但也有失真。在顶部/底部,您可以看到边缘,因为 warpPerspective 进行了转换,有时中间被压碎了。

我知道这是它所做的一部分,但我想知道我能做些什么来消除这些丑陋的扭曲?

在最坏的情况下,我可以告诉它只转换类似于相位相关的 2D 吗?

更新:链接到示例图像:http: //i.imgur.com/OuuGU.png

更新2,代码:

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 回答