《数字识别系统 精.ppt》由会员分享,可在线阅读,更多相关《数字识别系统 精.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数字数字识别系系统 第1页,本讲稿共26页课题概述课题概述u课题简介:课题简介:基于基于VC+编写一个程序,用编写一个程序,用U描述子实现对数字图片的描述子实现对数字图片的识别识别u系统程序结构:系统程序结构:n编写程序框架n读入图片n图像灰度化、二值化n边缘提取nU描述子应用n建立数字模板n数字识别第2页,本讲稿共26页图像的灰度化、二值化图像的灰度化、二值化 u灰度化处理:灰度化处理:颜色可分为黑白色和彩色。黑白色指颜色中不包含任何的色彩颜色可分为黑白色和彩色。黑白色指颜色中不包含任何的色彩成分,仅由黑色和白色组成。在成分,仅由黑色和白色组成。在RGB颜色模型中,如果颜色模型中,如果R=G
2、=B,则颜色(,则颜色(R,G,B)表示一种黑白颜色;其中)表示一种黑白颜色;其中R=G=B的值叫做灰度值,所以黑白色又叫做灰度颜色。彩色和灰的值叫做灰度值,所以黑白色又叫做灰度颜色。彩色和灰度之间可以互相转化,由彩色转化为灰度的过程叫做灰度化处理。度之间可以互相转化,由彩色转化为灰度的过程叫做灰度化处理。u灰度化方法灰度化方法 灰度化一般有四种方法:分量法、最大值法、平均值法、加权平均法。灰度化一般有四种方法:分量法、最大值法、平均值法、加权平均法。本次采用本次采用加权平均法加权平均法。第3页,本讲稿共26页图像的灰度化、二值化图像的灰度化、二值化 u加权平均法:加权平均法:根据重要性及其它
3、指标,将三个分量以不同的权值进行加权平均。由根据重要性及其它指标,将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均能得到较合理的灰度图像三分量进行加权平均能得到较合理的灰度图像 Gray=0.30R+0.59G+0.11B添加代码添加代码添加代码添加代码unsigned char R=*(unsigned char*)lpImage+lLineBytes*i+j);unsigned char R=*(unsigned char*)lpImage+lLineBytes*i+j
4、);unsigned char G=*(unsigned char*)lpImage+lLineBytes*i+j);unsigned char G=*(unsigned char*)lpImage+lLineBytes*i+j);unsigned char B=*(unsigned char*)lpImage+lLineBytes*i+j);unsigned char B=*(unsigned char*)lpImage+lLineBytes*i+j);unsigned char Y=(9798*R+19235*G+3735*B)/32768;unsigned char Y=(9798*R+
5、19235*G+3735*B)/32768;第4页,本讲稿共26页图像的灰度化、二值化图像的灰度化、二值化 u二值化处理:二值化处理:图像二值化处理就是在图像灰度化的前提下,设定阀值图像二值化处理就是在图像灰度化的前提下,设定阀值T,当,当YT时,设定时,设定Y=255,当,当0YT时,设定时,设定Y=0。u编程代码编程代码 if(Y=30)if(Y=30)Y=255;Y=255;else elseY=0;Y=0;第5页,本讲稿共26页图像的灰度化、二值化效果图像的灰度化、二值化效果 处理前 处理后第6页,本讲稿共26页边缘提取边缘提取u边缘提取的方法边缘提取的方法现有的图像边缘提取方法可以分
6、为三大类:一类是现有的图像边缘提取方法可以分为三大类:一类是基于某种基于某种固定的局部运算方法固定的局部运算方法,如:微分法,拟合法等,它们属于经,如:微分法,拟合法等,它们属于经典的边缘提取方法;第二类则是典的边缘提取方法;第二类则是以能量最小化为准则的全局以能量最小化为准则的全局提取方法提取方法,其特征是运用严格的数学方法对此问题进行分析,其特征是运用严格的数学方法对此问题进行分析,给出一维值代价函数作为最优提取依据,从全局最优的观点给出一维值代价函数作为最优提取依据,从全局最优的观点提取边缘,如松驰法,神经网络分析法等;第三类提取边缘,如松驰法,神经网络分析法等;第三类是以小波是以小波变
7、换、数学形态学、分形理论等变换、数学形态学、分形理论等近年来发展起来的高新技术近年来发展起来的高新技术为代表的为代表的图像边缘提取方法图像边缘提取方法。u本系统应用的方法本系统应用的方法最原始的,单点单向搜索法。即最开始找到第一个点,再往最原始的,单点单向搜索法。即最开始找到第一个点,再往一个方向搜索下一个边缘点,最后形成封闭的像素点集一个方向搜索下一个边缘点,最后形成封闭的像素点集第7页,本讲稿共26页边缘点搜索(边缘点搜索(2)u确定第一个边缘点确定第一个边缘点找到了第一个边缘点找到了第一个边缘点编程代码编程代码LPBYTE lpImage=pDib-m_lpImage;LPBYTE lp
8、Image=pDib-m_lpImage;for(y=0;ynHeight&flag=1;y+)for(y=0;ynHeight&flag=1;y+)for(x=0;xnWidth;x+)for(x=0;xnWidth;x+)if(*(lpImage+y*nWidth+x)=0)if(*(lpImage+y*nWidth+x)=0)flag=0;break;flag=0;break;y-;y-;记录记录x x、y y的坐标的坐标第8页,本讲稿共26页边缘点搜索(边缘点搜索(3)u定义九宫格序号定义九宫格序号编程代码编程代码int x18=-1,0,1,1,1,0,-1,-1;int x18=-
9、1,0,1,1,1,0,-1,-1;int y18=-1,-1,-1,0,1,1,1,0;int y18=-1,-1,-1,0,1,1,1,0;第9页,本讲稿共26页边缘点搜索(边缘点搜索(4)u判断编号判断编号1像素点是否为边缘点像素点是否为边缘点P12345678黑黑黑黑黑黑黑黑全为黑色,则表示像素点1 1不是边缘点不是边缘点if(*(lpImage+(*y+y10)*nWidth+*x+x10)=0&*(lpImage+(*y+y11)*nWidth+*x+x11)=0&*(lpImage+(*y+y12)*nWidth+*x+x12)=0&*(lpImage+(*y+y13)*nWid
10、th+*x+x13)=0&*(lpImage+(*y+y14)*nWidth+*x+x14)=0&*(lpImage+(*y+y15)*nWidth+*x+x15)=0&*(lpImage+(*y+y16)*nWidth+*x+x16)=0&*(lpImage+(*y+y17)*nWidth+*x+x17)=0)/*相相应代代码*/第10页,本讲稿共26页边缘点搜索(边缘点搜索(5)u继续搜索像素点二继续搜索像素点二P12345678黑黑黑黑黑黑白白若不全为黑色,则表示像素点2 2是边缘点P P记录新边缘点的左边x、y y,同时将指针移至新边缘点P第11页,本讲稿共26页五种特殊非边缘点剔除五
11、种特殊非边缘点剔除u特殊情况特殊情况1前一点前一点u原因:原因:剔除前一点的目的是为了让边缘点搜索沿着一个方向进行,剔除前一点的目的是为了让边缘点搜索沿着一个方向进行,也避免了边缘点搜索出现往返循环。也避免了边缘点搜索出现往返循环。u解决方法:解决方法:先定义前一点:先定义前一点:int a;/a、b代表前一点坐标代表前一点坐标int b;再用下列代码去剔除该点再用下列代码去剔除该点if(x=a&y=b)/*相应代码相应代码,若相等,剔除该点若相等,剔除该点*/第12页,本讲稿共26页五种特殊非边缘点剔除五种特殊非边缘点剔除u特殊情况特殊情况2前前一点前前一点u原因:原因:剔除前一点的目的是为
12、了让边缘点搜索剔除前一点的目的是为了让边缘点搜索沿着一个方向进行,也避免了边缘点搜沿着一个方向进行,也避免了边缘点搜索出现往返循环。索出现往返循环。u解决方法:解决方法:先定义前一点:先定义前一点:int a;/a、b代表前一点坐标代表前一点坐标int b;再用下列代码去剔除该点再用下列代码去剔除该点if(x=a&y=b)/*相应代码相应代码,若相等,剔除该点若相等,剔除该点*/123第13页,本讲稿共26页五种特殊非边缘点剔除五种特殊非边缘点剔除u特殊情况特殊情况3黑黑黑白白白白黑黑黑黑黑黑黑白黑黑白白白白白白白12此时边缘点此时边缘点3 3既不能回既不能回到前边缘点到前边缘点2 2又不能返
13、回又不能返回前前边缘点前前边缘点1 1,边缘点,边缘点3 3将将成为死点成为死点 。3死点黑边缘点1坐标(a,b)边缘点2坐标(x,y)第14页,本讲稿共26页五种特殊非边缘点剔除五种特殊非边缘点剔除u解决方法:解决方法:当边缘点当边缘点1和边缘点和边缘点2如图所示方向的对角时即如图所示方向的对角时即且且i=1(为为定定义义像像素素周周边边编编号号减减1)时时,只只要要当当搜搜索索指指针针指指向向该该点的时候,则越过此点。点的时候,则越过此点。u编程代码:编程代码:if(*x-x1i-*a=-1&*y-y1i-*b=1&i=1)/*相应代码,若等式成立,剔除该点*/(详细代码参见工程文件。)(
14、详细代码参见工程文件。)第15页,本讲稿共26页五种特殊非边缘点剔除五种特殊非边缘点剔除u特殊情况特殊情况4黑黑黑白白白白黑黑黑黑黑黑黑黑白白白白白白白白白白1234死点此时搜索将在边缘点此时搜索将在边缘点1 1、2 2、3 3、4 4之间循环之间循环第16页,本讲稿共26页五种特殊非边缘点剔除五种特殊非边缘点剔除u解决方法:解决方法:出现这种情况要解决的方法就是要记录点出现这种情况要解决的方法就是要记录点4,从而在边缘搜索的时候剔除该点。,从而在边缘搜索的时候剔除该点。u编程代码:编程代码:if(*x-x1i-*a=-1&*y-y1i-*b=1&i=1)/*相应代码相应代码,若等式成立,剔除
15、该点若等式成立,剔除该点*/else if(*x-x1i-*a=-1&*y-y1i-*b=1&i=1)*e=*x;*f=*y;/记录特殊点记录特殊点/*相应代码相应代码*/而剔除该种情况的编程代码如下:而剔除该种情况的编程代码如下:if(*x=*e&*y=*f&i=4)/*相应代码相应代码,若等式成立,剔除该点若等式成立,剔除该点*/详细代码参见工程文件。详细代码参见工程文件。第17页,本讲稿共26页五种特殊非边缘点剔除五种特殊非边缘点剔除u特殊情况特殊情况5单排像素点单排像素点黑黑白白白黑白黑黑黑黑白黑黑黑白黑黑白白白白白白白死点若两个点都为白色则判断该点不是边缘点第18页,本讲稿共26页五
16、种特殊非边缘点剔除五种特殊非边缘点剔除u编程代码:编程代码:if(*x-x1i-*a=-1&*y-y1i-*b=1&i=1)/*相应代码相应代码,若等式成立,剔除该点若等式成立,剔除该点*/else if(*x-x1i-*a=-1&*y-y1i-*b=1&i=1)*e=*x;*f=*y;/记录特殊点记录特殊点/*相应代码相应代码*/而剔除该种情况的编程代码如下:而剔除该种情况的编程代码如下:if(*x=*e&*y=*f&i=4)/*相应代码相应代码,若等式成立,剔除该点若等式成立,剔除该点*/详细代码参见工程文件。详细代码参见工程文件。第19页,本讲稿共26页U描述子描述子uU系统基函数系统基
17、函数 第20页,本讲稿共26页U描述子描述子uU描述子的定义:描述子的定义:经采样的某一多边形曲线可以表示为:经采样的某一多边形曲线可以表示为:i为虚数单位,为了叙述方便,我们以一次为虚数单位,为了叙述方便,我们以一次U系统为例来说系统为例来说明。为方便记法,明。为方便记法,表示一次表示一次U系统的第系统的第k个基,利用下式个基,利用下式来计算这来计算这N个点的个点的U变换系数变换系数 ,称为称为U描述子。描述子。第21页,本讲稿共26页U描述子描述子u对对U描述子进行归一化:描述子进行归一化:U U描述子具有具有平移、缩放、旋转不变性。描述子具有具有平移、缩放、旋转不变性。第22页,本讲稿共26页模板匹配模板匹配第23页,本讲稿共26页模板匹配模板匹配u将这些数据分别嵌入到代码中,就建立好了模板将这些数据分别嵌入到代码中,就建立好了模板第24页,本讲稿共26页测试测试u测试:测试:第25页,本讲稿共26页Think you第26页,本讲稿共26页
限制150内