图像增强之模板处理——(加权均值、加权中值、拉普拉斯滤波,FFT、DCT变换)
2018-04-06 09:44
771 查看
目的:获取一帧图像,在该图像中添加不同程度的噪声(高斯噪声、椒盐噪声),设计不同尺寸的加权均值滤波、加权中值滤波、锐化滤波(一阶梯度,二阶微分,高提升滤波)进行处理,比较处理前后的效果图,并对对加噪前后的图像进行DFT、DCT变换,选择不同滤波器、不同截止频率对图像进行降噪和边缘提取处理,并分析处理结果。
一、基本原理
可以对其进行改进,主要避开对景物边缘的平滑处理。加权均值滤波方法是,对待处理的当前像素,选择一个模板,该模板为其邻近的若干个像素组成,用模板的均值来替代原像素的值的方法。
所谓加权平均,使用这一术语是指用不同的系数乘以像素,即一些像素的权重比另一些像素的权重大,因此,在均值计算中为该像素提供更大的重要性。
比较中值滤波和均值滤波的去噪性能,分析和实验表明,在更一般的噪声模型下,当噪声污染的概率较小时,中值滤波抑制噪声的能力优于均值滤波,而当噪声污染的概率较大时,均值滤波抑制噪声的能力优于中值滤波。
对比可知,均值滤波和中值滤波均可有效的去噪,并且模糊尺寸越大,去噪效果也越好,同时,图像的边缘等细节模糊也越厉害,因此,选择模糊尺寸至关重要。而横向对比来看,均值滤波在处理高斯噪声时效果优于中值滤波。对比梯度增强与拉斯增强的处理结果,可以看出梯度滤波对高斯噪声效果更好,拉斯滤波对椒盐噪声效果好
一、基本原理
1.1加权均值滤波器
加权均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。可以对其进行改进,主要避开对景物边缘的平滑处理。加权均值滤波方法是,对待处理的当前像素,选择一个模板,该模板为其邻近的若干个像素组成,用模板的均值来替代原像素的值的方法。
所谓加权平均,使用这一术语是指用不同的系数乘以像素,即一些像素的权重比另一些像素的权重大,因此,在均值计算中为该像素提供更大的重要性。
1.2加权中值滤波器
中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值.中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。1.3拉普拉斯算子锐化
由于拉普拉斯是一种微分算子,它的应用可增强图像中灰度突变的区域,减弱灰度的缓慢变化区域。因此,锐化处理可选择拉普拉斯算子对原图像进行处理,产生描述灰度突变的图像,再将拉普拉斯图像与原始图像叠加而产生锐化图像。这种简单的锐化方法既可以产生拉普拉斯锐化处理的效果,同时又能保留背景信息,将原始图像叠加到拉普拉斯变换的处理结果中去,可以使图像中的各灰度值得到保留,使灰度突变处的对比度得到增强,最终结果是在保留图像背景的前提下,突现出图像中小的细节信息。二、结果图对比
比较中值滤波和均值滤波的去噪性能,分析和实验表明,在更一般的噪声模型下,当噪声污染的概率较小时,中值滤波抑制噪声的能力优于均值滤波,而当噪声污染的概率较大时,均值滤波抑制噪声的能力优于中值滤波。
对比可知,均值滤波和中值滤波均可有效的去噪,并且模糊尺寸越大,去噪效果也越好,同时,图像的边缘等细节模糊也越厉害,因此,选择模糊尺寸至关重要。而横向对比来看,均值滤波在处理高斯噪声时效果优于中值滤波。对比梯度增强与拉斯增强的处理结果,可以看出梯度滤波对高斯噪声效果更好,拉斯滤波对椒盐噪声效果好
三、完整程序
clear all; clc; H=imread('C:\Users\Acer\Desktop\章晨曦.jpg'); j=imnoise(H,'gaussian',0.03,0.007);%添加高斯噪声 imshow(H);title('原图'); figure(2); imshow(j);title('添加高斯噪声'); [M N]=size(H); H=double(ones(3)/9);%生成3*3单位矩阵初九,和为一 for m=2:M-1 for n=2:N-1 f1=double(j(m-1:m+1,n-1:n+1)); y=H.*f1; y=reshape(y,1,9);%将其变为1*9的矩阵 y=uint8(sum(y));%将其变为无符号整形,不变的话影响结果 d(m,n)=y; end end figure(3);subplot(121) imshow(d);title('3*3 均值滤波'); H=double(ones(5)/25); for m=3:M-2 for n=3:N-2 x2=double(j(m-2:m+2,n-2:n+2)); y=H.*x2; y=reshape(y,1,25); y=uint8(sum(y)); e(m,n)=y; end end subplot(122) imshow(e);title('5*5 均值滤波'); (2) 首先,构造函数maopao function a = maopao(P) N = P; if length(size(P))~=2 | min(size(P))>1, disp('参数必须为向量.'); else for i=1:length(P) for j=2:(length(P)-i+1) if N(j-1)>N(j) Q=N(j-1); N(j-1)=N(j); N(j)=Q; end end end t=length(P)-1; a=N(t); end 然后,设计程序如下 H=imread('C:\Users\Acer\Desktop\章晨曦.jpg'); j=imnoise(H,'gaussian',0.03,0.007);%添加高斯噪声 imshow(H);title('原图'); figure(2); imshow(j);title('高斯噪声'); [M N]=size(H); H=double(ones(3)/9);%生成3*3单位矩阵初九,和为一 for m=2:M-1 for n=2:N-1 f1=double(j(m-1:m+1,n-1:n+1)); y=reshape(f1,1,9);%将其变为1*9的矩阵 y=maopao(y); y=uint8(y);%将其变为无符号整形,不变的话影响结果 d(m,n)=y; end end figure(3);subplot(121) imshow(d);title('3*3中值滤波'); subplot(122) H=double(ones(5)/25); for m=3:M-2 for n=3:N-2 x2=double(j(m-2:m+2,n-2:n+2)); y=reshape(x2,1,25);%将其变为1*9的矩阵 y=maopao(y); y=uint8(y);%将其变为无符号整形,不变的话影响结果 e(m,n)=y; end end imshow(e);title('5*5中值滤波'); (3) f=imread('C:\Users\Acer\Desktop\章晨曦.jpg'); f=rgb2gray(f) j=imnoise(f,'gaussian',0.02);%添加高斯噪声 k=imnoise(f,'salt & pepper',0.04); subplot(3,3,1); imshow(f); title('原图像'); subplot(3,3,2); imshow(j); title('添加高斯噪声'); subplot(3,3,3); imshow(k); title('添加椒盐噪声'); j=double(j); f=double(f); k=double(k); [jx,jy]=gradient(j); [kx,ky]=gradient(k); [fx,fy]=gradient(f); J=sqrt(jx.*jx+jy.*jy); K=sqrt(kx.*kx+ky.*ky); F=sqrt(fx.*fx+fy.*fy); t=70; K2=K; K3=find(K>=t); K2(K3)=K(K3); subplot(3,3,6); imshow(K2,[]); title('椒盐噪声梯度滤波') J2=J; J3=find(J>=t); J2(J3)=J(J3); subplot(3,3,5); imshow(J2,[]); title('高斯噪声梯度滤波'); F2=F; F3=find(F>=t); F2(F3)=F(F3); subplot(3,3,4); imshow(F2,[]); title('梯度增强'); H=[0 -1 0 -1 5 -1 0 -1 0]; J6=conv2(j,H,'same'); K6=conv2(k,H,'same'); F6=conv2(f,H,'same'); subplot(3,3,8); imshow(J6); title('拉普拉斯滤波'); subplot(3,3,9); imshow(K6) title('拉普拉斯滤波'); subplot(3,3,7); imshow(F6) title('拉普拉斯增强'); (4) H=imread('C:\Users\Acer\Desktop\章晨曦.jpg'); H=rgb2gray(H) g=imnoise(H,'gaussian',0.02);%添加高斯噪声 k=imnoise(H,'salt & pepper',0.04); subplot(1,3,1); imshow(H); title('原图像'); subplot(1,3,2); imshow(g); title('添加高斯噪声'); subplot(1,3,3); imshow(k); title('添加椒盐噪声'); gf=fft2(H); kf=fft2(H); gd=dct2(H); gf=double(gf); gd=double(gd); kf=double(kf); D1=30; D2=90%开始,设置滤波半径 Fuvf=fftshift(gf); Fuvd=fftshift(gd); Fuvk=fftshift(kf); [M N]=size(Fuvf); [P Q]=size(Fuvd); [Z X]=size(Fuvk); xof=floor(M/2); yof=floor(N/2); xod=floor(P/2); yod=floor(Q/2); xok=floor(Z/2); yok=floor(X/2); for i=1:M; for j=1:N D=sqrt((i-xof)^2+(j-yof)^2); if(D>=D1) h1(i,j)=0; else h1(i,j)=1; end end end Guvf=h1.*Fuvf; g1=ifftshift(Guvf); g1=uint8(ifft2(g1)); figure(2) subplot(1,3,1) imshow(g1); title('fft理想低通滤波器高斯噪声半径30') for i=1:M; for j=1:N D=sqrt((i-xof)^2+(j-yof)^2); if(D>=D2) h1(i,j)=0; else h1(i,j)=1; end end end Guvf=h1.*Fuvf; g2=ifftshift(Guvf); g2=uint8(ifft2(g2)); subplot(1,3,3) imshow(g2); title('fft理想低通滤波器高斯噪声半径90') figure(3) for i=1:P; for j=1:Q D=sqrt((i-xod)^2+(j 4000 -yod)^2); if(D>=D1) h1(i,j)=0; else h1(i,j)=1; end end end Guvd=h1.*Fuvd; g3=ifftshift(Guvd); g3=uint8(idct2(g3)); subplot(1,3,1) imshow(g3); title('dct理想低通滤波器高斯噪声半径30') subplot(1,3,3) imshow(g1); title('fft理想低通滤波器高斯噪声半径30') n=2; for i=1:M for j=1:N D=sqrt((i-xof)^2+(j-yof)^2); h1(i,j)=1/(1+(D/D1)^(2*n)); end end Guvf=h1.*Fuvf; g4=ifftshift(Guvf); g4=uint8(ifft2(g4));%高斯低通滤波 figure(4); subplot(1,3,1) imshow(g1); title('fft理想低通滤波器高斯噪声半径30'); subplot(1,3,3) imshow(g4); title('fft高斯低通滤波器高斯噪声半径30'); for i=1:Z; for j=1:X D=sqrt((i-xok)^2+(j-yok)^2); if(D>=D1) h1(i,j)=0; else h1(i,j)=1; end end end Guvk=h1.*Fuvk; g5=ifftshift(Guvk); g5=uint8(ifft2(g5)); figure(5) subplot(1,3,1) imshow(g1); title('fft理想低通滤波器高斯噪声半径30') subplot(1,3,3) imshow(g5); title('fft理想低通滤波器椒盐噪声半径30') for i=1:M; for j=1:N D=sqrt((i-xof)^2+(j-yof)^2); if(D>=D1) h1(i,j)=1; else h1(i,j)=0; end end end Guvf=h1.*Fuvf; g6=ifftshift(Guvf); g6=uint8(ifft2(g6)); figure(6) subplot(1,3,1) imshow(g1); title('fft理想低通滤波器高斯噪声半径30') subplot(1,3,3) imshow(g6); title('fft理想高通滤波器高斯噪声半径30') figure(7); subplot(2,3,1);imshow(g3);title('dct理想低通滤波器高斯噪声半径30') subplot(2,3,3);imshow(g4);title('fft高斯低通滤波器高斯噪声半径30'); subplot(2,3,4);imshow(g5);title('fft理想低通滤波器椒盐噪声半径30') subplot(2,3,6);imshow(g6);title('fft理想高通滤波器高斯噪声半径30')
相关文章推荐
- 基础图像处理之混合空间增强——(Java:拉普拉斯锐化、Sobel边缘检测、均值滤波、伽马变换)
- 【图像处理】图像滤波5种:方框、均值、高斯、中值、双边
- 图像降噪处理——(中值、均值、最大值、最小值滤波)
- 数字图像处理—空域变换增强之滤波增强(模板操作)(模板卷积)
- 第6章 图像处理_6.1线性滤波(方框、均值、高斯滤波)
- Matlab图像处理之均值滤波
- 灰度图像--图像增强 平滑之均值滤波、高斯滤波
- 图像处理之均值滤波介绍及C算法实现
- OpenCV 5种图像滤波辨析:方框、均值、高斯、中值、双边
- 图像滤波处理:均值、中值滤波器实现
- 灰度图像--图像增强 平滑之均值滤波、高斯滤波
- 数字图像处理—频域增强(低通滤波)(高通滤波)(带通和带阻滤波)(同态滤波)
- 【图像处理】【计算机视觉】线性邻域滤波专场:方框滤波、均值滤波与高斯滤波
- Python3+OpenCV学习笔记(四):图像滤波基础(均值、高斯、中值、双边)
- 图像处理之均值滤波介绍及C算法实现
- 基于MATLAB图像处理的中值滤波、均值滤波以及高斯滤波的实现与对比
- delphi FMX图像简单滤波(中值、均值、高斯)
- 影像卷积和滤波运算(高斯滤波模板) 分类: 图像处理(转载) 2014-08-26 21:44 200人阅读 评论(0) 收藏
- MATLAB图像处理-高斯/拉普拉斯/均值/中值滤波
- (转)拉普拉斯滤波实现图像增强