天天看点

OpenCV for Ios 学习笔记(4)-标记检测1

简单的标记经常是以白色块和黑色块构成的规则图形。因为我们预先知道这些因素,所以我们可以很容易检测标记。

如图

首先,我们需要找到封闭的轮廓,然后在矩形轮廓里检查我们的标记。

下面是标记监测管道的处理流程:

1.把输入的图像转化成灰度图像。

2.进行二进制阈值操作(Perform binary threshold operation)。

3.检测图像轮廓。

4.搜索可能的标记。

5.检测并解码标记。

6.模拟出标记的三维姿态(形状)。

首先,我们进行图像灰度化

​​cvCvtColor​​

其次是图像的二值化(Image binarization)

关于二值化,参考:​​OpenCV二值化方法​​

二值化操作将把我们的图像每个像素转换为黑色(零强度)或白色(烈度),首先我们需要找到轮廓,目前有许多种求阀值的方法,但是多有各自的优势和缺点。

其中既简单又快捷的方法是绝对阀值法-结果依赖于像素强度和某些阀值,即如果像素强度大于阀值,其结果将是白(255),否则将是黑(0)。

但是这个方法有个最大的缺点-它依赖于照明和软强度变化(soft intensity changes)。所以更加可取的方法是自适应阀值-最大的不同在于在以被检查的像素为圆心的半径内使用所有像素。使用平均强度来保证更加健壮的角点检测。

​​OpenCV学习笔记-自适应阈值化​​

轮廓检测

这个函数的输出是一个一个多边形的集合,每个多边形多代表一个可能的轮廓。在这个方法中,我们忽略了尺寸小于minContoursPointAllowed的多边形,因为我们认为它们要么不是有效的轮廓,要么实在太小,不值得去检测它们。