【发布时间】:2014-04-30 06:24:14
【问题描述】:
我想对一张矩形纸的检测进行编程,它的每一面都不需要完全笔直,因为我可以在“空中”拍摄一张照片,这意味着纸的单面纸张可能会有点变形。
CamScanner 应用程序(iOs 和 android)在这方面做得非常好,我想知道如何实现这一点。首先我想到的是:
- 平滑/降噪
- 边缘检测(canny 等)或阈值处理(全局/自适应)
- 霍夫变换
- 检测线(仅允许垂直/水平)
- 计算 4 条找到线的截点
但这给不同类型的图像带来了很多问题。 而且我想知道是否有更好的方法可以直接检测图像中的矩形形状,如果是这样,camscanner 是否也可以这样实现它!?
以下是在 CamScanner 中拍摄的一些图像。 即使在 a) 侧面被扭曲(但角落仍然显示在叠加层中但并不真正适合白纸的角落)和 b) 背景非常接近实际纸张但这些都被很好地检测到它仍然被正确识别:
它甚至可以正确获取旋转的图片:
当我插入一些测试错误时,它会失败但至少检测到一些轮廓,但总是尝试将其检测为矩形:
在这里它完全失败了:
我想在最后三个例子中,如果它会进行霍夫变换,它至少可以检测到矩形四个边中的两个。
有什么想法和提示吗? 提前非常感谢
【问题讨论】:
标签: image image-processing rectangles edge-detection hough-transform