2023年11月28日发(作者:14年标致3008怎么样)
数字图像处理实习报告--OCR-车牌号码识别
数字图像处理实习报告
实习项?名称:OCR-车牌号码识别
所属课程名称:数字图像处理
班级:
学号:
姓名:
指导教师:
?录
?、实习?的 (3)
?、实习原理 (3)
三、实习步骤 (3)
3.1完成车牌定位的整个过程 (4)
3.2?平差分提取图象边缘 (4)
3.3 完成图象车牌区域的初步定位。 (4)
3.4利?先验知识标识车牌区域,进?车牌区域的选择 (4)
3.5?平查找后,纵向查找。完成图象车牌区域的初步定位。 (5)
3.6利?先验知识标识车牌区域,进?车牌区域的选择,(横纵向) (5)
3.7计算伪车牌区的跳变平均数 (5)
3.8找出所有伪车牌区域中具有最?跳变平均数的区域号,精确定位车牌 (5)
3.91找出车牌的左右边缘 (5)
3.92?值化图象 (6)
3.93车牌字符分割 (6)
3.94?平?向投影,分割出字符 (6)
四、实验程序 (6)
五、实习结果 (24)
六、实习?得 (28)
?、实习?的
(1)掌握数字图像处理的相关知识及算法。
(2)学习在VC 6.0环境下编写车牌定位与识别程序。
(3)了解车牌定位?法,如边缘检测法,基于?量量化的车牌定位法等。
基于VC++图像处理的汽车牌照识别系统主要包括车牌定位,字符车牌分割和车牌字符识别三个关键环节其识别流程图如图1
所?。
图1 识别流程图
其中,
(1)原始图像:原始的汽车图像;
(2)图像预处理:对采集到的图像进?滤波等处理以克服图像?扰;
(3)车牌定位:计算边缘图像的投影?积,寻找峰?点,?致确定车牌位置,再计算此
连通域内的宽??,剔除不在域值范围内的连通域,最后得到的便为车牌区域;
(4)字符分割:利?投影检测的字符定位分割?法得到车牌的字符;
(5)字符数据库:为第6步的字符识别建?字符模板数据库;
(6)字符识别:通过基于模板匹配的??神经?络算法,通过特征对?或训练识别出相
关的字符,得到最后的汽车牌照,包括英?字母和数字。
三、实习步骤
请打开?个BMP格式的位图?件:标?图象的坐标标?算?的坐标标识区域的地点
3.1完成车牌定位的整个过程
程序流程:1.产?副本
2.?平差分提取边缘,寻找横向的车牌带状区域
3.垂直差分提取边缘,寻找纵向的车牌带状区域
4.利?先验知识标识车牌区域,进?车牌带状区域的选择,(横纵向)
5 .构造出车牌矩形域;
6.再次利?利?跳变数选择车牌矩形区域,进?车牌区域的最终选择;
7.精确定位车牌,即削弱车牌横向宽度;
8.更新图象;
3.2?平差分提取图象边缘
程序流程:1.逐?扫描,sub=|f(x,y)-f(x,y+1)|;
2.若差值?于20,则g(x,y)=0;
若差值?于30,则增强原图象,令g(x,y)=g(x,y)+30;
3.另最后?列全部为0,即??;
3.3 完成图象车牌区域的初步定位。
程序流程: 1.利?间?扫描的?式找出跳变数最?的前10?;
2.对Top 10 ?进?区域细粒度增长选择;
其相似度的选取为:0.7~1.3 倍的该?跳变总数;
3.?值化,threshold=255;
4.任意选择?列,最好不要边缘列,可能有?扰(本程序选择为第?列),搜索出各个带状候选域,存?标志;
3.4利?先验知识标识车牌区域,进?车牌区域的选择
函数说明:特定应?条件,拍摄所得车牌的区域?度、宽度均有?定的范围,其??可以分析图象后可得
根据统计得到:车牌的顶部极少出现在?度?于100个像素的区域;
车牌?度也?般?于20个像素。
程序的最终结果为满?条件的经过扩展了的带状区域
程序流程:1.舍弃区域顶部?于100的待选域
2.选择区域?度?于20的待选域
3.区域扩展,上下各增?5个像素。若顶部?于5,则顶部坐标不变,?度加5;
若底部?于图象的底部,则底部坐标不变,?度加5;
3.5?平查找后,纵向查找。完成图象车牌区域的初步定位。
程序流程:1.利?间?扫描的?式找出跳变数最?的前30?;
2.对Top 30 ?进?区域增长;
其相似度的选取为:0.8~1.2 倍的该?跳变总数;
3.?值化,threshold=255;
4.任意选择?列,(本程序选择为第??),搜索出各个带状候选域,存?标志;
3.6利?先验知识标识车牌区域,进?车牌区域的选择,(横
纵向)
函数说明:国家标准:车牌的宽??近似为3:1;
程序流程:1.初始化存储数组
2.选择区域?宽??于3的待选域
函数功能:再次利?利?跳变数选择车牌区域,进?车牌区域的最终选择,(横纵向)程序流程:1.初始化存储数组
2.计算每个伪车牌区域的跳变数
3.选择具有最?跳变数的区域为车牌区
3.7计算伪车牌区的跳变平均数
程序流程:1.初始化;
2.?平差分,边缘提取;
3.选择车牌的中间1/3?来计算每个伪车牌区域的跳变平均数;
3.8找出所有伪车牌区域中具有最?跳变平均数的区域号,
精确定位车牌
程序说明:选择排序,由于?平分割出的伪车牌区域已经?较准确,故仅作垂直?向的进?步定位(缩?宽度)
3.91找出车牌的左右边缘
程序流程:1.?平差分,?值化;
2.垂直?向投影,统计各列的投影值;
3.去除噪声点;
4.找出左右边缘
5.计算车牌宽度
6.车牌精确定位赋值
3.92?值化图象
程序说明:threshold=average+delt;
程序流程:1.计算图象均值;
2.计算图象?差;
3.?值化
3.93车牌字符分割
程序流程:1.区域扩展;
2.投影分割;
3.字符区域的获取;
3.94?平?向投影,分割出字符
程序流程; 1.统计各列?象素个数;
2.平滑投影曲线;
3.寻找波?(trough)进?分割;
四、实验程序
3.1车牌识别
///
/// 函数功能:?平?向投影,分割出字符
/// 程序流程:1.统计各列?象素个数;
/// 2.平滑投影曲线;
/// 3.寻找波?(trough)进?分割;
}
}
unsigned int counter;
if(f[kk]<0)
n[6] = f[kk31];
f[kk22] = -1;
shori = 1;
{
image[x*width+0] = (BYTE)0;
for(i=0; i<13; i++)
feature[i] = 0;
//图象是20×36??的,分成9块
//第?块
for(i=0; i<7; i++)
{
if(image[i*width+j]==1)
feature[3]+=1.0;
{
if(image[i*width+j]==1)
}
// 识别函数,第?个参数为LoadCharLib读出的数组,
//第?个参数为LoadCharLib的返回值(即样本个数),
//将上?获得的特征值传?第三个参数,返回为识别结果CString CDipView::Recognize(sample* sa, int num, double* feature)
{
int j;
double min=100000.0;
CString Result;
for(int i=0;i
{
// int num;
// CString result[10];
//BYTE*Img;
//int row=0;
//int col=0;
//int x=-1;
//int y=-1;
//delete []result;
git_1();
pchview->m_(0,-1);
pchview->m_eSel(\"\");
{
更多推荐
车牌识别
发布评论