找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1806|回复: 0
打印 上一主题 下一主题
收起左侧

MATLAB是当前科学家最具影响力,也是最有活力的软件。

[复制链接]
跳转到指定楼层
楼主
ID:292257 发表于 2018-3-15 13:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
>> close all
>> clear all
>> [fn,pn,fi]=uigetfile('pic3.jpg','选择图片');
>> I=imread([pn,fn]);
>> figure,imshow(I);title('原始图像');
>> Im1=rgb2gray(I);
>> figure(2),subplot(1,2,1),
>> imshow(Im1);
>> title('灰度图像');
>> figure(2),
>> subplot(1,2,2),
>> imhist(Im1);
>> title('灰度图像直方图');
>> Tiao=imadjust(Im1,[0.19,0.78],[0,1]);
>> figure(3),
>> subplot(1,2,1),
>> imshow(Tiao);title('增强灰度图');
>> figure(3),
>> subplot(1,2,2),
>> imhist(Tiao);
>> title('增强灰度图的直方图');
>> Im2=edge(Im1,'sobel',0.15,'both');
>> figure(4),
>> imshow(Im2);
>> title('sobel算子边缘检测');
>> se=[1;1;1];
>> Im3=imerode(Im2,se);
>> figure(5),
>> imshow(Im3);
>> title('腐蚀效果');
>> se=strel('rectangle',[25,25]);
>> Im4=imclose(Im3,se);
>> figure(6),
>> imshow(Im4);
>> title('平滑图像轮廓');
>> Im5=bwareaopen(Im4,2000);
>> figure(7),
>> imshow(Im5);
>> title('移除小对象');
>> [y,x,z]=size(Im5);
>> Im6=double(Im5);
>> Blue_y=zeros(y,1);
>> for i=1:y
for j=1:x
if(Im6(i,j,1)==1)
Blue_y(i,1)=Blue_y(i,1)+1;
end
end
end
>> [temp MaxY]=max(Blue_y);
>> PY1=MaxY;
>> while((Blue_y(PY1,1)>=5)&&(PY1>1))
PY1=PY1-1;
end
>> PY2=MaxY;
>>  while((Blue_y(PY2,1)>=5)&&(PY2<y))
PY2=PY2+1;
end
>> IY=I(PY1:PY2,:,:);
>> Blue_x=zeros(1,x);
>> for j=1:x
for i=PY1:PY2
if(Im6(i,j,1)==1)
Blue_x(1,j)=Blue_x(1,j)+1;
end
end
end
>> PX1=1;
>> while((Blue_x(1,PX1)<3)&&(PX1<x))
PX1=PX1+1;
end
>> PX2=x;
>> while((Blue_x(1,PX2)<3)&&(PX2>PX1))
PX2=PX2-1;
end
>> PX1=PX1-1;
>> PX2=PX2+1;
>> dw=I(PY1:PY2-6,PX1:PX2,:);
>> figure(8),
>> subplot(1,2,1),
>> imshow(IY),
>> title('垂直方向合理区域');
>> figure(8),
>> subplot(1,2,2),
>> imshow(dw),
>> title('定位剪切后的彩色车牌图像');
>> imwrite(dw,'C:\picture\dw.jpg');
>>  a=imread('C:\picture\dw.jpg');
>> b=rgb2gray(a);
>> imwrite(b,'车牌灰度图像.jpg');
>> figure(9);
>> subplot(3,2,1),
>> imshow(b),
>> title('车牌灰度图像');
>> 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);
>> subplot(3,2,2),
>> imshow(d),
>> title('车牌二值图像');
>> figure(9),
>> subplot(3,2,3),
>> imshow(d),
>> title('均值滤波前');
>> h=fspecial('average',3);
>> d=im2bw(round(filter2(h,d)));
>> imwrite(d,'均值滤波后.jpg');
>> figure(9),
>> subplot(3,2,4),
>> imshow(d),
>> title('均值滤波后');
>> se=eye(2);
>> [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(9),
subplot(3,2,5),
imshow(d),
title('膨胀或腐蚀处理后');
>> d=QieGe(d);
>> [m,n]=size(d);
>> 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;
end
end
>> d=QieGe(d);
>> 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;
end
d(:,[1:wide])=0;d=QieGe(d);
end
end
>> [word2,d]=FenGe(d);
>> [word3,d]=FenGe(d);
>> [word4,d]=FenGe(d);
>> [word5,d]=FenGe(d);
>> [word6,d]=FenGe(d);
>> [word7,d]=FenGe(d);
>> word1=imresize(word1,[40,20]);
>> word2=imresize(word2,[40,20]);
>> word3=imresize(word3,[40,20]);
>> word4=imresize(word4,[40,20]);
>> word5=imresize(word5,[40,20]);
>> word6=imresize(word6,[40,20]);
>> word7=imresize(word7,[40,20]);
>> figure(10);
>> subplot(2,7,1),
>> imshow(word1),
>> title('1');
>> subplot(2,7,2),
>> imshow(word2),
>> title('2');
>> subplot(2,7,3),
>> imshow(word3),
>> title('3');
>> subplot(2,7,4),
>> imshow(word4),
>> title('4');
>> subplot(2,7,5),
>> imshow(word5),
>> title('5');
>> subplot(2,7,6),
>> imshow(word6),
>> title('6');
>> subplot(2,7,7),
>> imshow(word7),
>> title('7');
>> imwrite(word1,'1.jpg');
>> imwrite(word2,'2.jpg');
>> imwrite(word3,'3.jpg');
>> imwrite(word4,'4.jpg');
>> imwrite(word5,'5.jpg');
>> imwrite(word6,'6.jpg');
>> imwrite(word7,'7.jpg');
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表