第八章实例教学8.1应用统计决策的肤色提取8.1.1图像基础知识HSI表色模型面向彩色处理的最常用的模型,符合人类的视觉感受。H(Hue)——色调(色相),表明物体是什么颜色。S(Saturation)——饱和度,表明该种颜色的浓淡。I(Intensity)——亮度,与图像的彩色信息无关。RGB模型与HSI模型可以相互转换。8.1.2样本获取原始图像H分量S分量I分量由于H分量较好的区分了肤色与背景,因此选H分量图像中的像素点作为样本。8.1.3样本学习H分量H分量的二值化图皮肤点数的先验概率:P(1)=是皮肤的像素点数/所有像素点数=7.99%非皮肤点数的先验概率:P(2)=不是皮肤的像素点数/所有像素点数=92.01%(1)计算先验概率:图像二值化,为1的是皮肤,为0的是背景。(2)计算类条件概率密度:计算H分量图像中皮肤区域的直方图,就是皮肤的类条件概率密度;计算H分量图像中非皮肤区域的直方图,就是非皮肤的类条件概率密度。非皮肤的类条件概率密度皮肤的类条件概率密度横坐标是像素点可能的灰度值(将灰度量化成了8等分),纵坐标是相应区域中灰度值为横坐标值的像素点数。P(x|1):0.98550.0143000000.0002P(x|2):0.07900.78200.07420.01920.01990.00740.00720.01088.1.4模式分类输入下图,用最小误判概率准则和最小损失准则判决判断每个像素点是否是皮肤。待分类的图像H分量a)最小误判概率准则判断每个像素点是否使皮肤。两类问题的Bayes最小误判概率准则为如果,则判,否则判,x为每个像素点的灰度值,若该点属于皮肤,置位1;若不是皮肤,置位0,得到下图。最小误判概率准则的识别结果12121221(|)()()(|)()pxPlxpxP1x2xb)最小损失准则11=0,12=10,21=1,22=0如果,则判,否则判。x为每个像素点的灰度值,若该点属于皮肤,置位1;若不是皮肤,置位0,得到下图。可以看出最小损失准则得到的皮肤更完整,漏检率下降,但是将更多非皮肤点误判为皮肤,虚警率增加。最小损失准则的识别结果1221221212211211(|)()()()(|)()()pxPlxpxP1x2x8.2车牌识别8.2.1车牌相关知识英文字母中的I和O一般避而不用,以免和数字中的1和0混淆。车牌大小为440*140mm。汉字字体为黑体,数字和字母字体为国家公安部门开发的特殊字体。8.2.2图像采集8.2.3车牌识别预处理(1)字符分割(2)字符细化1.特征选择与提取(1)特征空间向量的选择由于车牌中字母和数字都有特定的字体,且作为汽车的“身份证”,车牌制作过程严谨,相同字符形态区别不大,他们的差异性和共同点都很明显。基于上节描述的设计准则,综合考虑了提取特征的编程复杂度和特征对不同字符的区分度,本系统分别从字符的形态、结构、笔画特点出发,采用了4个类别共10个特征值作为判断的矢量依据(特征提取时均以细化后图像为基础)。字符的重心判断:①字符重心位于上方/下方,分别计算字符上下半区的像素数目,如果其差值在一个固定的小范围内(试验得出此差值在0-20像素内为最佳),则该特征值记为2,上方偏多记为1,下方偏多记为3;②字符重心位于左方/右方,分别计算字符左右半区的像素数目,如果其差值在一个固定的小范围内(试验得出此差值在0-20像素内为最佳),则该特征值记为2,左方偏多记为1,右方偏多记为3。特定位置的扫描线特征:③图像垂直1/3处扫描线穿越的线条数目;④图像垂直1/2处扫描线穿越的线条数目;⑤图像垂直2/3处扫描线穿越的线条数目;⑥图像水平1/3处扫描线穿越的线条数目;⑦图像水平2/3处扫描线穿越的线条数目;为了消除可能的细化算法不完善的影响,以上在计算穿越次数时均为0-1改变次数。笔画特征:⑧字符中“竖”的数目,计算图像在水平方向上的投影,投影点的像素数目累加值超过1/3图像高度且无超过5像素的中断,记为“竖”的数目加1;⑨字符中“横”的数目,计算图像在垂直方向上的投影,投影点的像素数目累加值超过1/3图像宽度且无超过5像素的中断,记为“横”的数目加1;在实际情况中,由于车牌图像并不总是标准的,当出现倾斜、几何失真等情况时,字符中的横或竖不可能全部投影在一点上,而是在一个小范围内密集分布。经过多次尝试,结合车牌字符本身特点,本文将判定存在竖/横笔画的门限值设为图像高度/宽度的1/3左右。为了消除可能的图像几何失真带来的影响,计算笔画数目时均不重复计算20像素点以内的笔画,既若该点存在横/竖,则在该投影方向上向下/后移动20像素继续判断。结构特征:⑩字符中存在闭合回路的数目。利用递归实现区域生长算法,对所有独立连通区域进行标号处理,最后将连通区域个数减一(外围背景区域也作为一个连通区域被标号,需要在特征值中减去)记为该特征值。(2)模板数据的生成考虑到车牌字符的特殊性,无法使用Windows系统自带的普通字体来作为标准模板。我们对拍摄到的车牌图像进行如下处理,形成了标准的模版数据。为了杜绝可能的系统图像处理缺陷,使用PhotoShop等商用软件将其调整为二值化图像;为了减少系统缩放函数可能存在的不完善对画面失真的影响,将不同字符做成140*440的标准图像,供系统提取特征值;使用程序中的细化模块细化图像,并以特征提取模块计算标准图像的特征值,将得出的数据结果作为模板数据,以矩阵的形式保存在template.ini文件中。2.字符识别采用最小距离准则进行模板匹配的识别。判决的标准采用欧式距离最小准则,计算当前图形的特征向量与34个特征向量(除字母I和O以外的所有数字和字母,共34个)的欧式距离,取其中最小的为判决结果。于是待识别样品与模板k之间的欧式距离dk为:10122||iiikyxd33010122||minkiiiyxd其中距离最短者为:对每一个样品的判决过程为:遍历所有模板,计算其模板与样品间的欧式距离,取最小值作为最终判决结果。如果最短距离小于某个规定的阈值,则结果为这个最小值相对应的类别;否则判定为无法识别。识别结果如图所示在本系统中,使用一个识别模块来识别当前样品,其算法流程图如下图:初始化当前类序号kk=k+1计算样品与类的距离距离最小?显示判决结果类别匹配完毕?最短距离阈值?修改判决修改判决为拒识NYYN8.3纸币识别器1、数据采集2、特征提取3、训练学习4、分类识别8.3.1数据采集纸币面额:5元,10元,20元,50元,100元8.3.2特征提取与选择特征提取:长度、宽度、磁性、磁性的位置,光反射亮度、光透射亮度等8.3.3训练学习训练集:是一个已知样本集,在监督学习方法中,用它来开发出模式分类器。图中给出了对一个样本进行特征提取、分类的学习过程8.3.4分类识别对测试集来进行分类识别,确定纸币的面额及真伪。为了更好地对模式识别系统性能进行评价,必须使用一组独立于训练集的测试集对系统进行测试。图中是对10元纸币分类识别的界面。8.4最近邻方法用于图像拼接8.4.1图像获取获取有重叠区域的两幅图像,如下图所示:(a)(b)8.4.2特征提取分别在两副图中用SIFT算法提取特征点,(a)图中的特征点数为5793,(b)图中的特征点数为3199。ScaleInvariantFeatureTransform,尺度不变量特征提取算法,简称SIFT算法,是一种提取控制点特征的经典算法(以下所说的“关键点”(Keypoint)是文献[1]中提到的说法,可以理解为控制点)。SIFT算法提取的SIFT特征向量具体具有如下特性:SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定;独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;多量性,即使少数的几个物体也可以产生大量SIFT特征向量;高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;可扩展性,可以很方便的与其他形式的特征向量进行联合。SIFT算法首先在尺度空间进行特征检测,并确定关键点的位置和关键点所处的尺度,然后使用关键点邻域梯度的主方向作为该点的方向特征,以实现算子对尺度和方向的无关性。主要计算步骤如下:尺度空间极值检测:搜索整个尺度和图像位置。通过使用高斯差分函数(DifferenceofGaussian)确定对尺度和方向具有不变性的兴趣点。以初步确定关键点位置和所在尺度。关键点定位:在每一个候选位置,详细地模型拟合以确定位置和尺度。根据稳定性选择关键点。通过拟合三维二次函数以精确确定关键点的位置和尺度,同时消除低对比度的关键点和不稳定的边缘响应点(因为高斯差分算子会产生较强的边缘响应),以增强匹配稳定性、提高抗噪声能力。方向分配:每一个关键点根据局部图像梯度方向分配一个或多个方向。其后所有操作都根据分配的方向、尺度、位置。利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性。关键点描述符:在每个关键点周围在选定的尺度下测量局部图像梯度。为了增强匹配的稳健性,对每个关键点使用4×4共16个种子点来描述,这样对于一个关键点就可以产生128个数据,最终形成128维的SIFT特征向量。其中第一步骤里高斯差分函数是这样定义的:高斯卷积核是实现尺度变换的唯一线性核,于是一副二维图像的尺度空间定义为:其中是尺度可变高斯函数,(x,y)是空间坐标,是尺度坐标。),(),(),,(yxIyxGyxL2)(22/21),,(22yxeyxG为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOGscale-space)。利用不同尺度的高斯差分核与图像卷积生成。以上就是高斯差分函数计算式。高斯差分函数(DifferenceofGaussian)计算比较简单,是尺度归一化的拉普拉斯-高斯算子的近似。图像经过高斯差分算子计算,可以像用Sobel算子计算时一样,提取局部极值点作为控制点。下面用下图形象地描述SIFT算法中第三步和第四步的过程。),,(),,(),()),,(),,((),,(yxLkyxLyxIyxGkyxGyxDSIFT算法形象表示图如图所示,在控制点(左图中心点)周围8×8邻域内,每个点的梯度大小和方向均为已知,中央点为当前控制点的位置,每个小方格代表控制点邻域所在尺度空间的一个像素,箭头方向代表该像素的梯度方向,箭头长度代表梯度模值(注:实际应用中,中心点也是像素点,因此可将左图中靠近中心的四个像素点选出一个作为中心点)。然后根据像素点和中心点的远近距离来进行高斯函数加权,左图圆圈表示高斯函数加权的范围。2222212xye3230,1N加权方法如下:对圆圈内的每个像素点对应的梯度,令其方向不变,使其梯度模值乘以加权系数。其中用来确定高斯函数加权的范围,是因为所以在上图中,可以近似,即。其中和是所考察像素点与中心点X方向和Y方向的坐标差值。加权完毕后,将8×8的邻域分块进行梯度直方图统计。梯度直方图统计方法如下:如左图所示粗线将邻域分成4块,每一块里都含有16个像素点。接下来给定梯度8个方向,如右图所示,将左图每一块里的各个像素点所对应的梯度,归类到8个给定的方向。再将归为一类的梯度模值求和,就得到如右图所示的8个方向长短不一的梯度直方图了。如此进行得到控制点周围4个梯度直方图,将这4个直方图化为向量,再将其首尾相连,就成为控制点的32位SIFT特征向量。以上就是SIFT算法的大致思路。这种邻域方向性信息联合的思想增强了算法抗噪声的能力,同时对于含有定位误差的特征匹配也提供了较好的容错性。8.4.3特征匹配对图(a)中的5793个点,依次用最近邻方法——K-NN算法,在图(b)中的3199个点中寻找与