数字图像实验二四.docx
- 文档编号:27023237
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:33
- 大小:2.04MB
数字图像实验二四.docx
《数字图像实验二四.docx》由会员分享,可在线阅读,更多相关《数字图像实验二四.docx(33页珍藏版)》请在冰豆网上搜索。
数字图像实验二四
实验二
%%图像文件读取
a=imread('lyy.tif');
%图像写入
imwrite(a,'lyy.tif');
%%
%读取照片信息
sizeofa=size(a);
inf=imfinfo('lyy','tif');
%%
%显示照片
imshow(a)
%%
%将彩图转换为灰度图
I=imread('lyy.tif');
B=rgb2gray(I);
figure,imshow(B),figure,imshow(I);
%%
%灰度图像转化
rgb=imread('lyy.tif');
[x1map1]=rgb2ind(rgb,64);
x=ind2gray(x1,map1);
imshow(x1,map1)
figure,
imshow(x)
%%
%调整灰度图像对比度
clearall;closeall;
I=imread('lyy.tif');
P=rgb2gray(I);
J=imadjust(P,[0.20.5],[01]);
figure;
subplot(131);%原图
imshow(uint8(I));
subplot(132);%%灰度图
imshow(uint8(P));
subplot(133);%%经过灰度变换后的灰度图
imshow(uint8(J));
%%
%获取图像直方图
p=imread('lyy.tif');
i=rgb2gray(p);
imhist(i)
%%
%直方图均衡化
M=imread('lyy.tif');
I=rgb2gray(M);
J=histeq(I);
imshow(I)
figure,imshow(J)
均衡化前的图像
均衡化后的图像
%%
%直方图规范化
closeall; %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量
clearall;
clc;
R=imread('lyy.tif');%读入原图像,赋值给R
J=rgb2gray(R); %将彩色图像数据R转换为灰度图像数据J
[M,N]=size(J); %获得灰度图像数据J的行列数M,N
x=1;y=1; %定义行索引变量x、列索引变量y
forx=1:
M
fory=1:
N
if(J(x,y)<=35); %对灰度图像J进行分段处理,处理后的结果返回给矩阵H
H(x,y)=J(x,y)*10;
elseif(J(x,y)>35&J(x,y)<=75);
H(x,y)=(10/7)*[J(x,y)-5]+50;
else(J(x,y)>75);
H(x,y)=(105/180)*[J(x,y)-75]+150;
end
end
end
set(0,'defaultFigurePosition',[100,100,1000,500]);%修改图形图像位置的默认设置
set(0,'defaultFigureColor',[111])%修改图形背景颜色的设置
subplot(121),imshow(J)%显示处理前后的图像
subplot(122),imshow(H);
规定化前的图像
规定化后的图像
%%
%初始操作
fn=imread('cameraman.tif');%读取图像
%%
%%%%%加噪声与噪声处理%%%%%%
%加噪声
I=imread('cameraman.tif');%原图像
J=imnoise(I,'salt&pepper',0.02);%加噪声
J1=imnoise(I,'gaussian');
subplot(311),
imshow(I)
title('原图像')
subplot(312),
imshow(J)
title('椒盐噪声')
subplot(313)
imshow(J1)
title('高斯噪声')
%%
%处理噪声
w4=fspecial('laplacian',0);
g4=fn-imfilter(J,w4,'replicate');
g41=fn-imfilter(J,w4,'symmetric');
g42=fn-imfilter(J,w4,'circular');
g43=fn-imfilter(J1,w4,'replicate');
g44=fn-imfilter(J1,w4,'symmetric');
g45=fn-imfilter(J1,w4,'circular');
%%
%显示椒盐噪声过滤效果效果
subplot(424)
imshow(fn)
title('原图')
subplot(421),imshow(g4)%%replicate办法
title('replicate办法处理椒盐噪声')
subplot(422),imshow(g41)%%symmetric办法
title('symmetric办法处理椒盐噪声')
subplot(423),imshow(g42)%%circular办法
title('circular办法处理椒盐噪声')
subplot(425)
imshow(g43)
title('replicate办法处理高斯噪声')
subplot(426)
imshow(g44)
title('symmetric办法处理高斯噪声')
subplot(427)
imshow(g45)
title('circular办法处理高斯噪声')
%%
%对椒盐噪声做10次均值滤波
H1=fspecial('average',10);
jiao1=imfilter(J,H1,'replicate');
subplot(211)
imshow(J)
title('加噪声图像')
subplot(212)
imshow(jiao1);
title('10次均值滤波')
%%
%对椒盐噪声做20次均值滤波
H2=fspecial('average',20);
jiao2=imfilter(J,H2,'replicate');
imshow(J)
title('加噪声图像')
subplot(212)
imshow(jiao2);
title('20次均值滤波')
%%
%用中值滤波和均值滤波处理椒盐噪声
I=imread('cameraman.tif');
J=imnoise(I,'salt&pepper',0.02);
K=medfilt2(J);%%中值滤波器
H2=fspecial('average',10);
jiao3=imfilter(I,H2,'replicate');
subplot(311)
imshow(J),
title('原图像梁逸云')
subplot(312),
imshow(K)
title('中值滤波')
subplot(313)
imshow(jiao3)
title('均值滤波')
%%
%低通(平滑)滤波器(利用低通领域模板进行平滑)
fn=imread('cameraman.tif');
k=fspecial('average');
kn=filter2(k,fn)/256;%%3*3平滑滤波
k1=fspecial('average',9);
kn1=filter2(k1,fn)/255;%%9*9平滑滤波
%%
%显示
subplot(3,1,1);
imshow(fn)
title('原图梁逸云')
subplot(3,1,2);
imshow(kn)
title('3*3平滑滤波')
subplot(3,1,3);
imshow(kn1)
title('9*9平滑滤波')
实验三
%%
%%%%%锐化空间滤波%%%%%%%
%线性平滑滤波器(用3*3模板处理图像)
w8=[111;1-81;111];%创建3*3矩阵
g8=fn-imfilter(fn,w8,'replicate');
%%
%3*3模板,边沿处理
g82=fn-imfilter(fn,w8,'symmetric');
%%
%5*5模板
g25=genlaplacian(fn);
%%
%显示图像(3*3模板)
subplot(3,1,1);
imshow(fn)
title('原图梁逸云')
subplot(3,1,2);
imshow(g8)
title('3*3处理后的图像梁逸云')
subplot(3,1,3);
imshow(g82)
title('3*3模板边沿处理的图像梁逸云')
%%
%显示图像(5*5模板)
subplot(211)
imshow(fn)
title('原图梁逸云')
subplot(212),
imshow(g25)
title('5*5处理后的图像梁逸云')
%%
%%%%锐化增强%%%%%
%产生5*5,9*9,15*15,25*25大小的拉普拉斯算子
w55=ones(5);
w55(3,3)=w55(3,3)-25;
w99=ones(9);
w99(5,5)=w99(5,5)-81;
w15=ones(15);
w15(8,8)=w15(8,8)-15^2;
w25=ones(25);
w25(13,13)=w25(13,13)-25^2;
%%
%利用算子
g55=fn-imfilter(fn,w55,'replicate');
g99=fn-imfilter(fn,w99,'replicate');
g15=fn-imfilter(fn,w15,'replicate');
g25=fn-imfilter(fn,w25,'replicate');
%%
%显示效果
subplot(321),
imshow(fn)
title('原图像梁逸云')
subplot(322),
imshow(g55)
title('5*5模板梁逸云')
subplot(323),
imshow(g99)
title('9*9模板')
subplot(324),
imshow(g15)
title('15*15模板梁逸云')
subplot(325),
imshow(g25)
title('25*25模板梁逸云')
%%
%自行设计锐化滤波器进行锐化滤波
I=imread('cameraman.tif');
domain=[88088;88088;00000;88088;88088];
K1=ordfilt2(I,5,domain);
%%
%显示原图与锐化滤波器效果,进行对比
subplot(211)
imshow(I)
title('原图梁逸云')
subplot(212)
imshow(K1)
title('滤波后图像')
附代码中使用的genlaplacian函数
functiong=genlaplacian(n)
%UNTITLED3此处显示有关此函数的摘要
%此处显示详细说明
w25=[11111;11111;11-2411;11111;11111];
g=n-imfilter(n,w25,'replicate');
end
实验四
%读取原图像
I=imread('camen.gif');
J=imread('rice.gif');
subplot(427)
imshow(I)%%显示图像
title('camen.gif')
subplot(428)
imshow(J)%%显示图像
title('rice.gif')
%%
%对原图像加高斯噪声并显示
subplot(421);
I=imnoise(I,'gaussian');
imshow(I)
title('加高斯噪声的camen.gif')
subplot(422);
J=imnoise(J,'gaussian');
imshow(J)
title('加高斯噪声的rice.gif')
title('加高斯噪声的rice.gif')
%%
%%
%计算频谱幅值
a=ffi(I);%%用函数ffi做归一化具体函数文件见附函数文件ffi
a1=ffi(J);%%%用函数ffi做归一化具体函数文件见附函数文件ffi
%%
subplot(423)
imshow(a)%显示原图像频谱
title('加高斯噪声的camen.gif频谱')
subplot(424)
imshow(a1)
title('加高斯噪声的rice.gif频谱')
%%
%高斯滤波
a=ffi(I);%%用函数ffi做归一化具体函数文件见附函数文件ffi
a1=ffi(J);%%%用函数ffi做归一化具体函数文件见附函数文件ffi
nn=fspecial('gaussian',15,40);
fe=imfilter(I,nn,'replicate');
fe1=imfilter(J,nn,'replicate');
subplot(425);
imshow(fe)
title('高斯滤波后camen.gif')
subplot(426);
imshow(fe1)
title('高斯滤波后rice.gif')
%%
%高斯平滑滤波
n1=3;sigma1=1.5;n2=3;sigma2=1.5;theta=0;
[I,map]=imread('camen.gif');
I=imnoise(I,'gaussian');
a=ffi(I);%用函数ffi做归一化具体函数文件见附函数文件ffi
r=[cos(theta)-sin(theta);sin(theta) cos(theta)];
fori=1:
n2
forj=1:
n1
u=r*[j-(n1+1)/2i-(n2+1)/2]';
h(i,j)=exp(-u
(1)^2/(2*sigma1^2))/(sigma1*sqrt(2*pi))*exp(-u
(2)^2/(2*sigma2^2))/(sigma2*sqrt(2*pi));
end
end
h=h/sqrt(sum(sum(h.*h)));
f1=convn(I,h,'same');
f2=convn(a,h,'same');
subplot(2,2,1);imagesc(I);title('camen.gif');
colormap(gray);
subplot(2,2,2);
imagesc(f1);title('高斯平滑滤波后的camen1.gif(3x3)');
colormap(gray);
subplot(2,2,3);imshow(a);title('camen.gif的频谱');
colormap(gray);
subplot(2,2,4);
imshow(f2);title('高斯滤波平滑后的camen.gif(3x3)的频谱');
colormap(gray);
%%
%%
%高斯高通滤波
I=imread('camen.gif');
I=imnoise(I,'gaussian');
a=ffi(I);%%用函数ffi做归一化具体函数文件见附函数文件ffi
[N,M]=size(I);
figure;
subplot(2,2,1);
imshow(I)
title('源图像camen.gif');
subplot(222);
imshow(a)
title('源图像camen.gif频谱');
n1=3;sigma1=0.5;n2=3;sigma2=0.5;theta=0;
r=[cos(theta)-sin(theta);sin(theta) cos(theta)];
fori=1:
n2
forj=1:
n1
u=r*[j-(n1+1)/2i-(n2+1)/2]';
h(i,j)=exp(-u
(1)^2/(2*sigma1^2))/(sigma1*sqrt(2*pi))*exp(-u
(2)^2/(2*sigma2^2))/(sigma2*sqrt(2*pi));
end
end
h=h/sqrt(sum(sum(h.*h)));
f1=convn(I,h,'same');
f2=convn(a,h,'same');
t=ones(N,M);
t=f1;
fori=2:
N-1
forj=2:
M-1
f1(i,j)=t(i+1,j)+t(i-1,j)+t(i,j+1)+t(i,j-1)-4*t(i,j);
end
end
t1=ones(N,M);
t1=f2;
fori=2:
N-1
forj=2:
M-1
f2(i,j)=t1(i+1,j)+t1(i-1,j)+t1(i,j+1)+t1(i,j-1)-4*t1(i,j);
end
end
subplot(2,2,3);
imshow(f1);
title('高斯高通滤波后-camen.gif');
subplot(2,2,4);
imshow(f2)
title('高斯高通滤波后-camen.gif的频谱');
%%
%巴特沃斯低通滤波
I=imread('camen.gif');
I=imnoise(I,'gaussian');
figure;subplot(221);imshow(I);title('灰度图像');
f=double(I);
g=fft2(f);g=fftshift(g);
F2=log(abs(g));
subplot(222);imshow(F2,[],'InitialMagnification','fit');title('灰度图像频谱图');
colormap(jet);
%colorbar
[resultF3]=bartworL(g);%%用bartworL做滤波处理,具体函数见附函数bartworL
subplot(224);imshow(F3,[],'InitialMagnification','fit');title('巴特沃斯低通滤波后的灰度图像频谱');
colormap(jet);
%colorbar
result=ifftshift(result);
X2=ifft2(result);
X3=uint8(real(X2));
subplot(223);imshow(X3);title('巴特沃斯滤波后的灰度图像');
%%
%巴特沃斯高通滤波
I=imread('camen.gif');
I=imnoise(I,'gaussian');
subplot(221);imshow(I);title('灰度图像');
f=double(I);
g=fft2(f);
g=fftshift(g);
F2=log(abs(g));
subplot(222);imshow(F2,[],'InitialMagnification','fit');title('图像的频谱图');
colormap(jet);
%colorbar
[resultF3]=bartworH(g);%%用bartworH做滤波处理,具体函数见附函数bartworH
subplot(224);imshow(F3,[],'InitialMagnification','fit');title('巴特沃斯滤波后的频谱图');
colormap(jet);
%colorbar
result=ifftshift(result);
X2=ifft2(result);
X3=uint8(real(X2));
subplot(223);imshow(X3);title('巴特沃斯高通滤波后的图像');
%%
%理想低通滤波器
I=imread('camen.gif');
J=imnoise(I,'gaussian',0,0.02);
subplot(1,2,1);imshow(J);title('原图');
f=double(J);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
d0=100;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
if(d<=d0)
h=1;
elseh=0;
end
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
J1=ifft2(result);
J2=uint8(real(J1));
subplot(1,2,2);imshow(J2);title('理想低通滤波图像');
%%
%理想高通滤波器
I=imread('camen.gif');
J=imnoise(I,'gaussian',0,0.02);
subplot(1,2,1);imshow(J);title('原图');
f=double(J);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
d0=80;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
if(d>=d0)
h=1;
elseh=0;
end
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
J1=ifft2(result);
J2=uint8(real(J1));
subplot(1,2,2);imshow(J2);title('理想高通滤波图像');
附函数ffi
functiona=ffi(I)
%%
%傅里叶处理
fftI=fft2(I);%二维离散傅里叶变换
sfft=fftshift(fftI);%直流分量移到频谱中心
rr=real(sfft);%取傅里叶变换的实部
ii=i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 实验