1 / 50
文档名称:

车牌识别源代码部份流程.doc

格式:doc   大小:316KB   页数:50页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

车牌识别源代码部份流程.doc

上传人:雾里行舟 2019/4/8 文件大小:316 KB

下载得到文件列表

车牌识别源代码部份流程.doc

相关文档

文档介绍

文档介绍:膁车牌识别源代码部份流程(供参考一)蒈2009年12月21日星期一09:11肃     实际上车牌识别代码量并不是很大,如果不停的手工输入;用不到一天的时间,即可大功告成。但是程序需要反复调试,才可以走向成熟。所以工作量是很大的。另外车牌识别还有其本身的特点——理论并不成熟。这就给车牌识别带来了更多的工作量。一般来说,开发车牌识别程序,先按照最原始最朴素的思想编码,然后是不断地优化。这将贯彻到整个车牌识别的开发过程中去。螃   薀      车牌识别最基本的流程是:将采集后的图像二值化,然后依次经过车牌定位、字符分割、去除干扰,最后是字符识别。有时还会加入本节前面部分所叙述的思想(比如回溯)。芈下面将分五章具体介绍每一个模块。膅一、二值化袁二值化是车牌识别的第一步。二值化前后的对比如下图:羀螅二值化的算法很简单,首先有一个亮度的阈值(threshold),对每一个像素的亮度和这个阈值做比较,根据比较结果得出车牌的前景和背景。用c/c++描述如下:膆voidCLPR::Binary(intthreshold)芄{葿inty;蒅for(y=0;y<m_height;y+++)羃{莂intx;衿for(x=0;x<m_width;x++)芆{肅unsignedcharred,green,blue;蒀GetPixel(red,green,blue,x,y);芈intbright;羆bright=red+green;肆if(m_search_blue_plate)螃{螇if(bright<=threshold)蚆SetBinary(x,y,BACKGROUND);袄else羁SetBinary(x,y,FOREGOUND);莁}蒇else//wearesearchingyellowplate羅{芃if(bright>=threshold)袀SetBinary(x,y,FOREGOUND);膇else螂SetBinary(x,y,BACKGROUND);莂}艿}羇}袄}薀二值化算法虽然简单,但是阈值却不容易寻找。本章后面的部分,将重点介绍各种求解阈值的算法。虿1、OTSU算法蚈OTSU算法的思想是:把输入图像首先转换成灰度图象,然后对图像进行直方图分析。如果直方图呈双峰分布。那么双峰之间的“谷”就是阈值。从统计学角度讲,阈值两边的距离最大。袅由于车牌识别的特殊性,图象象素点的亮度为该象素点的红色分量和绿色分量的和,并且忽略蓝色分量。这一点对蓝色车牌和黄色车牌都是适用的。袂OTSU算法仅对直方图呈双峰分布的图像有效。膈全部代码如下:蒈voidLPR::OTSU()蚂{羁//直方图统计薈{腿intindex;螄for(index=0;index<m_bright_level_count;index++)莃m_pixel_number[index]=0;芁}蚅{螅inty;蒂for(y=0;y<=m_height;y++)蚀{莅intx;薂for(x=0;x<=m_width;x++)薀{肀intbright;膆bright=Bright(x,y);蚄m_pixel_number[bright]++;羂}蕿}袆}蚅//真正求阈值肁doublesum;羈sum=0;蚆intn;蒃n=0;蒃intk;莈for(k=0;k<=(m_bright_level_count-1);k++)莇{薄sum+=k*m_pixel_number[k];薁n+=m_pixel_number[k];肁}肇doublec_sum;蚅c_sum=;蚀doublef_max;蒁f_max=-;袈intn1;蒃n1=0;肂for(k=0;k<(m_bright_level_count-1);k++)羀{薈n1+=m_pixel_number[k];蒄if(n1==0)膁continue;荿intn2;莈n2=n-n1;薆if(n2==0)薃break;蝿c_sum+=(double)k*m_pixel_number[k];聿doublem_1,m_2;莃m_1=c_sum/n1;蚁m_2=(sum-c_sum)/n2;膈doublesb;薅sb=(m_1-m_2)*(m_1-m_2)*(double)n1*(double)n2;莄if(f_max<sb)螀{蚇f_max=sb;芅m_prepare_threhold=(int)(k+);蒆}膂}莁}肆2、Matlab算法芃使用Matlab进行车牌识别,也是一个比较好的选择。在Matlab的环境中首先把输入的彩色图像使用命令rgb2gray转换成灰度图像。有了灰度图像就可以使用命令graythresh获得阈值了。最后使用命令im2bw对图像进行二值化。十分方便!代码如下:芀I=imread('