空间域平滑滤波器

原文:https://www.cnblogs.com/zfyouxi/p/5144068.html

1.空间域增强

(1)模版运算

图像处理中。模版能够看作是n*n(n通常是奇数)的窗体。模版连续地运动于整个图像中,对模版窗体范围内的像素做相应处理。

模版运算主要分为:

  • 模版卷积
  • 模版排序

模版卷积是把模版内像素的灰度值和模版中相应的灰度值相乘,求平均值赋给当前模版窗体的中心像素。作为它的灰度值;

模版排序是把模版内像素的灰度值排序,取某个顺序统计量作为模版中心像素灰度值。

Matlab中做模版卷积十分高效,取出模版内子矩阵和模版权重点乘求平均就可以

我们非常easy想到模版的中心点是边界的特殊情况。处理边界有非常多种做法:

  • 忽略边界
  • 外插边界
  • 改变模版领域

忽略边界是模版直接在非边界点运动操作,直接忽略这些边界点。这么做的优点当然是效率高,比較适合图像尺寸较大或人们感兴趣部分不在图像边缘的情况;

外插边界顾名思义就是补齐边界点作为模版中心时缺失的像素部分,能够赋予补边像素一定的灰度值并作计算。优点在于不牺牲性能的情况下,对边界进行了处理。可是补边像素的灰度值设定势必导致边界的像素点的不连贯性,严重情况下导致失真;

改变模版领域是指在边界处理中改变模版窗体的大小,为边界做特殊处理,如3*3模版在处理最左上角像素点时仅仅考虑图像内点2*2的模版运算。这样为边界特殊考虑既不失真又没有忽略不论什么像素点。可是在推断边界时势必会产生一定的开销。稍微会影响图像处理的性能(能够分情况写,在牺牲程序复杂度的情况下弥补推断带来的开销)。

不论什么的边界处理都不是完美的,都在一定程度上又一次分配了模版权重。

(2)空间域滤波

把模版运算运用于图像的空间域增强的技术称为空间域滤波。依据滤波频率空间域滤波分为平滑滤波(减弱和去除高频分量)和锐化滤波(减弱和去除低频分量),依据滤波计算特点又分为线性滤波非线性滤波

因此空间域滤波可分为:

分类 线性 非线性
平滑 线性平滑 非线性平滑
锐化 线性锐化 非线性锐化

2.均值滤波

(1)均值滤波器

领域均值滤波顾名思义是就是求模版内像素点灰度的均值。是最经典的线性平滑滤波。空域滤波经常使用于去除加性噪声,通常把滤波算法封装的模块称作滤波器。

均值滤波的模版就是ones(n, n),模版内全部元素均是一,即他们的权重一模一样。

其它经常使用的线性滤波还有:

  • 加权滤波:通常中心元素权重较大,且对称向外递减
  • 高斯滤波:加权滤波的特例,依据高斯分布确定模版系数

(2)代码实现

先调用Matlab函数给图像加入3%的椒盐噪声

salt = imnoise(original,‘salt & pepper‘,0.03);

接下来构造我们的均值滤波器。我採用改变模版领域。也就是对边界条件推断做特殊处理:

function [ filtered ] = MeanFilter( noise )

    filtered = noise;

    h = size(filtered, 1);
    w = size(filtered, 2);

    for i = 1 : h
        for j = 1 : w
            up = max(i - 1, 1);
            down = min(i + 1, h);
            left = max(j - 1, 1);
            right = min(j + 1, w);
            filtered(i, j) = mean(mean(noise(up : down, left : right)));
        end
    end

end

这里我调用了一系列的maxmin函数避免写起来比較繁杂的if语句。确定了模版边界后直接调用mean函数求均值,淡化了模版卷积的概念(后面边缘检測中会显式地做模版卷积)。

3.中值滤波

(1)中值滤波器

中值滤波选取模版中像素灰度值的中位数赋给模版中心像素,是经典的非线性平滑滤波。

理想情况下,中值滤波的椒盐去噪效果优于均值滤波。是由于它能有效的消除孤立阶跃脉冲噪声。后面将比較分析。

2-D中值滤波也能够选取各种各样的模版,我在这里就选取最简单的8-领域模版做演示。

(2)代码实现

相同我检測边界。做特殊处理:

function [ filtered ] = MedianFilter( noise )
    filtered = noise;

    h = size(filtered, 1);
    w = size(filtered, 2);

    for i = 1 : h
        for j = 1 : w
            up = max(i - 1, 1);
            down = min(i + 1, h);
            left = max(j - 1, 1);
            right = min(j + 1, w);
            sub = noise(up : down, left : right);
            sub = sub(:);
            filtered(i, j) = median(sub);
        end
    end

end

仅仅须要将子矩阵转成向量。再求median就可以。

注:我没有细致研究Matlab median函数实现方式,如果它是一个平方量级的算法,那么我们有以下两种优化方式,来提升中值滤波的速度:

  • 寻求效率更高的顺序统计量算法。见算法导论——期望为线性时间的选择算法最坏情况为线性时间的选择算法
  • 利用模版移动的连续性。邻近移动区域仅仅有少量像素点不同,能够依据模版的这个性质构造线性时间的增量式顺序统计量算法

4.两种滤波器结果对照讨论

(1)平滑结果展示

以下是椒盐噪声的去除效果,中值滤波的效果更优:

以下是高斯噪声的去除效果,均值滤波的效果更优:

(2)讨论

这里并没有数学理论的数学分析。也没有给出样例。仅仅是从直观理解角度简要分析:

  1. 中值滤波去除椒盐效果更好。由于椒盐噪声是阶跃脉冲噪声(取值0或255且小概率出现),中值滤波是去中位数,不会被阶跃值影响,所以差点儿能全然过滤掉阶跃脉冲噪声。

    而均值滤波处理阶跃值时分配权重不会变化。那么求平均值时受阶跃值影响而产生的误差就较大。因此效果不理想。

  2. 高斯噪声是图像中每一个像素点都从原灰度值依据高斯分布做随机噪声。那么选取中值的代表意义并不大,由于各个像素都是独立同分布的。中值滤波相当于在模版内再选出了一个经过高斯噪声变换后的灰度值,滤波效果和噪声图像没有明显改善,所以比較之下均值滤波较优。

原文地址:https://www.cnblogs.com/Ph-one/p/11568406.html

时间: 2024-11-02 16:59:43

空间域平滑滤波器的相关文章

Matlab图像处理系列2———空间域平滑滤波器

注:本系列来自于图像处理课程实验,用Matlab实现最基本的图像处理算法 本文章是Matlab图像处理系列的第二篇文章,介绍了空间域图像处理最基本的概念----模版和滤波器,给出了均值滤波起和中值滤波器的Matlab实现,最后简要讨论去躁效果. 1.空间域增强 (1)模版运算 图像处理中,模版可以看作是n*n(n一般是奇数)的窗口,模版连续地运动于整个图像中,对模版窗口范围内的像素做相应处理. 模版运算主要分为: 模版卷积 模版排序 模版卷积是把模版内像素的灰度值和模版中对应的灰度值相乘,求平均

2_Matlab图像的空间域变换操作

1. 目的:为了达到某种视觉效果,变换输入图像的像素位置,通过把输入图像的像素位置映射到一个新的位置以达到改变原图像显示效果的目的. 2. 操作包括: ? 图像插值(Interpolation) ? 图像缩放(Resizing) ? 图像旋转(Rotation) ? 图像剪切(Cropping) 3.图像差值操作 1)原因:在处理图像的过程中,比如对图像进行缩放及旋转,这时图像中每个像素的值都要发生变化.数字图像的坐标是整数,经过这些变换之后的坐标不一定是整数,使得输入图像的像素点经过空间域变换

空间域图像增强

增强的目的是处理图像,使其比原始图像更适合于特定应用.图像增强方法分为空间域方法(直接对图像的像素处理)和频域(傅里叶变换为基础).以这两种结合来增强图像的非常少!最好的图像处理方法是得到最好的机器可识别的结果. 空间域图像增强公式g(x,y)=T(f(x,t)).g处理后的图像,f是原始图像,T是对f的一种操作. 图像增强的三个基本类型函数:线性(正比例,反比例),对数的(对数和反对数变换),幂次的(n次幂好n次方根变换). 以下,r为原始灰度,s为变换后的灰度.线性的图像反转:s=L-1-r

空间域图像去噪算法

图像去噪希望使用图像自身的冗余信息来去除图像噪声但不影响图像细节.但常常两者不可兼得.下面主要介绍基于空间域高斯加权的三种去噪算法,分别为高斯滤波算法,双边滤波和非局部均值滤波.下面将从滤波方法,滤波性能以及计算复杂度角度分析各个滤波器. 高斯滤波 gaussian filter: 高斯滤波是根据邻域间像素距离大小的高斯加权来分配权重,具体公式如下 2D高斯函数 3D高斯核函数 对二维高斯函数核进行傅里叶变换,可以发现其实高斯滤波是一种低通滤波器.当sigma取值逐渐变大的过程,高斯的傅里叶变换

空间域图像增强和边缘检测

半夜起来做了WY的笔试题,感觉知识掌握的很不好. 其中有一问答题关于边缘检测算子,虽然都知道这几种算子,但是说不上来它们各自的有缺点及应用,现在来总结一下网上的资料. 图像增强的过程中,通常利用各种平滑滤波算法来消除噪声.而通常在图像中,图像的主要能量集中在低频部分,噪声和边缘往往集中在高频部分.所以平滑滤波不仅使噪声减少,图像的边缘信息也会损失,图像的边缘也会变的模糊.为了减少这种不利的效果,通常利用图像锐化来是边缘变得清晰.锐化的目的是让图像的边缘及细节变得清晰.平滑后的图像变得模糊,主要原

Matlab图像处理系列3———空间域锐化滤波器

注:本系列来自于图像处理课程实验,用Matlab实现最基本的图像处理算法 1.锐化滤波器 锐化滤波,是将图像的低频部分减弱或去除,保留图像的高频部分,即图像的边缘信息. 图像的边缘.轮廓一般位于灰度突变的地方,也就是图像的高频部分,通常用灰度差分提取边缘轮廓. 图像中边缘轮廓通常是任意方向的,因此我们的差分运算需要具有方向性.各向同性的边缘检测算子对任意方向的边缘轮廓都有相同的检测能力,那么什么是算子? 算子是一个函数空间到函数空间上的映射O:X→X.广义上的算子可以推广到任何空间,如内积空间等

数字图像处理-空间域处理-空间滤波-锐化空间滤波器

参考自:数字图像处理第三版-冈萨勒斯 锐化处理的主要目的是突出灰度的过渡部分.增强边缘和其他突变(噪声),削弱灰度变化缓慢的区域. 注意:垂直方向是x,水平方向是y 基础 图像模糊可用均值平滑实现.因均值处理与积分类似,在逻辑上,我们可以得出锐化处理可由空间微分来实现.微分算子的响应强度与图像的突变程度成正比,这样,图像微分增强边缘和其他突变,而削弱灰度变化缓慢的区域. 微分算子必须保证以下几点:(1)在恒定灰度区域的微分值为0:(2)在灰度台阶或斜坡处微分值非0:(3)沿着斜坡的微分值非0 一

图像增强之空间域锐化

1.图像锐化理论 图像锐化的目的是使图像变得清晰起来,锐化主要用于增强图像的灰度跳变部分,这一点与图像平滑对灰度跳变的抑制正好相反.锐化提高图像的高频分量,增加灰度反差增强图像的边缘和轮廓,以便后期图像识别. 在图像增强过程中,常用平滑算法来消除噪声,平滑属于低通滤波,图像的能量主要集中在低频部分,噪声所在频段主要在高频部分,同时图像的边缘也集中在高频部分,这意味着图像平滑后,高频被衰减轮廓会出现模糊.图像锐化就是为了减少这种现象,通过高通滤波使图像边缘和轮廓变得清晰. 2.一阶微分图像增强--

《星际穿越》关于时间与空间的思考

看完了近期比较火的影片星际穿越,重新刷新了我对世界对宇宙的价值观,可以说这是一部较为实体化把理论把宇宙呈现在观众眼中的影片,让那些不太明白理论的人同样可以感受到宇宙的奥秘,穿梭在宇宙之间,领略着超乎自然神奇力量的世界里,真是一个心旷神怡.相信每一个看完影片的观众都会为之称赞,称赞着自然法则的规律,称赞着科学的伟大,称赞着导演的构思与想象力.影片在现在看来太超前了,也尊重科学,对于科学理论的描述还是最大限度的贴近现有的物理学,除非真的到了那种无法解释而电影又必须用到的地方,导演才展开强大的想象力.