空域滤波器

来源:互联网 发布:比思论坛最新域名 编辑:程序博客网 时间:2024/04/28 07:24
空域滤波的概念和分类
使用空域模板进行的图像处理,被称为空域滤波。模板本身被称为空域滤波器。
空域滤波的机理就是在待处理的图像中逐点地移动模板,滤波器在该点地响应通过事先定义的滤波器系数与滤波模板扫过区域的相应像素值的关系来计算。
空域滤波可以按照以下关系进行分类:
  ⑴ 从数学形态上可以把空域滤波器分为线性滤波器和非线性滤波器:
  线性滤波器是线性系统和频域滤波概念在空域的自然延伸。其特征是结果像素值的计算由下列公式定义:
  R = w1z1 + w2z2 + … + wnzn
  其中:wi   i = 1,2, … ,n 是模板的系数
             zi   i = 1,2, … ,n 是被计算像素及其邻域像素的值
线性滤波器又可以分为高通,低通和带通滤波器。
非线性滤波器使用模板进行结果像素值的计算,结果值直接取决于像素邻域的值,而不与线性乘积和无关
,它包括中值滤波,最大最小值滤波器等等。
  ⑵ 从处理效果上可以把空域滤波器分为平滑空间滤波器和锐化空间滤波器:
   平滑空间滤波器用于模糊处理和减小噪声,经常在图像的预处理中使用
   锐化空间滤波器主要用于突出图像中的细节或者增强被模糊了的细节
下面逐一介绍几种比较典型的空域滤波器:

一:均值滤波

最简单的空预处理方法,属于线性滤波器,其基本思想是利用几个像素灰度的平均值代替每个像素的灰度,均值滤波的平滑效果与所使用的领域半径有关。半径

越大,平滑图像的模糊程度越大。均值滤波的优点在于算法简单,计算速度快,主要缺点是在降低噪声的同时使图像产生模糊,特别是在边缘和细节处,领域越大越模糊。

H=fspecial('averager',n);Y=filter2(B,H);
其中n为邻域大小,B为待滤波的二维灰度图像矩阵,H为所构造的均值滤波器。

二:加权均值滤波

为了克服简单局部平均的弊端,目前已经研究出许多保留边缘细节的局部平滑算法,他们讨论的重点都在如何选择领域的大小,形状和方向,如何选择参加平均的点数以及

邻域个点的权重系数等。把这类根据参与平均像素的特点赋予不同权值的方法称为加权均值滤波,常用的灰度最近K个邻域点平均法,梯度倒数加权平滑,最大均匀性平滑、小斜面模型平滑滤波等。

matlab代码如下:

H=[1 2 1;2 4 2;1 2 1];H1=1/16*H;I=imread('lena.png');I1=imnoise(I,'salt & pepper',0.02);J=imfilter(I1,H1);subplot(121),imshow(I1);subplot(122),imshow(J);
三:中值滤波

如果既要消除噪声又要保持图像细节,可以使用中值滤波。中值滤波器是一种非线性平滑滤波器。它的主要功能是让与周围像素灰度值的差比较大的像素改变,并取与周围像素相近的值,从而消除孤立的噪声点。

clearA=imread('lena.png');A=imnoise(A, 'salt & pepper',0.04);subplot(1,2,1)imshow(A)title('添加噪声后的图像');A=rgb2gray(A);image=double(A);[m,n]=size(A);u=zeros(1,9);for i=2:m-1    for j=2:n-1        u(1)=image(i,j);        u(2)=image(i,j+1);        u(3)=image(i-1,j+1);        u(4)=image(i-1,j);        u(5)=image(i-1,j-1);        u(6)=image(i,j-1);        u(7)=image(i+1,j-1);        u(8)=image(i+1,j);        u(9)=image(i+1,j+1);        for p=1:8            for q=1:8-p                if u(p)>u(q+1)                    k=u(q);u(q)=u(q+1);u(q+1)=k;                end            end        end        rimage(i,j)=u(5);    endendsubplot(1,2,2)rimage=uint8(rimage);imshow(rimage);title('中值滤波后的图像')

效果图如下:



四:双边滤波器

待续。。。



0 0
原创粉丝点击