图像中的矩形检测

时间:2014-03-22 20:39:02

标签: image image-processing rectangles edge-detection hough-transform

我想编制一张长方形纸张的检测,这张纸的每一面都不一定要完全笔直,因为我可能会“在空中”拍摄它,这意味着它的单面纸可能会有点扭曲。

应用程序(iOs和android)CamScanner做得非常好,我想知道如何实现。首先我想到了:

  • 平滑/降噪
  • 边缘检测(canny等)或阈值处理(全局/自适应)
  • Hough Transformation
  • 检测线条(仅允许垂直/水平)
  • 计算4个找到的行的拦截点

但这给了我很多不同类型图像的问题。 而且我想知道在图像中直接检测矩形形状是否有更好的方法,如果是这样的话,camscanner是否也可以这样实现它??

以下是CamScanner中拍摄的一些图像。 即使在a)侧面扭曲(但是角落仍然显示在叠加层中,但并不真正适合白纸的角落),并且在b)背景非常接近实际纸张但这些都被很好地检测到了它仍然被正确识别:

a) b)

它甚至可以正确获取旋转的图片:

enter image description here

当我插入一些测试错误时,它会失败,但至少检测到一些轮廓,但总是尝试将其检测为矩形:

enter image description here enter image description here

这里完全失败了:

enter image description here

我想在最后三个例子中,如果它会进行hough变换,它可能检测到矩形四边中的至少两个。

任何想法和提示? 非常感谢提前

1 个答案:

答案 0 :(得分:3)

OpenCV框架可能会帮助您解决问题。此外,您可以this document查看Android平台。

Detecting simple shapes in an image

Github上提供了完整的源代码。