1、图像处理电子科大作业第一次作业3.5 (a)如果将低阶比特面设为零值,该图像会丢失细节。即不同灰度值的像素个数将减少,这会导致直方图的成分数减少。由于像素个数不会改变,这将在总体上导致直方图峰值高度上升。通常,较低的灰度值变化将减少对比度。(b)如果将高阶比特面设为零值,该图像会丢失轮廓,即丢失视觉上的很多数据。最明显的影响是使图像非常模糊,根据灰度变换函数,将0127之间的所有灰度映射为0,下降的最高位将限制到127的8位图像中最亮的水平。由于像素数将保持不变,一些直方图峰值的高度会增加。一般直方图的形状将更高更窄,过去127没有直方图组件。3.18 (a)如果这个象素块中的点都比背景亮,
2、即对度大于背景, 在n的中值滤波器中, 和背景的象素一起排序时, 因为它的面积小于一半, 则可以肯定它们都比排在第(n+1)/2的象素要亮, 所以没有机会被选中, 都会被滤掉. 对于暗的象素块, 情况类似. (b) 如果两个象素块足够接近, 而且又同时都大于或者都小于背景的灰度, 那么在进行中值滤波的时候, 这些象素块中的点将会有机会被选为中值. 在这种情况下, 这些象素块将无法被滤掉, 也就是不再被认为是单独的. 我们假设象素块是正方形的,大小为n一半. 它们的边长为sqrt(2)/2*n,离滤波器的最大边界距离1-sqrt(2)/2*n, 所以这些块单独存在的条件是它们之间的距离大于1-s
3、qrt(2)/2*n.3.21滤波后的图像是否存在清晰的间隔取决于象素间是否有明显的灰度差异. 如下图所示, 分别代表了三个尺度的滤波器的情况. 其中每个尺度滤波器的上下两个方框表示了计算相邻象素点的灰度时所用到的邻域. b中的滤波器所产生的图像之所以完全混在了一起, 是因为它的滤波器的尺度恰好是原图像周期的整数倍. 这意位着当所计算的象素向右边移动时, 计算所涉及到的邻域把最左边的一列象素去掉了, 而右边加入了一列新的象素. 因为邻域的大小为周期的整数倍, 所以左边所去掉的象素灰度值和右边所加入的灰度值是相等的, 所以邻域内的灰度平均值没有变化, 计算所得的灰度值也没有变化, 整个部分混在了
4、一起. 而对于a和c来说, 当所计算的象素向右移动时, 邻域的最左边去掉了一行黑色的象素, 右边加入了一行白色的象素, 因此在这个时候, 邻域内象素的平均值增大, 计算所得的象素点变亮. 从而产生了间隔的区域.课后编程:1绘制出一幅2M2N 的灰度图像直方图;对该图像进行均衡化处理,绘制出均衡后图像的直方图;对该图像进行灰度变换,使变换后的图像大致具有如下图所示的归一化直方图,并绘制出变换后实际的直方图:代码:%直方图均衡化I = imread(C:girl.jpg);height,width = size(I);figuresubplot(221)imshow(I)%显示原始图像subplo
5、t(222)imhist(I)%显示原始图像直方图%进行像素灰度统计;NumPixel = zeros(1,256);%统计各灰度数目,共256个灰度级for i = 1:height for j = 1: width NumPixel(I(i,j) + 1) = NumPixel(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一 endend%计算灰度分布密度ProbPixel = zeros(1,256);for i = 1:256 ProbPixel(i) = NumPixel(i) / (height * width * 1.0);end%计算累计直方图分布CumuPixe
6、l = zeros(1,256);for i = 1:256 if i = 1 CumuPixel(i) = ProbPixel(i); else CumuPixel(i) = CumuPixel(i - 1) + ProbPixel(i); endend%累计分布取整CumuPixel = uint8(255 .* CumuPixel + 0.5);%对灰度值进行映射(均衡化)for i = 1:height for j = 1: width I(i,j) = CumuPixel(I(i,j); endendsubplot(223)imshow(I)%显示原始图像subplot(224)im
7、hist(I)%显示原始图像直方图截图:2 分别在2幅灰度图像中加入一定量的高斯噪声和椒盐噪声,噪声强度自定。然后采用33的均值滤波器和33中值滤波器分别对噪声图像进行处理,给出两种处理方法的峰值信噪比(PSNR)。代码:function z = PSNR(x,y)% calculate PSNR of imageM,N = size(x);dx = im2double(x);dy = im2double(y);err = dx - dy;MSE = sum(sum(err.2) / (M * N); %mean square errorz = 10*log10(2552 / MSE);end
8、clc,clf,clear all;pic=imread(C:image5.jpg);data=rgb2gray(pic);P1=imnoise(data,gaussian,0.02) ;P2=imnoise(data,salt & pepper,0.02) ;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,3 3); k2=medfilt2(P1,3
9、3); k3=medfilt2(P2,3 3); 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)/2
10、55;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:
11、num2str(r3);截图:clear;clc;Data=imread(C:UsersAdministratorDesktopex.JPG);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),subpl
12、ot(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;%半径取10LF=FFTcenter;HF=FFTcenter;%*低通滤波器*fori=1:
13、m;forj=1:ndistance=sqrt(i-x_center)2+(j-y_center)2);ifdistancedflag=1;elseflag=0;endHF(i,j)=flag*FFTcenter(i,j);endendHF=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);ims
14、how(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:Pdog.JPG); DataGray=rgb2gra
15、y(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=2
16、56*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; %*低通滤波器* for i=1:m; for j=1:n distance=sqrt(i-x_center)2+(j-y_center)2); if distan
17、ced 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
18、图像); 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) 用自适应中值滤波分别对加高斯噪声和椒盐噪声图进行滤波处理;并进行比较 。注:滤波窗口可根据需要自行设定。代码
19、:1gmean函数(几何均值滤波):function f = gmean(g, m, n)% Implements a geometric mean filter.inclass = class(g);g = im2double(g);% Disable log(0) warningwarning off;f = exp(imfilter(log(g), ones(m,n), replicate).(1/m/n);warning on;f = changeclass(inclass, f);2.RAMF函数(自适应中值滤波函数):function f = RAMF(img)Im,In=size
20、(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);for x=1:Im for y=1:In for n=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+
21、(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);%求出窗口内像素的中值 %判断中值是否是噪声点 if SmedSmin & SmedSmax %若中值既大于最小值又小于最大值,则不是 %是,则退出该if语句,增大窗口尺寸,再次判断 %不是,则判断该点的原值是不是噪声点 if
22、 Imf(x,y)=Smax %若该点的原值既大于最小值又小于最大值,则不是 %不是,则输出原值,即不作处理 %是,则输出中值 Imf(x,y)=Smed; end break %有输出则不再进行循环判断 end end %当n=max时,输出中值 Imf(x,y)=Smed; endendf = Imf3.其他代码:I=imread(C:lena.jpg);figure;subplot(2,3,1); imshow(I),title(原图);subplot(2,3,4)imhist(I),title(原图直方图)%显示原始图像直方图% 椒盐噪声J = imnoise(I,salt & pep
23、per,0.02);subplot(2,3,2); imshow(J),title(椒盐噪声);subplot(2,3,5)imhist(J),title(椒盐直方图)%显示椒盐图像直方图% 高斯噪声G = imnoise(I,gaussian,0.02,0.02);subplot(2,3,3); imshow(G);title(高斯噪声);subplot(2,3,6)imhist(G),title(高斯直方图)%显示高斯图像直方图figureI_1 = gmean(I,3,3);subplot(3,1,1)imshow(I_1);title(原图几何滤波);J_1 = gmean(J,3,3
24、);subplot(3,1,2)imshow(J_1);title(椒盐几何滤波);G_1 = gmean(G,3,3);subplot(3,1,3)imshow(G_1);title(高斯几何滤波);figureI_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
25、) 任意选择一幅RGB彩色图像,分别提取R、G、B分量,并分别显示各分量的灰度图像。(2) 将上述图像转化为HSI模型,分别显示H、S、I分量的灰度图像。(3) 任意读取一幅8bit红外灰度图像,对其进行伪彩色处理,结果应突出感兴趣区域。(1)(2)代码:I=imread(C:Mountain.jpg);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(2
26、23);imshow(g);title(绿色分量图像);subplot(224);imshow(b);title(蓝色分量图像);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;% Combine all three results into an hsi image.hsi = cat(3, H, S, I);figuresubplot(221);imshow(hsi);title(HSI图像);subplot(222);imshow(H);title(H分量图像);subplot(223);imshow(S);title(S分量图像);subplot(224);im
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1