figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域');
figure(7),subplot(1,2,2),imshow(dw),title('定位剪切后的彩色车牌图像')
imwrite(dw,'dw.jpg');
[filename,filepath]=uigetfile('dw.jpg','输入一个定位裁剪后的车牌图像');
jpg=strcat(filepath,filename);
a=imread('dw.jpg');
b=rgb2gray(a);
imwrite(b,'车牌灰度图像.jpg');
figure(8);imshow(b),
g_max=double(max(max(b)));
g_min=double(min(min(b)));
T=round(g_max-(g_max-g_min)/3);
[m,n]=size(b);
d=(double(b)>=T);
imwrite(d,'车牌二值图像.jpg');
figure(9);imshow(d),title('车牌二值图像')
figure(10),subplot(3,2,3),imshow(d),title('均值滤波前')
h=fspecial('average',3);%创建3x3的均值滤波器
d=im2bw(round(filter2(h,d)));
imwrite(d,'均值滤波后.jpg');
figure(10),subplot(3,2,4),imshow(d),title('均值滤波后')
rotate=0;
e=imread('车牌二值图像.jpg');
bw=edge(e);
[m,n]=size(e);
theta=1:179;
[r,xp]=radon(bw,theta);
i=find(r>0);
[foo,ind]=sort(-r(i));
k=i(ind(1:size(i)));
[y,x]=ind2sub(size(r),k);
[mm,nn]=size(x);
if mm~=0 && nn~=0
j=1;
while mm~=1 && j<180 && nn~=0
i=find(r>j);
[foo,ind]=sort(-r(i));
k=i(ind(1:size(i)));
[y,x]=ind2sub(size(r),k);
[mm,nn]=size(x);
j=j+1;
end
if nn~=0
if x % Enpty matrix: 0-by-1 when x is an enpty array.
x=x;
else % 可能 x 为空值
x=90; % 其实就是不旋转
end
e=imrotate(e,abs(90-x)); % 旋转图像
rotate=1;
end
end
imwrite(e,'Radon 变换旋转后的二值图像.jpg');
figure(11),imshow(e),title('Radon 变换旋转后的二值图像')
pause;
% 某些图像进行操作
% 膨胀或腐蚀
% se=strel('square',3);
se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵
[m,n]=size(d);
if bwarea(d)/m/n>=0.365
d=imerode(d,se);
elseif bwarea(d)/m/n<=0.235
d=imdilate(d,se);
end
imwrite(d,'膨胀或腐蚀处理后.jpg');
figure(12),imshow(d),title('膨胀或腐蚀处理后')
d=qiege(d);
[m,n]=size(d);
figure,subplot(2,1,1),imshow(d),title(n)
k1=1;k2=1;s=sum(d);j=1;
while j~=n
while s(j)==0
j=j+1;
end
k1=j;
while s(j)~=0 && j<=n-1
j=j+1;
end
k2=j-1;
if k2-k1>=round(n/6.5)
[val,num]=min(sum(d(:,[k1+5:k2-5])));
d(:,k1+num+5)=0; % 分割
% 再切割
d=qiege(d);
% 切割出 7 个字符
y1=10;y2=0.25;flag=0;word1=[];
while flag==0
[m,n]=size(d);
left=1;wide=0;
while sum(d(:,wide+1))~=0
wide=wide+1;
end
if wide<y1 % 认为是左侧干扰
d(:,[1:wide])=0;
d=qiege(d);
else
temp=qiege(imcrop(d,[1 1 wide m]));
[m,n]=size(temp);
all=sum(sum(temp));
two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:)));
if two_thirds/all>y2
flag=1;word1=temp; % WORD 1
end
d(:,[1:wide])=0;d=qiege(d);
能给个网址吗?小弟去那学习学习
追答百度搜索 matlab中文论坛
追问内容太多啊,大侠,能给个网址吗
追答加q把
没法发网址了 一发 百度 又要审核了半天
317377996