数字图像处理(3)——图像平滑

在数字图像处理中,图像平滑的主要目的是去除或衰减图像中噪声和假轮廓,处理方法中,主要包括空间域处理和频域处理两类,除此之外,还包括中值滤波,同态滤波等其他适用于不同情况的图像平滑法,在本文中,主要进行模板平滑法和中值滤波法的代码实现与验证。

1.模板平滑法

领域平均法和加权平均法均属于模板平滑法,也称消噪掩模法。该种方法的实质其实是选择一定的平滑模板,通过模板与图像的卷积处理,来得到新的图像,所有计算均在图像的空间域内完成。

在模板平滑法中,使用的不同的模板对应不同的方法:

1)领域平均法

将原图中的一个像素点A的灰度值和它周围邻近的像素点的灰度值此时能够及时,然后将求得的平均值作为新图像中该像素点A的灰度值,模板可以为:

W1=\frac{1}{9}\begin{bmatrix} 1 & 1& 1\\ 1& 1& 1\\ 1& 1& 1 \end{bmatrix}                W2=\frac{1}{4}\begin{bmatrix} 0& 1& 0\\ 1& 0& 1\\ 0& 1& 0 \end{bmatrix}

2) 加权平均法

因为中心点或领域的重要程度不同,所以可以对领域平均法进行修正,得到其他加重当前像素灰度值的权重的模板和加大当前电和四邻域点权重的模板等加权滤波器:

W3=\frac{1}{10}\begin{bmatrix} 1& 1& 1\\ 1& 2& 1\\ 1& 1& 1 \end{bmatrix}             W4=\frac{1}{16}\begin{bmatrix} 1 & 2 &1 \\ 2& 4& 2\\ 1& 2& 1 \end{bmatrix}

平滑模板具有的特点是:

a)模板内系数全为正,表示求和,所乘的小于1的系数表示取平均;

b)模板系数之和为1,表示对常数图像处理前后不变,而对一般图像而言,处理前后平均亮度基本保持不变。

以模板W1为例,编写模板平滑法的MATLAB程序如下:

function tuxiangpinghua(I,W)
%图像平滑,使用领域均值法
%3_30_Airphace
%I为需要进行处理的!!灰度图!!
%W为加权矩阵模板
F=imnoise(I,'salt & pepper',0.02);%给原始图像加入椒盐噪声
                                  %最后一个参数表示加入的噪声浓度的大小,值越大,噪声越密集
%W=(1/9)*[1,1,1;1,1,1;1,1,1]; %加权矩阵模板
[height,width]=size(F);
G=zeros(height,width);
for i=1:height
    for j=1:width
        if(i==1||i==height||j==1||j==width)
            G(i,j)=F(i,j);%处于平滑后图像边缘的像素点用加噪声的像素点的灰度值来代替
        else
            G(i,j)=W(1,1)*F(i-1,j-1)+W(1,2)*F(i-1,j)+W(1,3)*F(i-1,j+1)+W(2,1)*F(i,j-1)+W(2,2)*F(i,j)+W(2,3)*F(i,j+1)+W(3,1)*F(i+1,j-1)+W(3,2)*F(i+1,j)+W(3,3)*F(i+1,j+1);
        end
    end
end
G=uint8(G);%上述计算得到的矩阵G为double型,只有将double型转化成uint8型才能使用imshow函数显示
figure(1)
subplot(1,2,1);
imshow(F);
title('加噪声后图像');
subplot(1,2,2);
imshow(G);
title('均值滤波后图像')            
end

运行结果如下图所示:

对比滤波前后的图像,噪声明显衰减,但是与此同时,图像的边缘也被弱化,这是领域均值法存在的很大的一个缺陷,该种方法存在的问题,在中值滤波法中可以很好的避免。

2. 中值滤波法

中值滤波法其实也是一种模板滤波过程,它是通过给出滤波用的模板,对模板中的像素值有小到大排列,最终待处理像素的灰度取这个模板中的灰度的中值。

中值滤波法的具体实现步骤如下:

1)模板在图中漫游,模板中心与图中某个像素位置重合;

2)读取模板中各个对应像素点的灰度值;

3)将这些灰度值从小到大排成一列;

4)找出这些值里面排在中间的一个;

5)将这个中间值赋给当前对应模板中心位置的像素。

根据上述原理,编写程序来实现中值滤波。

代码实现:

function middle_lvbo(I)
%使用中值滤波进行消噪处理,窗口为3个像素点长
%3_30_Airphace
N=imnoise(I,'salt & pepper',0.01);
[height,width]=size(N);
G=zeros(height,width);
for i=1:1:height
    for j=1:1:width
        if(j==1||j==width)
            G(i,j)=N(i,j);
        else
            z=sort([N(i,j-1),N(i,j),N(i,j+1)]);
            G(i,j)=median(z);
        end
    end
end
G=uint8(G);
figure(1);
subplot(1,2,1);
imshow(N);
subplot(1,2,2);
imshow(G);
end

在上述中值滤波的方法中, 我们选择的是一行三列的窗口,作为模板,运行结果如下图所示:

很明显可以看出,噪声被很好地滤除掉,与此同时,边缘也没有模糊。

 

在一定条件下,中值滤波可以克服线性滤波器(如邻域平均法)所带来的图详细节模糊,而且对滤除脉冲干扰及颗粒噪声最为有效,但是对一些细节多,特别是点、线、尖顶细节多的图像不适宜采用中值滤波法。

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
灰度变换是数字图像处理中常用的一种处理方式,可以通过对图像像素的灰度值进行调整,来改变图像的亮度、对比度等特性。常见的灰度变换包括线性变换、对数变换、伽马变换等。 对于线性变换,其将原图像的灰度值通过一个线性函数进行调整,可以通过设置不同的斜率和截距来实现不同程度的亮度和对比度调整。例如,当斜率为1,截距为0时,图像不发生变化;当斜率大于1时,图像变亮;当斜率小于1时,图像变暗。 对于对数变换,其通过对原图像灰度值取对数的方式来进行调整。由于对数函数的特性,对于较小的灰度值,其值会被拉伸,对于较大的灰度值,其值会被压缩,这样可以实现较为平滑的灰度变换,常用于增强图像的低灰度部分。 对于伽马变换,其通过对原图像的灰度值进行幂次变换的方式来进行调整。伽马值越大,对比度越小,伽马值越小,对比度越大。伽马值为1时,图像不发生变化。 根据不同的需求,我们可以选择不同的灰度变换方法来进行处理。例如,当需要增强图像的低灰度部分时,可以选择对数变换;当需要增强图像的高灰度部分时,可以选择伽马变换;当需要进行亮度和对比度的调整时,可以选择线性变换。 需要注意的是,不同的灰度变换方法可能会对图像进行一定的失真,因此在进行灰度变换时需要进行适当的调整和评估,以确保输出的图像符合我们的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值