用matlab程序实现同时对比度实验空间分辨率变化效果实验幅度分辨率变化效果.docx
《用matlab程序实现同时对比度实验空间分辨率变化效果实验幅度分辨率变化效果.docx》由会员分享,可在线阅读,更多相关《用matlab程序实现同时对比度实验空间分辨率变化效果实验幅度分辨率变化效果.docx(15页珍藏版)》请在冰豆网上搜索。
用matlab程序实现同时对比度实验空间分辨率变化效果实验幅度分辨率变化效果
作业1
1.用matlab程序实现同时对比度实验。
程序代码如下:
clear
m=256;
n=256;
ground_gray1=200;
X1=ones(m,n)*ground_gray1;
ground_gray2=100;
X2=ones(m,n)*ground_gray2;
before_gray=150;
m0=100;
n0=100;
step=50;
X1(m0:
m0+step,n0:
n0+step)=before_gray;
figure;
imshow(uint8(X1));
X2(m0:
m0+step,n0:
n0+step)=before_gray;
figure;
imshow(uint8(X2));
得到的图像如下:
2.用matlab程序实验空间分辨率变化效果。
程序代码如下:
clear
X=imread('picture1.jpg');
figure;
imshow(uint8(X));
[m,n]=size(X);
X1=X(1:
2:
m,1:
2:
n);
figure;
imshow(uint8(X1));
imwrite(X1,'picture1.jpg');
得到的图形如下
3.用matlab程序实验幅度分辨率变化效果.
程序代码如下:
clear
X=imread('picture1.jpg');
[mm,nn]=size(X);
fori=1:
mm
forj=1:
nn
X128(i,j)=2*(ceil(X(i,j)/2));
end
end
fori=1:
mm
forj=1:
nn
X64(i,j)=4*(ceil(X(i,j)/4));
end
end
fori=1:
mm
forj=1:
nn
X32(i,j)=8*(ceil(X(i,j)/8));
end
end
figure
subplot(2,2,1);
imshow(uint8(X));
title('256级');
subplot(2,2,2);
imshow(uint8(X128));
title('128级');
subplot(2,2,3);
imshow(uint8(X64));
title('64级');
subplot(2,2,4);
imshow(uint8(X32));
title('32级');
得到的图像如下
作业2
1.用matlab作出图像的直方图。
程序代码如下:
clear;
A=imread('picture2.jpg');
I=rgb2gray(A);
add=[];
tab1=zeros(1,256);
forn=0:
255;
X=I==n;
add=[add;sum(sum(X))];
end;
[a,b]=size(I);
final=add/(a*b);
figure;
stem(final,'Marker','none');
figure
(2);
imshow(I);
得到的图像如下
2.用matlab实现图像的直方图均衡化
程序代码如下:
clearall
m=imread('picture2.jpg');
A=rgb2gray(m);
[m,n]=size(A);
B=zeros(size(A));
l=m*n;
r=zeros(1,256);
y=zeros(1,256);
A=double(A);
fori=1:
m
forj=1:
n
r(A(i,j)+1)=r(A(i,j)+1)+1;
end
end
r=r./l;
fork=1:
256
forj=1:
k
y(k)=y(k)+r(j);
end
end
fork=1:
256
y(k)=floor(255*y(k)+0.5);end
fori=1:
m
forj=1:
n
B(i,j)=y(A(i,j)+1);
end
end
A=uint8(A);
B=uint8(B);
subplot(2,2,1)
imshow(A)
title('原图像')
subplot(2,2,2)
imhist(A)
title('原图像的直方图')
subplot(2,2,3)
imshow(B)
title('经过均衡处理的图像')
subplot(2,2,4)
imhist(B)
title('经过均衡处理后该图像的直方图')
得到的图像如下
作业3
1.用matlab实现多幅图像平均去高斯白噪声。
程序代码如下:
clear;
A=imread('picture2.jpg');
I=rgb2gray(A);
imshow(I);
[a,b]=size(I);
noise=randn(a,b)*30;
X=double(I)+noise;
Y=zeros(a,b);
figure
(2);
imshow(uint8(X));
forn=1:
30
noise=randn(a,b)*30;
X=double(I)+noise;
Y=Y+double(X);
end;
Y=Y/n;
figure(3);
imshow(uint8(Y))
得到的图像如下:
原图
加了高斯白噪声的图像:
去噪后的图像:
2.用matlab实现均值滤波去除高斯白噪声.
程序代码如下:
clear;
A=imread('picture2.jpg');
I=rgb2gray(A);
figure;
imshow(I);
[a,b]=size(I);
noise=randn(a,b)*30;
I=double(I)+noise;
I2=zeros(a+2,b+2);
I3=zeros(a,b);
forn=1:
a
form=1:
b
I2(n+1,m+1)=I(n,m);
end;
end;
figure
(2);
imshow(uint8(I2));
forn=2:
a
form=2:
b
I3(n-1,m-1)=[I2(n-1,m-1)+I2(n-1,m)+I2(n-1,m+1)+I2(n,m-1)+I2(n,m)+I2(n,m+1)+I2(n+1,m-1)+I2(n+1,m)+I2(n+1,m+1)]/9;
end;
end;
figure(3);
imshow(uint8(I3));
得到的图像如下:
原图
加高斯白噪声图像
均值滤波去噪后图像
3.用matlab实现中值滤波去除脉冲噪声。
程序代码如下:
clear;
A=imread('picture2.jpg');
I=rgb2gray(A);
figure
(1);
imshow(I);
X=zeros(1:
9);
[a,b]=size(I);
Y=zeros(a+2,b+2);
Z=zeros(a,b);
forn=1:
a
form=1:
b
Y(n+1,m+1)=I(n,m);
end;
end;
forn=0:
100
Y(round(rand*a),round(rand*b))=0;
end;
forn=0:
200
Y(round(rand*a),round(rand*b))=255;
end;
figure
(2)
imshow(uint8(Y));
Y=double(Y);
forn=2:
a
form=2:
b
X=[Y(n-1,m-1),Y(n-1,m),Y(n-1,m+1),Y(n,m-1),Y(n,m),Y(n,m+1),Y(n+1,m-1),Y(n+1,m),
Y(n+1,m+10)];
X=sort(X);
Z(n-1,m-1)=X(5);
end;
end;
figure(3);
imshow(uint8(I));
得到图像如下:
原图
加脉冲噪声后图像
中值滤波去噪后图像