数字图像处理均衡化规定化平滑滤波增强变换代码.docx

上传人:b****4 文档编号:5418023 上传时间:2022-12-16 格式:DOCX 页数:21 大小:18.90KB
下载 相关 举报
数字图像处理均衡化规定化平滑滤波增强变换代码.docx_第1页
第1页 / 共21页
数字图像处理均衡化规定化平滑滤波增强变换代码.docx_第2页
第2页 / 共21页
数字图像处理均衡化规定化平滑滤波增强变换代码.docx_第3页
第3页 / 共21页
数字图像处理均衡化规定化平滑滤波增强变换代码.docx_第4页
第4页 / 共21页
数字图像处理均衡化规定化平滑滤波增强变换代码.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

数字图像处理均衡化规定化平滑滤波增强变换代码.docx

《数字图像处理均衡化规定化平滑滤波增强变换代码.docx》由会员分享,可在线阅读,更多相关《数字图像处理均衡化规定化平滑滤波增强变换代码.docx(21页珍藏版)》请在冰豆网上搜索。

数字图像处理均衡化规定化平滑滤波增强变换代码.docx

数字图像处理均衡化规定化平滑滤波增强变换代码

functionAAAAAAAAAAAAAAAAA()

%functionFileRead()

%图像读取代码

a=input('请输入编号1')

clear,clc

closeall

A=imread('a1.bmp');

A1=A;

B=imread('图片7.jpg');

B1=rgb2gray(B);

%end

%functionjunheng()

%直方图均衡化

b=input('请输入编号2')

clearclc

closeall

[filename,pathname]=uigetfile({'*.bmp';'*.jpg';'*.gif'},'选择图片');

photo=imread([pathnamefilename]);

[X,Y,Z]=size(photo);

P_photo=zeros(256,Z);

fork=1:

Z

fori=0:

255

P_photo(i+1,k)=length(find(photo(:

:

k)==i))/(X*Y);

end

end

figure

holdon

subplot(2,2,1),bar(P_photo),title('原来图像的直方图');%原来图像的直方图

Pp_photo=zeros(256,Z);

fork=1:

Z

fori=0:

255

Pp_photo(i+1,k)=sum(P_photo(1:

i+1,k));

end

end

Sk=round(Pp_photo*255);

fork=1:

Z

fori=0:

255

Ps_photo(i+1,k)=sum(P_photo(find(Sk(:

k)==i),k));

end

end

subplot(2,2,2),bar(Ps_photo),title('均衡化后的直方图');%均衡化后的直方图

fork=1:

Z

PS=photo(:

:

k);

fori=0:

255

PS(find(photo(:

:

k)==i))=Sk(i+1,k);

end

Photo(:

:

k)=PS;

end

subplot(2,2,3),imshow(photo),title('原图像')%显示原图

subplot(2,2,4),imshow(Photo),title('均衡化后图像')%均衡化后图像

%end

%functionguiding()

%直方图规定化

c=input('请输入编号3')

clearall,clc;

photo1=imread('a2.bmp');photo2=imread('cell.bmp');

[X1,Y1,Z1]=size(photo1);[X2,Y2,Z2]=size(photo2);

ifZ1==Z2

Pr_photo1=zeros(256,Z1);Pr_photo2=zeros(256,Z2);

fork=1:

Z1

fori=0:

255

Pr_photo1(i+1,k)=length(find(photo1(:

:

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);

fork=1:

Z1

fori=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);

fork=1:

Z1

fori=0:

255

Ps_photo2(i+1,k)=sum(Pr_photo2(find(Sk2(:

k)==i),k));

end

end

P_photo2=zeros(256,Z1);p_photo2=zeros(256,Z1);

fork=1:

Z1

Temp=Sk2(:

k);

fori=0:

255

ifPs_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_photo2(point,k)=Ps_photo2(i+1,k);

end

end

end

fork=1:

Z1

Temp=photo2(:

:

k);

fori=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_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('选取的图片格式不一样!

','FileError');

end

%end

%functionImage_Smooth()

%图像平滑代码

%%%%%%%%%%%%%%%%图像空间平滑%%%%%%%%%%%%%

d=input('请输入编号4')

closeall;

clear,clc;

A=imread('a1.bmp');

subplot(3,2,1);

imshow(A);

title('原图像')

A1=double(A);

s=size(A1);

iflength(s)==2

fori=2:

length(A1)-1

forj=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;

fori=2:

length(A4)-1

forj=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;

fori=2%:

length(A2)-1

forj=2%:

length(A2)-1%当f(i,j)=G(i,j)时,梯度为2

f=[A2(i-1,j-1),A2(i-1,j),A2(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)));

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,2,4)

imshow(A2);

title('梯度倒数加权后的图像')

%%%%%%%%%%%%%%%最大值滤波%%%%%%%%%%%%%

A3=A;

n=2,c=2;

mask=ones(n,n);

A3=double(A3);

A3_max=A3;%I1_min=I1;

fori=1:

length(A3)-1

forj=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);

A5=double(A5);

A5_min=A5;

fori=1:

length(A5)-1

forj=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('最小值滤波后的图像')

elseiflength(s)==3

[m,n,p]=size(A);

fork=1:

p

fori=2:

m-1

forj=2:

n-1

C(i,j,k)=(A1(i-1,j-1,k)+A1(i-1,j,k)+A1(i-1,j+1,k)+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;

fork=1:

p

fori=2:

m-1

forj=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,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;

fork=1:

p

fori=2%:

length(A2)-1

forj=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,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,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);

subplot(3,2,4)

imshow(uint8(A2));

title('梯度倒数加权后的图像')

%%%%%%最大值滤波%%%%%%%

A3=A;

n=2,c=2;

mask=ones(n,c);

A3=double(A3);

fork=1:

p

fori=1:

length(A3)-1

forj=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=ones(n,n);

A5=double(A5);

A5_min=A5;

fork=1:

p

fori=1:

length(A5)-1

forj=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

%functionImageShape()

%各种算子

%图像空间域锐化

e=input('请输入编号6')

closeall

clearclc

photo=imread('a2.bmp');

[X,Y,Z]=size(photo);

figure

imshow(photo),title('原图像');

fori=1:

X-1

forj=1:

Y-1

fx(i,j)=photo(i,j+1)-photo(i,j);

fy(i,j)=photo(i+1,j)-photo(i,j);

end

end

grad_T=abs(fx)+abs(fy);%梯度算子

figure

subplot(2,3,1),imshow(grad_T),title('梯度算子图像');

fori=1:

X-1

forj=1:

Y-1

fx(i,j)=abs(photo(i+1,j+1)-photo(i,j));

fy(i,j)=abs(photo(i+1,j)-photo(i,j+1));

end

end

grad_R=abs(fx)+abs(fy);%Roberts算子

subplot(2,3,2),imshow(grad_R),title('Roberts算子图像');

fori=2:

X-1

forj=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)-photo(i-1,j)+photo(i+1,j+1)-photo(i-1,j+1);

end

end

grad_P=abs(fx)+abs(fy);%Prewitt算子

subplot(2,3,3),imshow(grad_P),title('Prewitt算子图像');

fori=2:

X-1

forj=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+1,j)-photo(i-1,j))+photo(i+1,j+1)-photo(i-1,j+1);

end

end

grad_S=abs(fx)+abs(fy);%Sobel算子

subplot(2,3,4),imshow(grad_S),title('Sobel算子图像');

fori=2:

X-1

forj=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);

end

end

grad_L=photo(1:

X-1,1:

Y-1)-dxy_L;%Laplacian增强算子

subplot(2,3,5),imshow(grad_L),title('Laplacian增强算子图像');

fori=3:

X-2

forj=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)+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);

end

end

grad_G=photo(1:

X-2,1:

Y-2)-dxy_G;%LOG算子图像

subplot(2,3,6),imshow(grad_G),title('LOG算子图像');

%end

%functionImageStrength()

%图像增强

f=input('请输入编号7')

while1

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);

fori=1:

3

answer(i)=str2num(cell2mat(Answer(i)));

end

if0<=min(answer)&max(answer)<=255

break;

else

errordlg('输入参数错误,请重新输入!

','InputError');

loadtrain

sound(y,Fs);

end

end

grad=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(grad

Fg2=gradxy;

gradxy(find(grad>=T))=Lg;

Fg3=gradxy;

gradxy=grad;

gradxy(find(grad

Fg4=gradxy;

gradxy(find(grad>=T))=Lg;

Fg5=gradxy;

figure

subplot(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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1