openCV4Android平滑校正透视

Posted

技术标签:

【中文标题】openCV4Android平滑校正透视【英文标题】:openCV4Android smoothly correcting perspective 【发布时间】:2014-11-12 05:03:40 【问题描述】:

我可以通过Automatic perspective correction for quadrilateral objects中描述的方式校正图像中旋转卡片的透视。很好并且效果很好。但是校正的结果突然出现。我想顺利地做到这一点。我的意思是我想要将卡片顺利(不是突然)移动到我们面前,直到卡片全屏显示。抱歉描述不佳,但您可以在CamScanner 看到类似的过程,点击感兴趣区域的确认按钮后选择活动。

感谢您的关注。

【问题讨论】:

【参考方案1】:

根据您链接中的教程 [请参阅我的标记图像以获取标记],您有图像的 a、b、c、d 四个角,您的最终目标是变形仿射到目标坐标:a'、b ', c', d'。

但你想逐步做到这一点,像动画。让我们假设您要给出 5 步动画(更多步,更平滑的动画,更高的处理)。

1) 使用线性方程在 b 和 b' 之间再找到 4 个等距点。将其命名为 b1、b2、b3、b4。对所有角(即 a、b、c、d)执行此操作,并以相同的方式命名。

2) 现在首先在目标 a1、b1、c1、d1 上应用扭曲透视,并将输出显示为第一个动画步骤。

3) 对所有 4 个步骤重复上述步骤并显示您的图像。

4) 最后展示你在 a', b', c', d' 上的翘曲仿射结果。

在这里您可以提供一些简单而精美的选项,例如亮度、自动对比度等。

两点:

首先,您会看到 cam-scanner 中的动画也很慢。

第二,如果您想流畅快速地显示动画,请将图像调整为一半或四分之一应用变换,然后调整结果大小。这将非常快,并且由于中间步骤是临时的,您不需要显示详细的图像。除此之外,您还可以使用近似变换。

祝你好运,编码愉快!!

【讨论】:

OK!这似乎是一个合乎逻辑的方式。我必须测试它。我会说结果。 我认为您的想法是正确的。但是您必须知道warp-affine 保留了平面(它是2D 转换)。所以我必须使用warp-perspective。 扭曲透视很慢。所以如果我用它,动画会很慢。 是的,两点:首先,您看到 cam-scanner 中的动画也很慢。其次,如果您想流畅快速地显示动画,请将图像大小调整为一半或四分之一应用变换,然后调整结果大小。这将非常快,并且由于中间步骤是临时的,您不需要显示详细的图像。除此之外,您还可以使用近似变换。 谢谢!您的想法是正确的,我已经测试过了。我将您的 cmets 添加到您的答案中,因此可能对其他人有所帮助。

以上是关于openCV4Android平滑校正透视的主要内容,如果未能解决你的问题,请参考以下文章

如何在openGL中扭曲纹理? (透视校正?)

opencv——透视校正

透视校正插值(Perspective-Correct Interpolation)

透视校正插值

android中如何用opencv处理倾斜校正的问题,求源代码

OpenCV 中的透视变换(带曲率)