作者:hacker发布时间:2022-07-13分类:黑客教程浏览:124评论:4
你的函数输入变量不能那样直接写“jpg”,需要读取一个jpg文件而已,我做了一下修改
function [d]=main()
[filename,pathname]=uigetfile('*.jpg','请选择*.jpg数据文件');
if pathname==0
error('错误,请选择有效jpg文件')
end
I=imread(filename);
%%%%%%%%%%
由于我没有edge函数m文件,结果只能是一个灰度直方图
clear;
rgb=imread('B74641.jpg');
gray=rgb2gray(rgb);
gray1=imadjust(gray,[0.2 0.7],[]);
bw=im2bw(gray1);
[m n]=size(bw);
ymin=0;
ymax=0;
for i=1:m
k=0;
for j=1:n-1
if bw(i,j)~=bw(i,j+1)
k=k+1;
end
end
if ymin==0
if k=14
ymin=i;
end
end
if ymin~=0
if k14
ymax=i;
end
end
if (ymax-ymin)=30
break;
else
ymax=0;
end
end
bw1=bw(ymin:ymax,:);
xmin=0;
xmax=0;
[m n]=size(bw1);
for i=1:n
k=0;
for j=1:m-1;
if bw1(j,i)~=bw1(j+1,i)
k=k+1;
end
end
if xmin==0
if k=2
xmin=i;
end
end
if xmin~=0
if k2
xmax=i;
end
end
if (xmax-xmin)=180
break;
else
xmax=0;
end
end
Chepai=bw(ymin:ymax+5,(xmin-8):(xmax+8));
subplot(2,1,1),imshow(rgb)
subplot(2,1,2),imshow(Chepai)
首先
1、定位部分 [temp MaxY]=max(white_y); %temp为向量white_y的元素中的最大值,MaxY为该值的索引(在向量中的位置),也就是说temp为车牌矩阵每一列求和的最大值,即车牌x方向最多像素的地方,(姑且叫他像素中线)那么
while ((Blue_y(PY1,1)=5)(PY11)) PY1=PY1-1; 就可以确实车牌上边缘,同理
while ((Blue_y(PY2,1)=5)(PY2y)) PY2=PY2+1;确定下边缘 。为什么是大于5呢,刚才已经知道是车牌x方向所有列的和,也就是宽,车牌单个字符,那么范围为0-128px,如果值越大,则上下边缘就像素中线就近了,那么车牌车牌横向就短了嘛
,同理。while ((Blue_y(1,PX1)3)(PX1x)) PX1=PX1+1;
为什么是3呢。,车牌单个字符的,值确定,那么车牌车牌纵向区域就窄了
2、分割:
首先对车牌图像自左向右逐列扫描,寻找连续有文字的区间块,将该区间块的有效宽度与某一固定阈值(本文设定的阈值为10,可更改)进行比较,若小于该设定阈值,则认为是左侧干扰,裁剪干扰区域;反之,分割出该模糊
字符块。
3)判断该字符区域是否为有效区域。首先建立矩阵,依据车牌先验知识,分析该字符区域的有效宽度及宽高比(1:2),即可判断是否为干扰区域,若为字符区域,进一步去除伪字符区域,则分割出第一个字符;反之,认为是左侧干扰区域进行裁剪。
解释:本程序对于定位部分比较理想的情况下 分割率为50%+,但对川字车牌没有鲁棒性,由于川字未连通,所以会被当作背景而切除,其他省份,暂时没有遇到过。当然如果定位后的车牌倾角大于20度这样,那么必须校正,否则会出错
3、分割:这部分就悲剧了,采用的是单纯的模板相减,并且程序没有标准模板
建议计算相关系数,用距离变换进行匹配把
车牌位置最简单的可以利用车牌固定的长宽比作为切入点进行定位,qt、opencv、和matlab都是工具,matlab和opencv都可以实现,里面都有大量函数可以供我们调用,编程也不算太困难。qt我不熟悉。
虽然我未必能帮助你解决这个问题,但是还是想说几句来帮助你。
(1)车牌照识别是属于图像处理里面的内容,MATLAB里面有图像处理工具箱可以帮助你,但是不能帮你彻底解决问题。
(2)能否无错识别肯定和图片的清晰度有关,没有任何一个软件或者代码可以保证完全识别出来,当然,在仅仅考虑图片清晰的前提下(即肉眼可以很轻松识别),还是可以保证比较高的识别率。
(3)这个问题涉及到图片的方位判断,边界提取,字符匹配 等算法,本质上不是一个代码问题,而是一个算法问题。也不局限于MATLAB来解决,GIS,C++,等软件都可以用来做。但是算法才是关键。
(4)给你一些参考文献,希望能对你有启发。
[1] 刘峡壁,贾云得. 一种字符图像线段提取及细化算法[J]. 中国图象图形学报. 2005(01): 48-53.
[2] 李文举,梁德群,崔连延,等. 一种新的面向字符分割的车牌图像预处理方法[J]. 计算机应用研究. 2004(07): 258-260.
[3] 曹建海,路长厚. 基于小波变换和DCT的字符图像特征抽取新方法[J]. 光电子•激光. 2004(04): 477-482.
[4] 付仲良,陈江平,黄书强,等. 货车图像车牌区快速定位及字符切割算法[J]. 计算机工程与设计. 2003(01): 77-79.
[5] 王建平,盛军,朱程辉. 基于小波分析的视频图像字符特征提取方法研究[J]. 微电子学与计算机. 2002(05): 51-53.
[6] 吴大勇,魏平,侯朝桢,等. 一种车牌图像中的字符快速分割与识别方法[J]. 计算机工程与应用. 2002(03): 232-233.
[7] 陈锻生,谢志鹏,刘政凯. 复杂背景下彩色图像车牌提取与字符分割技术[J]. 小型微型计算机系统. 2002(09): 1144-1148.
[8] 顾晖,程晨,梁惺彦. 利用模糊边界提取算法实现医学图像边界提取[J]. 现代计算机(专业版). 2008(01): 38-40.
[9] 罗诗途,王艳玲,罗飞路,等. 基于分形几何边界提取的图像跟踪方法[J]. 应用光学. 2006(01): 19-22.
[10] 王少霞,颜钢峰. 基于张弛法的图像边界提取算法[J]. 江南大学学报. 2005(05): 53-55.
[11] 王艳玲,张玘,罗诗途. 基于分形几何边界提取的图像跟踪方法[J]. 光电子技术与信息. 2005(06): 49-52.
[12] 付青青,冯桂. 噪声图像中边界提取方法的研究[J]. 电脑与信息技术. 2003(01): 22-25.
[13] 王晖,张基宏. 多尺度图像边界提取的小波算法与最优准则[J]. 深圳大学学报. 1997(Z1): 21-25.
标签:车牌定位算法matlab
已有4位网友发表了看法:
访客 评论于 2022-07-14 01:16:24 回复
ay,[0.2 0.7],[]);bw=im2bw(gray1);[m n]=size(bw);ymin=0;ymax=0;for i=1:m k=0; for j=1:n-1
访客 评论于 2022-07-14 00:39:21 回复
ear;rgb=imread('B74641.jpg');gray=rgb2gray(rgb);gray1=imadjust(gray,[0.2 0.7],[]);bw=im2bw(gray1);[m n]=size(bw);ymin=0;ymax=0;for i=1:m k=0;
访客 评论于 2022-07-13 19:48:39 回复
但是还是想说几句来帮助你。(1)车牌照识别是属于图像处理里面的内容,MATLAB里面有图像处理工具箱可以帮助你,但是不能帮你彻底解决问题。(2)能否无错识别肯定和图片的清晰度有关,没有任何
访客 评论于 2022-07-14 03:08:47 回复
征抽取新方法[J]. 光电子•激光. 2004(04): 477-482. [4] 付仲良,陈江平,黄书强,等. 货车图像车牌区快速定位及字符切割算法[J]. 计算机工程与设计. 2003(01): 77-79. [5] 王建平,盛