OpenCV矩形检测

需求:提取图像中的矩形,图像存在污染现象,即矩形区域不是完全规则的矩形。

OpenCV矩形检测_轮廓检测

思路一:轮廓法

OpenCV里提取目标轮廓的函数是findContours,它的输入图像是一幅二值图像,输出的是每一个连通区域的轮廓点的集合:vector<vector<Point>>。外层vector的size代表了图像中轮廓的个数,里面vector的size代表了轮廓上点的个数。

该方法的问题,得到的轮廓并不规则,(1)如何变成规则的长方形?直接取包围盒?(2)斑点状的边缘区域太多?通过面积虑除?

OpenCV矩形检测_OpenCV_02


OpenCV矩形检测_直方图_03

思路二:形态学分割

OpenCV矩形检测_轮廓检测_04

问题是分割出来了三个区域,(1)由于上面噪声的存在,需要想办法剔除散斑状的区域,这个不好处理!通过包围盒的长度?(2)可是是否可以保证检索数目的正确性呢?

思路三:区域生长

 OpenCV矩形检测_OpenCV_05

思路四:积分图像Integral Image


思路五,边缘直方图法,采用sobel算子提取边缘线,然后水平,垂直分别做直方图

OpenCV矩形检测_OpenCV_06






作者:太一吾鱼水