图像中的矩形检测
Posted
技术标签:
【中文标题】图像中的矩形检测【英文标题】:Rectangle detection in image 【发布时间】:2014-04-30 06:24:14 【问题描述】:我想对一张矩形纸的检测进行编程,它的每一面都不需要完全笔直,因为我可以在“空中”拍摄一张照片,这意味着纸的单面纸张可能会有点变形。
CamScanner 应用程序(ios 和 android)在这方面做得非常好,我想知道如何实现这一点。首先我想到的是:
平滑/降噪 边缘检测(canny 等)或阈值处理(全局/自适应) 霍夫变换 检测线(仅允许垂直/水平) 计算 4 条找到线的截点但这给不同类型的图像带来了很多问题。 而且我想知道是否有更好的方法可以直接检测图像中的矩形形状,如果是这样,camscanner 是否也可以这样实现它!?
以下是在 CamScanner 中拍摄的一些图像。 即使在 a) 侧面被扭曲(但角落仍然显示在叠加层中但并不真正适合白纸的角落)和 b) 背景非常接近实际纸张但这些都被很好地检测到它仍然被正确识别:
它甚至可以正确获取旋转的图片:
当我插入一些测试错误时,它会失败但至少检测到一些轮廓,但总是尝试将其检测为矩形:
在这里它完全失败了:
我想在最后三个例子中,如果它会进行霍夫变换,它至少可以检测到矩形四个边中的两个。
有什么想法和提示吗? 提前非常感谢
【问题讨论】:
【参考方案1】:OpenCV 框架可能会帮助您解决问题。另外,您可以查看this document 以获取Android
平台。
完整的源代码可在Github 获得。
【讨论】:
请避免使用类似Your answer is in another castle: When is an answer not an answer的答案 很好,不知道。我只是不确定这是否真的会检测到我上面图片中显示的“页面”,因为它们没有填充恒定的颜色......以上是关于图像中的矩形检测的主要内容,如果未能解决你的问题,请参考以下文章
将检测到的矩形从纵向 CIImage 转换为横向 CIImage
使用opencv将旋转和倾斜的图像插入另一个图像中检测到的矩形?