大连理工数字图像处理作业.docx
《大连理工数字图像处理作业.docx》由会员分享,可在线阅读,更多相关《大连理工数字图像处理作业.docx(16页珍藏版)》请在冰豆网上搜索。
大连理工数字图像处理作业
数字图像作业
陈柯锦电子1102201181442
4-4
代码:
a=[7,6,5,4,-4,-5,-6,-7];
b=[2,2,-5,-5,6,6,-7,-7];
subplot(211);
stem(a);
subplot(212);
stem(b);
figure;
N=8;
a1=[azeros(1,N-length(a))];
b1=[bzeros(1,N-length(a))];
y1=conv(a1,b1);
z1=[zeros(1,N)y1(1:
(N-1))];
z2=[y1((N+1):
(2*N-1))zeros(1,N)];
z=z1(1:
(2*N-1))+z2(1:
(2*N-1))+y1(1:
(2*N-1));
y2=z(1:
N);
stem((0:
N-1),y2,'.');
C=fft(y2);
C1=fft(a).*fft(b);
all(C(:
)==C1(:
));
圆周卷积函数:
functiony=yuanzhou(x1,x2,N)
x1=[x1,zeros(1,N-length(x1))];
x2=[x2,zeros(1,N-length(x2))];
m=0:
1:
N-1;
H=zeros(N,N);
forn=1:
1:
N
H(n,:
)=cirshift(x2,n-1,N);
end
y=x1*H';
end
结果:
4-9
代码:
t1=imread('Lena.tif');
t=rgb2gray(t1);
imshow(t),title('原图像');
[a,b]=size(t);
[x,y]=meshgrid(-a/2:
a/2-1,-b/2:
b/2-1);
z=sqrt(x.^2+y.^2);
c=(z<15);
tf=fftshift(fft2(t));
figure;
imshow(mat2gray(log(1+abs(tf))));
title('原图频域表示');
tf1=tf.*c;
figure;
ty2=ifft2(tf1);
imshow(abs(ty2),[]),title('低通滤波之后图像');
c1=(z>15);
tf2=tf.*c1;
ty3=ifft2(tf2);
figure;
imshow(abs(ty3),[]),title('高通滤波之后图像');
g1=mat2gray(fspecial('gaussian',512,10));
tf3=tf.*g1;
ty4=ifft2(tf3);
figure;
imshow(abs(ty4),[]),title('高斯低通滤波器滤波之后图像');
bl=lbutter(c,15,1);
tfbl=tf.*bl;
ty5=ifft2(tfbl);
figure;
imshow(abs(ty5),[]),title('巴特沃兹低通滤波之后图像');
巴特沃兹滤波器函数设计:
functionout=lbutter(im,d,n)
height=size(im,1);
width=size(im,2);
[x,y]=meshgrid(-floor(width/2):
floor((width-1)/2),-floor(height/2):
...
floor((height-1)/2));
out=1./(1+(sqrt
(2)-1)*((x.^2+y.^2)/d^2).^n);
结果
5-6
代码:
f=imread('Lena.tif');
fg=rgb2gray(f);
tn=imnoise(fg,'salt&pepper',0.05);
imshow(tn,[]),title('原图像');
a1=fspecial('average');
tna1=filter2(a1,tn);
figure;
imshow(tna1,[]),title('均值滤波之后图像');
tnz=medfilt2(tn,[3,3]);
figure;
imshow(tnz),title('中值滤波之后图像');
tnout=outlier(tn,0.2);
figure;
imshow(tnout,[]),title('异常值判断滤波之后D=0.2');
tnord=ordfilt2(tn,3,[010;111;010]);
figure;
imshow(tnord,[]),title('伪中值滤波之后图像');
伪中值滤波函数:
functionres=outlier(im,d)
f=[0.1250.1250.125;0.12500.125;0.1250.1250.125];
imd=im2double(im);
imf=filter2(f,imd);
r=abs(imd-imf)-d>0;
res=im2uint8(r.*imf+(1-r).*imd
结果:
6-2
代码:
t=imread('1.tif');
[a,b]=size(t);
[x,y]=meshgrid(1:
a,1:
b);
s1=1+sin(x/3+y/5);
s2=1+sin(x/5+y/1.5);
s3=1+sin(x/6+y/6);
ts1=(im2double(t)+s1/2)/2;
ts2=(im2double(t)+s2/2)/2;
ts3=(im2double(t)+s3/2)/2;
tps1=fftshift(fft2(ts1));
imshow(log(abs(tps1)),[]),title('a组加噪声之后频域图'),impixelinfo;
figure;
imshow(abs(ifft2(tps1)),[]),title('原图像')
tps1(:
114:
116)=0;%(中心位置115,120;143,138)
tps1(:
142:
144)=0;
tps1(119:
121,:
)=0;
tps1(137:
139,:
)=0;
tps1_1=ifft2(tps1);
figure;
imshow(abs(tps1_1),[]),title('a组噪声在陷波滤波器滤波之后结果');
tps2=fftshift(fft2(ts2));
figure;
imshow(log(abs(tps2)),[]),title('b组加噪声之后频域图'),impixelinfo;
tps2(:
119:
121)=0;%(中心位置120,102;137,156)
tps2(:
136:
138)=0;
tps2(101:
103,:
)=0;
tps2(155:
157,:
)=0;
tps1_2=ifft2(tps2);
figure;
imshow(abs(tps1_2),[]),title('b组噪声在陷波滤波器滤波之后结果');
tps3=fftshift(fft2(ts3));
figure;
imshow(log(abs(tps3)),[]),title('c组加噪声之后频域图'),impixelinfo;
tps3(:
121:
123)=0;%(中心位置122,122;136,136
tps3(:
135:
137)=0;
tps3(121:
123,:
)=0;
tps3(135:
137,:
)=0;
tps1_3=ifft2(tps3);
figure;
imshow(abs(tps1_3),[]),title('c组噪声在陷波滤波器滤波之后结果')
结果:
7-7
代码:
t=imread('circles.tif');
[x,y]=meshgrid(1:
256,1:
256);
t2=double(t).*((x+y)/2+64)+x+y;
t3=uint8(255*mat2gray(t2));
fun=inline('im2bw(x,graythresh(x))');
[a,b]=size(t3);
img1=blkproc(t3,[a/2,b/2],fun);
subplot(221);
imshow(img1,[]),title('分块矩阵大小[a/2,b/2]');
img2=blkproc(t3,[a/4,b/4],fun);
subplot(222);
imshow(img2,[]),title('分块矩阵大小[a/4,b/4]');
img3=blkproc(t3,[a/8,b/8],fun);
subplot(223);
imshow(img3,[]),title('分块矩阵大小[a/8,b/8]');
img4=blkproc(t3,[a/16,b/16],fun);
subplot(224);
imshow(img4,[]),title('分块矩阵大小[a/16,b/16]');
结果:
8-6
代码:
t=imread('Lena.tif');
t=rgb2gray(t);
t1=imnoise(t,'salt&pepper',0.1);
t2=imnoise(t,'gaussian',0,0.02);
tu1=edge(t1,'sobel');
tu2=edge(t1,'roberts');
tu3=edge(t1,'prewitt');
tu4=edge(t1,'log');
tu5=edge(t1,'canny',[0.01,0.5]);
%subplot(211);
imshow(im2bw(tu1,graythresh(double(tu1)))),title('加椒盐噪声后sobel函数边缘处理之后');
%subplot(212);
%imshow(tu1);
figure;
imshow(im2bw(tu2,graythresh(double(tu2)))),title('加椒盐噪声后roberts函数边缘处理之后');
figure;
imshow(im2bw(tu3,graythresh(double(tu3)))),title('加椒盐噪声后prewitt函数边缘处理之后');
figure;
imshow(im2bw(tu4,graythresh(double(tu4)))),title('加椒盐噪声后log函数边缘处理之后');
figure;
imshow(im2bw(tu5,graythresh(double(tu5)))),title('加椒盐噪声后canny函数边缘处理之后');
tu21=edge(t2,'sobel');
tu22=edge(t2,'roberts');
tu23=edge(t2,'prewitt');
tu24=edge(t2,'log');
tu25=edge(t2,'canny',[0.01,0.5]);
figure;
imshow(im2bw(tu21,graythresh(double(tu21)))),title('加高斯噪声后sobel函数边缘处理之后');
figure;
imshow(im2bw(tu22,graythresh(double(tu22)))),title('加高斯噪声后roberts函数边缘处理之后');
figure;
imshow(im2bw(tu23,graythresh(double(tu23)))),title('加高斯噪声后prewitt函数边缘处理之后');
figure;
imshow(im2bw(tu24,gr