1、数字图像处理均衡化规定化平滑滤波增强变换代码function AAAAAAAAAAAAAAAAA()%function FileRead()%图像读取代码a=input(请输入编号1)clear,clcclose allA=imread(a1.bmp);A1=A;B=imread(图片7.jpg);B1=rgb2gray(B);% end %function junheng()% 直方图均衡化b=input(请输入编号2)clear clcclose allfilename,pathname = uigetfile(*.bmp;*.jpg;*.gif,选择图片);photo=imread(pa
2、thname filename);X,Y,Z=size(photo);P_photo=zeros(256,Z);for k=1:Z for i=0:255 P_photo(i+1,k)=length(find(photo(:,:,k)=i)/(X*Y); endendfigurehold onsubplot(2,2,1),bar(P_photo),title(原来图像的直方图); %原来图像的直方图 Pp_photo=zeros(256,Z);for k=1:Z for i=0:255 Pp_photo(i+1,k)=sum(P_photo(1:i+1,k); endendSk=round(P
3、p_photo*255);for k=1:Z for i=0:255 Ps_photo(i+1,k)=sum(P_photo(find(Sk(:,k)=i),k); endendsubplot(2,2,2),bar(Ps_photo),title(均衡化后的直方图); %均衡化后的直方图for k=1:Z PS=photo(:,:,k); for i=0:255 PS(find(photo(:,:,k)=i)=Sk(i+1,k); end Photo(:,:,k)=PS;endsubplot(2,2,3),imshow(photo),title(原图像) %显示原图subplot(2,2,4)
4、,imshow(Photo),title(均衡化后图像) %均衡化后图像% end %function guiding()% 直方图规定化c=input(请输入编号3)clear all,clc;photo1=imread(a2.bmp);photo2=imread(cell.bmp);X1,Y1,Z1=size(photo1);X2,Y2,Z2=size(photo2);if Z1=Z2 Pr_photo1=zeros(256,Z1);Pr_photo2=zeros(256,Z2); for k=1:Z1 for i=0:255 Pr_photo1(i+1,k)=length(find(ph
5、oto1(:,:,k)=i)/(X1*Y1); Pr_photo2(i+1,k)=length(find(photo2(:,:,k)=i)/(X2*Y2); end end Pz_photo1=zeros(256,Z1);Pz_photo2=zeros(256,Z1); for k=1:Z1 for i=0:255 Pz_photo1(i+1,k)=sum(Pr_photo1(1:i+1,k); Pz_photo2(i+1,k)=sum(Pr_photo2(1:i+1,k); end end Sk2=round(Pz_photo2*255); for k=1:Z1 for i=0:255 Ps
6、_photo2(i+1,k)=sum(Pr_photo2(find(Sk2(:,k)=i),k); end end P_photo2=zeros(256,Z1);p_photo2=zeros(256,Z1); for k=1:Z1 Temp=Sk2(:,k); for i=0:255 if Ps_photo2(i+1,k)=0 P_photo2(i+1,k)=sum(Ps_photo2(1:i+1,k); data,point=min(abs(P_photo2(i+1,k)*ones(256,1)-Pz_photo1(:,k); Sk2(find(Temp=i),k)=point-1; p_p
7、hoto2(point,k)=Ps_photo2(i+1,k); end end end for k=1:Z1 Temp=photo2(:,:,k); for i=0:255 Temp(find(photo2(:,:,k)=i)=Sk2(i+1,k); end PHOTO2(:,:,k)=Temp; end subplot(4,2,1),imshow(photo1),title(原图1) subplot(4,2,2),imshow(photo2),title(原图2) subplot(4,2,3),imshow(PHOTO2),title(图2后) subplot(4,2,4),bar(Pr_
8、photo1),title(原图1) subplot(4,2,5),bar(Pr_photo2),title(原图2) subplot(4,2,6),bar(Ps_photo2),title(原图2均衡化) subplot(4,2,7),bar(p_photo2),title(原图2规定化)else errordlg(选取的图片格式不一样!,File Error);end% end %function Image_Smooth()%图像平滑代码%图像空间平滑%d=input(请输入编号4)close all;clear,clc;A=imread(a1.bmp);subplot(3,2,1);i
9、mshow(A);title(原图像)A1=double(A);s=size(A1);if length(s)=2 for i=2:length(A1)-1 for j=2:length(A1)-1 C(i,j)=(A1(i-1,j-1)+A1(i-1,j)+A1(i-1,j+1)+A1(i,j-1)+A1(i,j+1)+A1(i+1,j-1)+A1(i+1,j)+A1(i+1,j+1)/9; A1(i,j)=C(i,j); end end subplot(3,2,2) imshow(A1,); title(局部平滑后的图像) %中值滤波 A4=A; for i=2:length(A4)-1
10、for j=2:length(A4)-1 a4=sort(A4(i-1,j-1),A4(i-1,j),A4(i-1,j+1),A4(i,j-1),A4(i,j),A4(i,j+1),A4(i+1,j-1),A4(i+1,j),A4(i+1,j+1); A4(i,j)=a4(5); end end subplot(3,2,3) imshow(A4); title(中值滤波后的图像) %梯度倒数加权平滑法% A2=A; for i=2%:length(A2)-1 for j=2%:length(A2)-1%当f(i,j)=G(i,j)时,梯度为2 f=A2(i-1,j-1),A2(i-1,j),A
11、2(i-1,j+1), A2(i,j-1),A2(i,j),A2(i,j+1), A2(i+1,j-1),A2(i+1,j),A2(i+1,j+1); g1=2.*sum(1./abs(A2(i-1,j-1)-A2(i,j)+1./abs(A2(i-1,j)-A2(i,j)+1/2+1./abs(A2(i-1,j+1)-A2(i,j)+. 1./abs(A2(i,j-1)-A2(i,j)+1./abs(A2(i,j+1)-A2(i,j)+1./abs(A2(i+1,j-1)-A2(i,j)+. 1./abs(A2(i+1,j)-A2(i,j)+1./abs(A2(i+1,j+1)-A2(i,j
12、); w=1./(2.*g1).*1./abs(A2(i-1,j-1)-A2(i,j),1./abs(A2(i-1,j)-A2(i,j),1./abs(A2(i-1,j+1)-A2(i,j); 1./abs(A2(i,j-1)-A2(i,j),1./2,1./abs(A2(i,j+1)-A2(i,j); 1./abs(A2(i+1,j-1)-A2(i,j),1./abs(A2(i+1,j)-A2(i,j),1./abs(A2(i+1,j+1)-A2(i,j); g2=sum(f.*w); G=sum(g2); A2(i,j)=G; end end A2=uint8(A2); subplot(3
13、,2,4) imshow(A2); title(梯度倒数加权后的图像) %最大值滤波% A3=A; n=2,c=2; mask=ones(n,n); A3=double(A3); A3_max=A3;%I1_min=I1; for i=1:length(A3)-1 for j=1:length(A3)-1 a=A3(i:i+1,j:j+1); a=a.*mask; A_max(i,j)=max(max(a); end end subplot(3,2,5) imshow(A_max,) title(最大值滤波后的图像) %最小值滤波% A5=A; n=2,c=2; mask=ones(n,n);
14、 A5=double(A5); A5_min=A5; for i=1:length(A5)-1 for j=1:length(A5)-1 a5=A5(i:i+1,j:j+1); a5=a5.*mask; A5_min(i,j)=min(min(a5); end end subplot(3,2,6) imshow(A5_min,) title(最小值滤波后的图像)elseif length(s)=3 m,n,p=size(A); for k=1:p for i=2:m-1 for j=2:n-1 C(i,j,k)=(A1(i-1,j-1,k)+A1(i-1,j,k)+A1(i-1,j+1,k)+
15、A1(i,j-1,k)+A1(i,j+1,k)+A1(i+1,j-1,k)+A1(i+1,j,k)+A1(i+1,j+1,k)/9; A1(i,j,k)=C(i,j,k); end end end subplot(3,2,2) imshow(uint8(A1); title(局部平滑后的图像) %中值滤波% A4=A1; for k=1:p for i=2:m-1 for j=2:m-1 a4=sort(A4(i-1,j-1,k),A4(i-1,j,k),A4(i-1,j+1,k),A4(i,j-1,k),A4(i,j,k),A4(i,j+1,k),A4(i+1,j-1,k),A4(i+1,j
16、,k),A4(i+1,j+1,k); A4(i,j,k)=a4(5); end end end subplot(3,2,3) imshow(uint8(A4); title(中值滤波后的图像) %梯度倒数加权平滑法% A2=A; for k=1:p for i=2%:length(A2)-1 for j=2%:length(A2)-1%当f(i,j)=G(i,j)时,梯度为2 f=A2(i-1,j-1,k),A2(i-1,j,k),A2(i-1,j+1,k), A2(i,j-1,k),A2(i,j,k),A2(i,j+1,k), A2(i+1,j-1,k),A2(i+1,j,k),A2(i+1
17、,j+1,k); g1=2.*sum(1./abs(A2(i-1,j-1,k)-A2(i,j,k)+1./abs(A2(i-1,j,k)-A2(i,j,k)+1/2+1./abs(A2(i-1,j+1,k)-A2(i,j,k)+. 1./abs(A2(i,j-1,k)-A2(i,j,k)+1./abs(A2(i,j+1,k)-A2(i,j,k)+1./abs(A2(i+1,j-1,k)-A2(i,j,k)+. 1./abs(A2(i+1,j,k)-A2(i,j,k)+1./abs(A2(i+1,j+1,k)-A2(i,j,k); w=1./(2.*g1).*1./abs(A2(i-1,j-1,
18、k)-A2(i,j,k),1./abs(A2(i-1,j,k)-A2(i,j,k),1./abs(A2(i-1,j+1,k)-A2(i,j,k); 1./abs(A2(i,j-1,k)-A2(i,j,k),1./2,1./abs(A2(i,j+1,k)-A2(i,j,k); 1./abs(A2(i+1,j-1,k)-A2(i,j,k),1./abs(A2(i+1,j,k)-A2(i,j,k),1./abs(A2(i+1,j+1,k)-A2(i,j,k); g2=sum(f.*w); G=sum(g2); A2(i,j,k)=G; end end end A2=uint8(A2); subplo
19、t(3,2,4) imshow(uint8(A2); title(梯度倒数加权后的图像) %最大值滤波% A3=A; n=2,c=2; mask=ones(n,c); A3=double(A3); for k=1:p for i=1:length(A3)-1 for j=1:length(A3)-1 a=A3(i:i+1,j:j+1,k); a=a.*mask; A_max(i,j,k)=max(max(a); end end end subplot(3,2,5) imshow(uint8(A_max) title(最大值滤波后的图像) %最小值滤波% A5=A; n=2,c=2; mask=
20、ones(n,n); A5=double(A5); A5_min=A5; for k=1:p for i=1:length(A5)-1 for j=1:length(A5)-1 a5=A5(i:i+1,j:j+1,k); a5=a5.*mask; A5_min(i,j,k)=min(min(a5); end end end subplot(3,2,6) imshow(uint8(A5_min) title(最小值滤波后的图像)end%end % function ImageShape()% 各种算子%图像空间域锐化e=input(请输入编号6)close allclear clcphoto=i
21、mread(a2.bmp);X,Y,Z=size(photo);figureimshow(photo),title(原图像);for i=1:X-1 for j=1:Y-1 fx(i,j)=photo(i,j+1)-photo(i,j); fy(i,j)=photo(i+1,j)-photo(i,j); endendgrad_T=abs(fx)+abs(fy);%梯度算子figuresubplot(2,3,1),imshow(grad_T),title(梯度算子图像);for i=1:X-1 for j=1:Y-1 fx(i,j)=abs(photo(i+1,j+1)-photo(i,j);
22、fy(i,j)=abs(photo(i+1,j)-photo(i,j+1); endendgrad_R=abs(fx)+abs(fy);%Roberts算子subplot(2,3,2),imshow(grad_R),title(Roberts算子图像);for i=2:X-1 for j=2:Y-1 fx(i,j)=photo(i-1,j+1)-photo(i-1,j-1)+photo(i,j+1)-photo(i,j-1)+photo(i+1,j+1)-photo(i+1,j-1); fy(i,j)=photo(i+1,j-1)-photo(i-1,j-1)+photo(i+1,j)-pho
23、to(i-1,j)+photo(i+1,j+1)-photo(i-1,j+1); endendgrad_P=abs(fx)+abs(fy);%Prewitt算子subplot(2,3,3),imshow(grad_P),title(Prewitt算子图像);for i=2:X-1 for j=2:Y-1 fx(i,j)=photo(i-1,j+1)-photo(i-1,j-1)+2*(photo(i,j+1)-photo(i,j-1)+photo(i+1,j+1)-photo(i+1,j-1); fy(i,j)=photo(i+1,j-1)-photo(i-1,j-1)+2*(photo(i+
24、1,j)-photo(i-1,j)+photo(i+1,j+1)-photo(i-1,j+1); endendgrad_S=abs(fx)+abs(fy);%Sobel算子subplot(2,3,4),imshow(grad_S),title(Sobel算子图像);for i=2:X-1 for j=2:Y-1 dxy_L(i,j)=photo(i+1,j)+photo(i-1,j)+photo(i,j+1)+photo(i,j-1)-4*photo(i,j); endendgrad_L=photo(1:X-1,1:Y-1)-dxy_L;%Laplacian增强算子subplot(2,3,5)
25、,imshow(grad_L),title(Laplacian增强算子图像);for i=3:X-2 for j=3:Y-2 dxy_G(i,j)=-2*photo(i-2,j-2)-4*photo(i-2,j-1)-4*photo(i-2, j )-4*photo(i-2,j+1)-2*photo(i-2,j+2). -4*photo(i-1,j-2)+0*photo(i-1,j-1)+8*photo(i-1, j )+0*photo(i-1,j+1)-4*photo(i-1,j+2). -4*photo( i ,j-2)+8*photo( i ,j-1)+24*photo(i , j )+
26、9*photo( i ,j+1)-4*photo( i ,j+2). -4*photo(i+1,j-2)+0*photo(i+1,j-1)+8*photo(i+1, j )+0*photo(i+1,j+1)-4*photo(i+1,j+2). -2*photo(i+2,j-2)-4*photo(i+2,j-1)-4*photo(i+2, j )-4*photo(i+2,j+1)-2*photo(i+2,j+2); endendgrad_G=photo(1:X-2,1:Y-2)-dxy_G;%LOG算子图像subplot(2,3,6),imshow(grad_G),title(LOG算子图像);
27、% end %function ImageStrength()% 图像增强f=input(请输入编号7)while 1 Canshu=请输入一个合适的阈值T(0-255):,请输入指定的灰度级Lg(0-255):,请输入指定的灰度级Lb(0-255):; Dlg_title=输入参数:; Num_lines=1; Def=128,0,255; Answer=inputdlg(Canshu,Dlg_title,Num_lines,Def); for i=1:3 answer(i)=str2num(cell2mat(Answer(i); end if 0=min(answer) & max(ans
28、wer)=255 break; else errordlg(输入参数错误,请重新输入 !,Input Error); load train sound(y,Fs); endendgrad=grad_L;T=answer(1);Lg=answer(2);Lb=answer(3);fxy=photo(1:X-1,1:Y-1);gradxy=grad;Fg1=gradxy;gradxy(find(gradT)=fxy(find(grad=T)=Lg;Fg3=gradxy;gradxy=grad;gradxy(find(grad=T)=Lg;Fg5=gradxy;figuresubplot(2,3,1),imshow(photo),title(原图);subplot(2,3,2),imshow(Fg1),title(情况一);subplot(2,3,3),imshow(Fg2),title(情况二);subplot(2,3,4),imshow(Fg3),title(情况三);subplot(2,3,5),imshow(Fg4),title(情况四);subplot(2,3,6),imshow(Fg5),title(情况五);% end %fun