图像处理电子科大作业Word格式文档下载.docx
《图像处理电子科大作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图像处理电子科大作业Word格式文档下载.docx(36页珍藏版)》请在冰点文库上搜索。
forj=1:
width
NumPixel(I(i,j)+1)=NumPixel(I(i,j)+1)+1;
%对应灰度值像素点数量增加一
end
end
%计算灰度分布密度
ProbPixel=zeros(1,256);
256
ProbPixel(i)=NumPixel(i)/(height*width*1.0);
%计算累计直方图分布
CumuPixel=zeros(1,256);
ifi==1
CumuPixel(i)=ProbPixel(i);
else
CumuPixel(i)=CumuPixel(i-1)+ProbPixel(i);
%累计分布取整
CumuPixel=uint8(255.*CumuPixel+0.5);
%对灰度值进行映射(均衡化)
I(i,j)=CumuPixel(I(i,j));
subplot(223)
subplot(224)
截图:
2分别在2幅灰度图像中加入一定量的高斯噪声和椒盐噪声,噪声强
度自定。
然后采用3×
3的均值滤波器和3×
3中值滤波器分别对噪声图像
进行处理,给出两种处理方法的峰值信噪比(PSNR)。
functionz=PSNR(x,y)%calculatePSNRofimage
[M,N]=size(x);
dx=im2double(x);
dy=im2double(y);
err=dx-dy;
MSE=sum(sum(err.^2))/(M*N);
%meansquareerror
z=10*log10(255^2/MSE);
clc,clf,clearall;
pic=imread('
\image5.jpg'
data=rgb2gray(pic);
P1=imnoise(data,'
gaussian'
0.02);
P2=imnoise(data,'
salt&
pepper'
figure;
subplot(3,1,1);
imshow(data);
title('
原图'
subplot(3,1,2);
imshow(P1);
高斯加噪'
subplot(3,1,3);
imshow(P2);
椒盐加噪'
figure;
k1=medfilt2(data,[33]);
k2=medfilt2(P1,[33]);
k3=medfilt2(P2,[33]);
r1=PSNR(data,k1);
r2=PSNR(data,k2);
r3=PSNR(data,k3);
imshow(k1);
title(['
原图中值滤波'
'
psnr:
'
num2str(r1)]);
imshow(k2);
高斯加噪中值滤波'
num2str(r2)]);
imshow(k3);
椒盐加噪中值滤波'
num2str(r3)]);
d1=filter2(fspecial('
average'
3),data)/255;
d2=filter2(fspecial('
3),P1)/255;
d3=filter2(fspecial('
3),P2)/255;
r1=PSNR(data,d1);
r2=PSNR(data,d2);
r3=PSNR(data,d3);
imshow(d1);
原图均值滤波'
imshow(d2);
高斯加噪均值滤波'
imshow(d3);
椒盐加噪均值滤波'
clear;
clc;
Data=imread('
\Users\Administrator\Desktop\ex.JPG'
DataGray=rgb2gray(Data);
figure
(1),imshow(Data);
原始图像
%**************
计算并画出此图像的中心化频率谱
*************
Data1=double(DataGray);
FFT2=fft2(Data1);
FFTcenter=fftshift(FFT2);
%
频谱中心化
FFT2abs=abs(FFT2);
FFTresult=256*log2(FFT2abs/max(max(FFT2abs))+1);
figure
(2),subplot(1,2,1);
imshow(FFTresult),title('
原图频谱
FFTc_abs=abs(FFTcenter);
FFTc_result=256*log2(FFTc_abs/max(max(FFTc_abs))+1);
subplot(1,2,2);
imshow(FFTc_result),title('
中心化频谱
%*******
分别用低通滤波和高通滤波对此图像进行频域处理
****
[m,n]=size(FFTcenter);
x_center=round(m/2);
y_center=round(n/2);
d=10;
半径取
10
LF=FFTcenter;
HF=FFTcenter;
低通滤波器
fori=1:
m;
for
j=1:
n
distance=sqrt((i-x_center)^2+(j-y_center)^2);
if
distance<
=d
flag=1;
else
flag=0;
end
LF(i,j)=flag*FFTcenter(i,j);
逆变换转换成对应图像
LF=uint8(real(ifft2(ifftshift(LF))));
figure(3),subplot(1,2,1);
imshow(LF);
低通滤波后图像
高通滤波器
distance>
d
HF(i,j)=flag*FFTcenter(i,j);
HF=uint8(real(ifft2(ifftshift(HF))));
subplot(1,2,2),imshow(HF);
高通滤波后图像
%*****************
用拉普拉斯算子对此图像锐化
Laplace=[0
-1
0;
4
-1;
0
];
LaplaceImage=conv2(Data1,Laplace,'
same'
figure(4),subplot(1,2,1);
imshow(uint8(LaplaceImage));
Laplace
图像
DataLap=imadd(Data1,immultiply(LaplaceImage,1));
原图像与拉普拉斯图像叠加
subplot(1,2,2),imshow(uint8(DataLap));
锐化增强后的图像
第二次作业
对一幅灰度图像:
(1)计算并画出此图像的中心化频率谱。
(2)分别用高斯低通和高斯高通滤波器对图像进行频域处理。
(3)用频域拉普拉斯算子对此图像进行锐化处理。
\Pdog.JPG'
原始图像'
%**************计算并画出此图像的中心化频率谱*************
%频谱中心化
原图频谱'
中心化频谱'
%*******分别用低通滤波和高通滤波对此图像进行频域处理****
%半径取
10
%**************低通滤波器*************
fori=1:
forj=1:
n
ifdistance<
=d
else
end
%逆变换转换成对应图像
低通滤波后图像'
%**************高通滤波器*************
ifdistance>
d
高通滤波后图像'
%*****************用拉普拉斯算子对此图像锐化*************
Laplace=[0-10;
-14-1;
0-10];
Laplace图像'
%原图像与拉普拉斯图像叠加
锐化增强后的图像'
第三次作业
课后MATLAB编程练习
对一幅灰度图像f(x,y):
(1)对f(x,y)加高斯白噪声和椒盐噪声;
(2)分别画出原图和加噪后的图像及其各自对应的直方图;
(3)用几何均值滤波分别对加高斯噪声和椒盐噪声图进行滤波处
理,并进行比较;
(4)用自适应中值滤波分别对加高斯噪声和椒盐噪声图进行滤波
处理;
并进行比较。
注:
滤波窗口可根据需要自行设定。
1.gmean函数(几何均值滤波):
functionf=gmean(g,m,n)
%Implementsageometricmeanfilter.
inclass=class(g);
g=im2double(g);
%Disablelog(0)warning
warningoff;
f=exp(imfilter(log(g),ones(m,n),'
replicate'
)).^(1/m/n);
warningon;
f=changeclass(inclass,f);
2.RAMF函数(自适应中值滤波函数):
functionf=RAMF(img)
[Im,In]=size(img);
nmin=3;
nmax=9;
Imf=img;
I_ex=[zeros((nmax-1)/2,In+(nmax-1));
zeros(Im,(nmax-1)/2),img,zeros(Im,(nmax-1)/2);
zeros((nmax-1)/2,In+(nmax-1))];
forx=1:
Im
fory=1:
In
forn=nmin:
2:
nmax
%图像Inoise中的某点(x,y)的领域Sxy,对应在I_ex中为(x+[(nmax-1)/2-(n-1)/2]:
x+[(nmax-1)/2-(n-1)/2]+(n-1),y+(nmax-1)/2-(n-1)/2:
y+[(nmax-1)/2-(n-1)/2]+(n-1))
Sxy=I_ex(x+(nmax-1)/2-(n-1)/2:
x+(nmax-1)/2+(n-1)/2,y+(nmax-1)/2-(n-1)/2:
y+(nmax-1)/2+(n-1)/2);
Smax=max(max(Sxy));
%求出窗口内像素的最大值
Smin=min(min(Sxy));
%求出窗口内像素的最小值
Smed=median(median(Sxy));
%求出窗口内像素的中值
%判断中值是否是噪声点
ifSmed>
Smin&
&
Smed<
Smax
%若中值既大于最小值又小于最大值,则不是
%是,则退出该if语句,增大窗口尺寸,再次判断
%不是,则判断该点的原值是不是噪声点
ifImf(x,y)<
=Smin||Imf(x,y)>
=Smax
%若该点的原值既大于最小值又小于最大值,则不是
%不是,则输出原值,即不作处理
%是,则输出中值
Imf(x,y)=Smed;
break
%有输出则不再进行循环判断
%当n=max时,输出中值
f=Imf
3.其他代码:
I=imread('
\lena.jpg'
subplot(2,3,1);
imshow(I),title('
subplot(2,3,4)
imhist(I),title('
原图直方图'
)%显示原始图像直方图
%椒盐噪声
J=imnoise(I,'
0.02);
subplot(2,3,2);
imshow(J),title('
椒盐噪声'
subplot(2,3,5)
imhist(J),title('
椒盐直方图'
)%显示椒盐图像直方图
%高斯噪声
G=imnoise(I,'
0.02,0.02);
subplot(2,3,3);
imshow(G);
高斯噪声'
subplot(2,3,6)
imhist(G),title('
高斯直方图'
)%显示高斯图像直方图
I_1=gmean(I,3,3);
subplot(3,1,1)
imshow(I_1);
原图几何滤波'
J_1=gmean(J,3,3);
subplot(3,1,2)
imshow(J_1);
椒盐几何滤波'
G_1=gmean(G,3,3);
subplot(3,1,3)
imshow(G_1);
高斯几何滤波'
I_2=RAMF(I);
imshow(I_2);
原图自适应中值滤波'
J_2=RAMF(J);
imshow(J_2);
椒盐自适应中值滤波'
G_2=RAMF(G);
imshow(G_2);
高斯自适应中值滤波'
第六章作业
(1)任意选择一幅RGB彩色图像,分别提取R、G、B分量,
并分别显示各分量的灰度图像。
(2)将上述图像转化为HSI模型,分别显示H、S、I分量的
灰度图像。
(3)任意读取一幅8bit红外灰度图像,对其进行伪彩色处
理,结果应突出感兴趣区域。
(1)
(2)代码:
\Mountain.jpg'
I=im2double(I);
r=I(:
:
1);
g=I(:
2);
b=I(:
3);
figure
(1);
subplot(221);
imshow(I);
subplot(222);
imshow(r);
红色分量图像'
subplot(223);
imshow(g);
绿色分量图像'
subplot(224);
imshow(b);
蓝色分量图像'
num=0.5*((r-g)+(r-b));
den=sqrt((r-g).^2+(r-b).*(g-b));
theta=acos(num./(den+eps));
H=theta;
H(b>
g)=2*pi-H(b>
g);
H=H/(2*pi);
num=min(min(r,g),b);
den=r+g+b;
den(den==0)=eps;
S=1-3.*num./den;
H(S==0)=0;
I=(r+g+b)/3;
%Combineallthreeresultsintoanhsiimage.
hsi=cat(3,H,S,I);
imshow(hsi);
HSI图像'
imshow(H);
H分量图像'
imshow(S);
S分量图像'
im