数字图像处理大作业
[HW5] [编号51] 学号:SC11009018 刘志辉
(1)程序代码
%灰度图像转换
RGB=imread('lzh.jpg');
subplot(3,3,1);imshow(RGB);title('原始图像');
Y=imresize(RGB,[480 640]);
subplot(3,3,2);imshow(Y);title('缩小后的图像');
I=rgb2gray(Y);
%I1=double(I);
subplot(3,3,3);imshow(I);title('灰度图像');
%均值滤波
K1=filter2(fspecial('average',5),I)/255;
subplot(3,3,4);imshow(K1);title('5*5均值滤波图像');
%锐化
a=1;
W1=[0 -a 0;-a 1+4*a -a;0 -a 0];
rh=imfilter(I,W1,'symmetric','conv');
subplot(3,3,5);imshow(rh);title('拉普拉斯锐化图像');
%直方图均衡化
J=histeq(I);
subplot(3,3,6);imshow(I);title('原始灰度图像');
subplot(3,3,7);imhist(I);title('原始图像直方图');axis([0 255 0 7000]);
subplot(3,3,8);imshow(J);title('均衡化后的图像');
subplot(3,3,9);imhist(J);title('均衡化后的直方图');axis([0 255 0 7000]);
处理结果图:
(2)程序代码
%边缘检测
BW1=edge(I,'sobel');
BW2=edge(I,'prewitt');
BW3=edge(I,'roberts');
subplot(2,2,1);imshow(I);title('原始灰度图像');
subplot(2,2,2);imshow(BW1);title('sobel边缘检测图像'); subplot(2,2,3);imshow(BW2);title('prewitt边缘检测图像'); subplot(2,2,4);imshow(BW3);title('roberts边缘检测图像');
运行结果:
(3)程序代码
%数字分割
RGB=imread('lzh.jpg');
Y=imresize(RGB,[480 640]);
I=rgb2gray(Y);
figure;imshow(I);title('原始灰度图像');
I1=im2bw(I,0.7);
figure;imshow(I1);title('二值化图像');
I2=edge(I1,'roberts',0.09,'both');
figure;imshow(I2);title('roberts边缘检测图像');
se=[1;1;1]; %线型结构元素
I3=imerode(I2,se); %腐蚀图像
figure,imshow(I3),title('腐蚀后边缘图像');
se=strel('rectangle',[25,25]); % 矩形结构元素
I4=imclose(I3,se);%图像聚类、填充图像
figure;imshow(I4),title('填充后图像');
I5=bwareaopen(I4,2500);%去除聚团灰度值小于2500的部分figure,imshow(I5),title('形态滤波后图像');
[y,x,z]=size(I5);
I6=double(I5);
Y1=zeros(y,1);
for i=1:y
for j=1:x
if(I6(i,j,1)==1)
Y1(i,1)= Y1(i,1)+1;
end
end
end
[temp MaxY]=max(Y1);
figure,plot(0:y-1,Y1),title('行方向像素点灰度值累计和'),xlabel('行值'),ylabel('像素'); %求的车牌的行起始位置和终止位置
PY1=MaxY;
while ((Y1(PY1,1)>=50)&&(PY1>1))
PY1=PY1-1;
end
PY2=MaxY;
while ((Y1(PY2,1)>=50)&&(PY2<y))
PY2=PY2+1;
end
IY=I(PY1:PY2,:,:);
X1=zeros(1,x);
for j=1:x
for i=PY1:PY2
if(I6(i,j,1)==1)
X1(1,j)= X1(1,j)+1;
end
end
end
figure,plot(0:x-1,X1),title('列方向像素点灰度值累计和'),xlabel('列值'),ylabel('像数'); %求的车牌的列起始位置和终止位置
PX1=1;
while ((X1(1,PX1)<3)&&(PX1<x))
PX1=PX1+1;
end
PX2=x;
while ((X1(1,PX2)<3)&&(PX2>PX1))
PX2=PX2-1;
End
%分割出车牌图像
PX1=PX1-1;
PX2=PX2+1;
dw=I(PY1:PY2,PX1:PX2,:);
figure,imshow(dw),title('定位剪切后的车牌图像');
I7=im2bw(dw,0.5);
figure;imshow(I7);title('二值化图像');
I8=bwareaopen(I7,25);
figure;imshow(I8),title('形态学滤波后的二值化图像');
[y1,x1,z1]=size(I8);
X1=zeros(1,x1);
I9=double(I8);
for j=1:x1
for i=1:y1
if(I9(i,j,1)==1)
X1(1,j)= X1(1,j)+1;
end
end
end
figure;plot(0:x1-1,X1),title('列方向像素点灰度值累计和'),xlabel('列值'),ylabel('累计像素量');
Px0=1;
Px1=1;
%分割字符
for i=1:7
while ((X1(1,Px0)<2)&&(Px0<x1))
Px0=Px0+1;
end
Px1=Px0;
while (((X1(1,Px1)>=2)&&(Px1<x1))||((Px1-Px0)<10)) Px1=Px1+1;
end
Z=I9(:,Px0:Px1,:);
switch strcat('Z',num2str(i))
case 'Z1'
PIN0=Z;
case 'Z2'
PIN1=Z;
case 'Z3'
PIN2=Z;
case 'Z4'
PIN3=Z;
case 'Z5'
PIN4=Z;
case 'Z6'
PIN5=Z;
otherwise
PIN6=Z;
end
figure(13);
subplot(1,7,i);
imshow(Z);
Px0=Px1; End。