【问题标题】:opencv warpPerspective distorted result when stabilizing稳定时opencv warpPerspective扭曲的结果
【发布时间】:2012-05-21 18:52:55
【问题描述】:

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

【问题讨论】:

  • 你能发布一些“扭曲”的框架吗?您可能只是看到在稳定后变得更加明显的运动模糊。
  • 我在问题描述中添加了快照链接。
  • 你用的是什么插值方法?图像中的伪影看起来像是最近邻插值。
  • 我已经用我正在使用的代码更新了问题。
  • @sietschie 我将插值更改为 INTER_AREA,效果很好。如果您将评论移至答案,我会接受。

标签: opencv


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2015-09-24
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    相关资源
    最近更新 更多