背景
矩形检出算法即从一副图像中找出候选矩形,不同于hough找圆等算法在opencv中有现成接口,矩形检出算法需要自己手动实现。其常见用途是移动端拍摄文档进行矫正等,近期开发二维码识别时也用到了矩形检出的算法,在此一并做个总结。
常规算法
常规算法也是最直观、大家都能想到的算法(此处搬运别人公众号的内容:https://mp.weixin.qq.com/s/mkRjgQ8XY4L73ovVjF55EQ),其算法流程如下:
1.中值滤波去噪;
2.依次提取不同的颜色通道(BGR)检测矩形;
3.对每一通道使用canny检测边缘或者使用多个阈值二值化;
4.使用findContours函数查找轮廓;
5.使用approxPolyDP函数去除多边形轮廓一些小的波折;
6.找到同时满足面积较大和形状为凸的四边形;
7.判断轮廓中两两邻接直线夹角余弦是否小于0.3(意味着角度在90度附近),是则此四边形为找到的矩形。
此算法仅对边缘区分明显,仅需要找出最外层的矩形时候有效,在矩形区域发生重叠、存在包含关系时便不鲁棒了。
Apriltag中的算法
Apriltag是密西根大学开源的一个视觉基准库,长用于无人机、移动机器人的自主定位,详细原理请见其官网和3篇paper(https://april.eecs.