图像中的矩形检测

tim*_*tim 9 image image-processing rectangles edge-detection hough-transform

我想编制一张长方形纸张的检测,这张纸在每一面都不一定要完全笔直,因为我可以"在空中"拍摄它,这意味着纸张的单面可能会得到扭曲了一下.

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

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

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

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

一个) b)

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

在此输入图像描述

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

在此输入图像描述 在此输入图像描述

在这里它完全失败了:

在此输入图像描述

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

有什么想法和提示吗?非常感谢提前

Abd*_*len 3

OpenCV框架可能会帮助您解决问题。此外,您还可以查看此文档以了解该Android平台。

检测图像中的简单形状

完整的源代码可以在Github上找到。

  • 请避免像[你的答案在另一座城堡:什么时候答案不是答案](http://meta.stackexchange.com/questions/225370)这样的答案 (2认同)