图像处理电子科大作业.docx

上传人:b****5 文档编号:29825120 上传时间:2023-07-27 格式:DOCX 页数:24 大小:21.63KB
下载 相关 举报
图像处理电子科大作业.docx_第1页
第1页 / 共24页
图像处理电子科大作业.docx_第2页
第2页 / 共24页
图像处理电子科大作业.docx_第3页
第3页 / 共24页
图像处理电子科大作业.docx_第4页
第4页 / 共24页
图像处理电子科大作业.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

图像处理电子科大作业.docx

《图像处理电子科大作业.docx》由会员分享,可在线阅读,更多相关《图像处理电子科大作业.docx(24页珍藏版)》请在冰豆网上搜索。

图像处理电子科大作业.docx

图像处理电子科大作业

第一次作业

(a)如果将低阶比特面设为零值,该图像会丢失细节。

即不同灰度值的像素个数将减少,这会导致直方图的成分数减少。

由于像素个数不会改变,这将在总体上导致直方图峰值高度上升。

通常,较低的灰度值变化将减少对比度。

(b)如果将高阶比特面设为零值,该图像会丢失轮廓,即丢失视觉上的很多数据。

最明显的影响是使图像非常模糊,根据灰度变换函数,将0~127之间的所有灰度映射为0,下降的最高位将限制到127的8位图像中最亮的水平。

由于像素

数将保持不变,一些直方图峰值的高度会增加。

一般直方图的形状将更高更窄,过去127没有直方图组件。

(a)如果这个象素块中的点都比背景亮,即对度大于背景,在n×n的中值滤波器中,和背景的象素一起排序时,因为它的面积小于一半,则可以肯定它们都比排在第(n×n+1)/2的象素要亮,所以没有机会被选中,都会被滤掉.对于暗的象素块,情况类似.

(b)如果两个象素块足够接近,而且又同时都大于或者都小于背景的灰度,那么在进行中值滤波的时候,这些象素块中的点将会有机会被选为中值.在这种情况下,这些象素块将无法被滤掉,也就是不再被认为是单独的.我们假设象素块是正方形的,大小为n×n一半.它们的边长为sqrt

(2)/2*n,离滤波器的最大边界距离[1-sqrt

(2)/2]*n,所以这些块单独存在的条件是它们之间的距离大于[1-sqrt

(2)/2]*n.

滤波后的图像是否存在清晰的间隔取决于象素间是否有明显的灰度差异.如下图所示,分别代表了三个尺度的滤波器的情况.其中每个尺度滤波器的上下两个方框表示了计算相邻象素点的灰度时所用到的邻域.b中的滤波器所产生的图像之所以完全混在了一起,是因为它的滤波器的尺度恰好是原图像周期的整数倍.这意位着当所计算的象素向右边移动时,计算所涉及到的邻域把最左边的一列象素去掉了,而右边加入了一列新的象素.因为邻域的大小为周期的整数倍,所以左边所去掉的象素灰度值和右边所加入的灰度值是相等的,所以邻域内的灰度平均值没有变化,计算所得的灰度值也没有变化,整个部分混在了一起.而对于a和c来说,当所计算的象素向右移动时,邻域的最左边去掉了一行黑色的象素,右边加入了一行白色的象素,因此在这个时候,邻域内象素的平均值增大,计算所得的象素点变亮.从而产生了间隔的区域.

课后编程:

1绘制出一幅2M×2N的灰度图像直方图;对该图像进行均衡化处理,

绘制出均衡后图像的直方图;对该图像进行灰度变换,使变换后的图像

大致具有如下图所示的归一化直方图,并绘制出变换后实际的直方图:

代码:

%直方图均衡化

I=imread('C:

\');

[height,width]=size(I);

figure

subplot(221)

imshow(I)%显示原始图像

subplot(222)

imhist(I)%显示原始图像直方图

%进行像素灰度统计;

NumPixel=zeros(1,256);%统计各灰度数目,共256个灰度级

fori=1:

height

forj=1:

width

NumPixel(I(i,j)+1)=NumPixel(I(i,j)+1)+1;%对应灰度值像素点数量增加一

end

end

%计算灰度分布密度

ProbPixel=zeros(1,256);

fori=1:

256

ProbPixel(i)=NumPixel(i)/(height*width*;

end

%计算累计直方图分布

CumuPixel=zeros(1,256);

fori=1:

256

ifi==1

CumuPixel(i)=ProbPixel(i);

else

CumuPixel(i)=CumuPixel(i-1)+ProbPixel(i);

end

end

%累计分布取整

CumuPixel=uint8(255.*CumuPixel+;

%对灰度值进行映射(均衡化)

fori=1:

height

forj=1:

width

I(i,j)=CumuPixel(I(i,j));

end

end

subplot(223)

imshow(I)%显示原始图像

subplot(224)

imhist(I)%显示原始图像直方图

截图:

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

end

clc,clf,clearall;

pic=imread('C:

\');

data=rgb2gray(pic);

P1=imnoise(data,'gaussian',;

P2=imnoise(data,'salt&pepper',;

figure;

subplot(3,1,1);imshow(data);title('原图');

subplot(3,1,2);imshow(P1);title('高斯加噪');

subplot(3,1,3);imshow(P2);title('椒盐加噪');

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

subplot(3,1,1);imshow(k1);title(['原图中值滤波''psnr:

'num2str(r1)]);

subplot(3,1,2);imshow(k2);title(['高斯加噪中值滤波''psnr:

'num2str(r2)]);

subplot(3,1,3);imshow(k3);title(['椒盐加噪中值滤波''psnr:

'num2str(r3)]);

figure;

d1=filter2(fspecial('average',3),data)/255;

d2=filter2(fspecial('average',3),P1)/255;

d3=filter2(fspecial('average',3),P2)/255;

r1=PSNR(data,d1);

r2=PSNR(data,d2);

r3=PSNR(data,d3);

subplot(3,1,1);imshow(d1);title(['原图均值滤波''psnr:

'num2str(r1)]);

subplot(3,1,2);imshow(d2);title(['高斯加噪均值滤波''psnr:

'num2str(r2)]);

subplot(3,1,3);imshow(d3);title(['椒盐加噪均值滤波''psnr:

'num2str(r3)]);

截图:

clear;

clc;

Data=imread('C:

\Users\Administrator\Desktop\');

DataGray=rgb2gray(Data);

figure

(1),imshow(Data);

title('

原始图像

');

%**************

计算并画出此图像的中心化频率谱

*************

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;

forj=1:

n

distance=sqrt((i-x_center)^2+(j-y_center)^2);

ifdistance<=d

flag=1;

else

flag=0;

end

LF(i,j)=flag*FFTcenter(i,j);

end

end

%

逆变换转换成对应图像

LF=uint8(real(ifft2(ifftshift(LF))));

figure(3),subplot(1,2,1);imshow(LF);

title('

低通滤波后图像

');

%**************

高通滤波器

*************

fori=1:

m;

forj=1:

n

distance=sqrt((i-x_center)^2+(j-y_center)^2);

ifdistance>d

flag=1;

else

flag=0;

end

HF(i,j)=flag*FFTcenter(i,j);

end

end

HF=uint8(real(ifft2(ifftshift(HF))));

subplot(1,2,2),imshow(HF);title('

高通滤波后图像

');

%*****************

用拉普拉斯算子对此图像锐化

*************

Laplace=[0

-1

0;-1

4

-1;0

-1

0];

LaplaceImage=conv2(Data1,Laplace,'same');

figure(4),subplot(1,2,1);

imshow(uint8(LaplaceImage));

title('Laplace

图像

');

DataLap=imadd(Data1,immultiply(LaplaceImage,1));%

原图像与拉普拉斯图像叠加

subplot(1,2,2),imshow(uint8(DataLap));

title('

锐化增强后的图像

');

第二次作业

课后编程:

对一幅灰度图像:

(1)计算并画出此图像的中心化频率谱。

(2)分别用高斯低通和高斯高通滤波器对图像进行频域处理。

(3)用频域拉普拉斯算子对此图像进行锐化处理。

代码:

clear;

clc;

Data=imread('C:

\');

DataGray=rgb2gray(Data);

figure

(1),imshow(Data);

title('原始图像');

%**************计算并画出此图像的中心化频率谱*************

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;

forj=1:

n

distance=sqrt((i-x_center)^2+(j-y_center)^2);

ifdistance<=d

flag=1;

else

flag=0;

end

LF(i,j)=flag*FFTcenter(i,j);

end

end

%逆变换转换成对应图像

LF=uint8(real(ifft2(ifftshift(LF))));

figure(3),subplot(1,2,1);imshow(LF);

title('低通滤波后图像');

%**************高通滤波器*************

fori=1:

m;

forj=1:

n

distance=sqrt((i-x_center)^2+(j-y_center)^2);

ifdistance>d

flag=1;

else

flag=0;

end

HF(i,j)=flag*FFTcenter(i,j);

end

end

HF=uint8(real(ifft2(ifftshift(HF))));

subplot(1,2,2),imshow(HF);title('高通滤波后图像');

%*****************用拉普拉斯算子对此图像锐化*************

Laplace=[0-10;-14-1;0-10];

LaplaceImage=conv2(Data1,Laplace,'same');

figure(4),subplot(1,2,1);

imshow(uint8(LaplaceImage));

title('Laplace图像');

DataLap=imadd(Data1,immultiply(LaplaceImage,1));%原图像与拉普拉斯图像叠加

subplot(1,2,2),imshow(uint8(DataLap));

title('锐化增强后的图像');

截图:

第三次作业

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

函数(自适应中值滤波函数):

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

%若中值既大于最小值又小于最大值,则不是

%是,则退出该if语句,增大窗口尺寸,再次判断

%不是,则判断该点的原值是不是噪声点

ifImf(x,y)<=Smin||Imf(x,y)>=Smax

%若该点的原值既大于最小值又小于最大值,则不是

%不是,则输出原值,即不作处理

%是,则输出中值

Imf(x,y)=Smed;

end

break

%有输出则不再进行循环判断

end

end

%当n=max时,输出中值

Imf(x,y)=Smed;

end

end

f=Imf

3.其他代码:

I=imread('C:

\');

figure;

subplot(2,3,1);

imshow(I),title('原图');

subplot(2,3,4)

imhist(I),title('原图直方图')%显示原始图像直方图

%椒盐噪声

J=imnoise(I,'salt&pepper',;

subplot(2,3,2);

imshow(J),title('椒盐噪声');

subplot(2,3,5)

imhist(J),title('椒盐直方图')%显示椒盐图像直方图

%高斯噪声

G=imnoise(I,'gaussian',,;

subplot(2,3,3);

imshow(G);title('高斯噪声');

subplot(2,3,6)

imhist(G),title('高斯直方图')%显示高斯图像直方图

figure

I_1=gmean(I,3,3);

subplot(3,1,1)

imshow(I_1);title('原图几何滤波');

J_1=gmean(J,3,3);

subplot(3,1,2)

imshow(J_1);title('椒盐几何滤波');

G_1=gmean(G,3,3);

subplot(3,1,3)

imshow(G_1);title('高斯几何滤波');

figure

I_2=RAMF(I);

subplot(3,1,1)

imshow(I_2);title('原图自适应中值滤波');

J_2=RAMF(J);

subplot(3,1,2)

imshow(J_2);title('椒盐自适应中值滤波');

G_2=RAMF(G);

subplot(3,1,3)

imshow(G_2);title('高斯自适应中值滤波');

截图:

第六章作业

课后MATLAB编程练习

(1)任意选择一幅RGB彩色图像,分别提取R、G、B分量,

并分别显示各分量的灰度图像。

(2)将上述图像转化为HSI模型,分别显示H、S、I分量的

灰度图像。

(3)任意读取一幅8bit红外灰度图像,对其进行伪彩色处

理,结果应突出感兴趣区域。

(1)

(2)代码:

I=imread('C:

\');

I=im2double(I);

r=I(:

:

1);

g=I(:

:

2);

b=I(:

:

3);

figure

(1);

subplot(221);

imshow(I);title('原始图像');

subplot(222);

imshow(r);title('红色分量图像');

subplot(223);

imshow(g);title('绿色分量图像');

subplot(224);

imshow(b);title('蓝色分量图像');

num=*((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);

figure

subplot(221);

imshow(hsi);title('HSI图像');

subplot(222);

imshow(H);title('H分量图像');

subplot(223);

imshow(S);title('S分量图像');

subplot(224);

imshow(I);title('I分量图像');

程序运行结果:

(3)代码:

I=imread('c:

\');

I=double(I);

[m,n]=size(I);

c=256;

fori=1:

m

forj=1:

n

ifI(i,j)<=c/4

R(i,j)=0;

G(i,j)=4*I(i,j);

B(i,j)=c;

elseifI(i,j)<=c/2

R(i,j)=0;

G(i,j)=c;

B(i,j)=-4*I(i,j)+2*c;

elseifI(i,j)<=3*c/4

R(i

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

当前位置:首页 > 工程科技 > 城乡园林规划

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

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