【问题标题】:How to detect the any 4 sides polygen in the image and adjust it to rectangle?如何检测图像中的任何 4 边多边形并将其调整为矩形?
【发布时间】:2012-08-11 11:20:41
【问题描述】:

一个电视屏幕识别项目,我需要从一个图像中剪辑电视屏幕。

电视屏幕实际上是矩形的。但很明显,电视屏幕在手机摄像头的图像中变形了。我的问题是:

  1. 如何检测图像中的任意 4 边多边形(不是矩形)。
  2. 在我知道图像上的多边形区域后,如何将区域检索到 Mat。
  3. 完成任务 2 后,如何将 4 边多边形的 Mat 转换为固定 W/H 无线电的矩形 Mat。

提供一些代码示例以供参考非常有帮助。

感谢您的回答!

【问题讨论】:

  • '垫子'? 'Mat' 是什么意思,是矩阵吗?
  • 你知道电视屏幕的长宽比吗?当您说它不是矩形时,您的意思是它是透视变形下的矩形还是根本不是矩形?检测电视边缘的方法会根据您对背景的假设而有所不同。如果不了解更多关于图像的信息,任何人都无法为您提供太多帮助。
  • 场景是我在家里的电视屏幕上拍照。众所周知,电视屏幕实际是矩形的。但由于透视失真,它在我的照片中是梯形的。那么问题来了,如何检测4边多边形并将其转换为原始矩形。
  • 您可能需要结合使用边缘检测和霍夫变换来确定构成矩形边界的线条。从那里,您需要计算单应性。
  • 我现在正面临这个问题,我的第一次尝试就是这样,使用 canny 和 hough 来获取线路,但我得到了很多不属于电视的线路。我以某种方式改编了 OpenCV 的正方形示例,但我仍然无法很好地检测到电视。 @tihuBird 你的问题解决了吗?

标签: iphone linux image-processing opencv computer-vision


【解决方案1】:

如果您想检测电视屏幕的边缘,您可以使用一些边框 检测(如 Canny),然后使用 Hough 变换获得线条。

如果然后提取与线的交点对应的点 您可以创建一个单应矩阵 H (3x3)。最后,使用这个 homography 你可以 将原始图像“变形”为参考框架(在我们的例子中是矩形 具有给定的纵横比)。单应性是平面的变换 飞机,所以这正是你在这里需要的。

如果您打算使用 OpenCV(这始终是一个不错的选择!), 以下是您可以使用的功能:

  • Canny() - 查找图像中的边缘

  • HoughLines() - 检测线

  • findHomography() - 此函数从一组对应关系中查找, 单应矩阵。在您的情况下,您将需要通过该方法 为 0。

  • warpPerspective() - 你要用来“变形”的函数 图像到参考框架。

显然,您可以找到 MATLAB 和其他类似的函数...

希望对你有帮助。

【讨论】:

  • 谢谢,Hammer Brad Larson 和 G.Fuhr。 G.Fuhr 给出了详细的步骤,非常有帮助。我会按照步骤解决问题。
猜你喜欢
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 2017-07-22
  • 2016-12-14
  • 1970-01-01
相关资源
最近更新 更多