8.4.1 图像的预处理

8.4.1 图像的预处理

图像的预处理主要包括图像分割、边缘检测和轮廓排除,是图像识别的先期准备。

1.图像分割

图像分割即把一个图像分为若干个特定的、具有独特性质的区域,然后在其中提取感兴趣的目标的技术和过程。这些区域互不相交,每个区域都满足其自身的独特性质。图像分割是过渡图像处理与图像分析的重要步骤。现有的图像分割方法有以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。1998年以来,图像分割的技术一直在不断地改进,也不断地有新技术融入完善。

阈值法是图像分割中比较常用的一种方法。它一般先将图像灰度化,然后用一个阈值将图像的灰度值分为几部分,属于一个部分的像素为一个区域。这种图像分割方法的最大优点在于计算量小。在重视运算效率的场合,阈值法因其计算量小的优点而有着广泛的应用。因为本章中的标志物和背景会产生很大的灰度差,所以这里选择阈值法作为图像分割的方法。

阈值法分全局阈值法以及局部阈值法两种方法,其中全局阈值法即为利用全局信息量(如整幅图像的灰度直方图)对整幅图像进行求解得出最优分割阈值的方法,得到的阈值可以是单一的阈值,也可以为多种阈值;局部阈值法会将整幅图像分为复数的小的子图像,然后针对每个小的子图像分别运用全局阈值法求出子图像各自的最优分割阈值。在这之中全局阈值法又可以分为两类,基于点的阈值法以及基于区域的阈值法。阈值分割法得到的结果很大程度上取决于对阈值的选择,选择不同的阈值将会产生不同的分割区域,对之后的边缘检测也会有影响,因此该方法的关键在于如何选择合适的阈值。

而本章的标志物因为是黑白的图案,因此很容易被区分成两个区域,所以这里以 127为阈值。

这里介绍一种下面会用到的自适应阈值分割方法——大津法,它于1979年由Otsu提出,是一种建立在一幅图像的灰度直方图上的,即图像灰度级分布特征上的方法。该方法的概述如下。

假设用一个二维矩阵将一幅灰度图像描述为FP×Q=[f(x,y)]P×Q,其中P×Q为图像的大小,f(x,y)为坐标(x,y)下的灰度值,且f(x,y)∈[0,1,…L-1 ],L为图像灰度总等级,在图像中灰度等级i出现的次数为ni,则灰度等级i出现的概率为

若以灰度等级t把全部像素分为两类:S1(背景类)包含所有i≤t的像素,S2(前景类)包含所有i>t的像素。这两类像素出现的总概率为

二者满足P1+P2=1。

这两类的类内中心分别为

由此可以给出这两类的类间方差为

显然,P1、P2、ω1、ω2、σ2都是阈值t的函数。

为得到最佳分割效果,必须确保最好的分类效果,才能选出最优的图像分割阈值,σ2即分割出两类的类间方差,可以看作阈值识别函数,即认为最优阈值t*应该使σ2最大,即

2.边缘检测和轮廓排除

对图像进行边缘检测,可以获得图像中物体的轮廓信息。然后可以用来提取物体的边缘。边缘检测是计算机视觉中的一个基本问题。而现有的算法存在的问题,主要是在有噪声的干扰的条件下,进一步提高边缘检测的精度,而且要求计算过程简单,假边缘出现概率要小。

计算机视觉中有很多经典边缘提取的方法,主要有Roberts算子、Sobel算子、Prewitt算子、Canny 算子等。而本章中使用的是 OpenCV 函数库中较为普通的边缘检测方法cvFindContours,从前一步提取出的二值化图像的边缘,输出一个多边形的集合,然后将尺寸过小的多边形去掉,对多边形进行过滤,提取出尺寸足够大的多边形。之后平滑化边缘,并将凸四边形以外的轮廓线和过长或过短的轮廓线进一步去除,以进一步获得可疑的图形,然后用cv::getPerspectiveTransform函数将筛选后的图形经过透视变换化为矩形,之后输出变换为矩形后的图形的灰度图,并进行阈值为可疑图像灰度均值的二值化,这里的阈值法为大津法。对每一个可疑的图形进行筛选,从而得到所需要的标志物图像并返回标志物四个角点的坐标。