精华内容
下载资源
问答
  • 高斯滤波、均值滤波、中值滤波,双边滤波滤波进行去噪处理,这四种滤波是在添加高斯噪声的基础上,分别得到信噪比,通过对比信噪比值,最终得到那种方式处理效果最好。并且源码可以在不同的卷积核滤波器大小、添加...
  • 给图像添加椒盐噪声和高斯噪声,然后对图像进行中值滤波。MATLAB代码可直接运行实现。
  • 添加高斯噪声,并用高斯滤波、均值滤波、中值滤波、双边滤波四种滤波去噪方式,并且分别得到这四种滤波后的信噪比值,通过比较信噪比值,得到最佳的滤波去噪处理方式。添加噪声的浓度可以改变,并且也可以改变卷积核...
  • 高斯噪声与高斯滤波

    万次阅读 多人点赞 2017-10-09 12:06:58
    噪声噪声表现形式噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。一般,噪声信号与要研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。噪声对数字...

    噪声

    噪声表现形式

    噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。一般,噪声信号与要研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。

    噪声对数字图像的影响

    对于数字图像信号,噪声表为或大或小的极值,这些极值通过加减作用于图像像素的真实灰度值上,对图像造成亮、暗点干扰,极大降低了图像质量,影响图像复原、分割、特征提取、图像识别等后继工作的进行。

    高斯噪声

    性质

    噪声可以看作随机信号,具有统计学上的特征属性。功率谱密度(功率的频谱分布PDF)即是噪声的特征之一,通过功率谱密度分类噪声。

    高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。

    概率密度函数PDF:

    p(x)=12πδe(xμ)2δ2

    其中z表示灰度值,μ表示z的平均值或期望值,σ表示z的标准差。标准差的平方σ2称为z的方差。
    产生原因:1)图像传感器在拍摄时市场不够明亮、亮度不够均匀;2)电路各元器件自身噪声和相互影响;3)图像传感器长期工作,温度过高。

    表现形式

    信号

    图2

    图像

    原图像

    加入高斯噪声之后

    图1

    高斯滤波

    定义

    高斯滤波器是一种线性滤波器,能够有效的抑制噪声,平滑图像。其作用原理和均值滤波器类似,都是取滤波器窗口内的像素的均值作为输出。其窗口模板的系数和均值滤波器不同,均值滤波器的模板系数都是相同的为1;而高斯滤波器的模板系数,则随着距离模板中心的增大而系数减小。所以,高斯滤波器相比于均值滤波器对图像个模糊程度较小。

    一个二维的高斯函数如下:

    h(x,y)=ex2+y22σ2

    图4

    其中(x,y)为点坐标,在图像处理中可认为是整数; σ 是标准差。要想得到一个高斯滤波器的模板,可以对高斯函数进行离散化,得到的高斯函数值作为模板的系数。例如:要产生一个3×3的高斯滤波器模板,以模板的中心位置为坐标原点进行取样。模板在各个位置的坐标,如下所示,其中i轴(和x轴位置相同)水平向右,j轴(和y轴反方向)竖直向下:

    图3

    这样,将各个位置的坐标带入到高斯函数中,得到的值就是模板的系数。
    对于窗口模板的大小为 (2k+1)×(2k+1) ,模板中各个元素值的计算公式如下:

    Hi,j=12πσ2e(ik1)2+(jk1)22σ2

    理论上,高斯分布在所有定义域上都有非负值,这就需要一个无限大的卷积核。实际上,仅需要取均值周围3倍标准差内的值,以外部份直接去掉即可。

    依照上面的公式计算出来的模板有两种形式:小数和整数。

    小数形式的模板,就是直接计算得到的值,没有经过任何的处理;
    整数形式的,则需要进行归一化处理,将模板左上角的值归一化为1,下面会具体介绍。使用整数的模板时,需要在模板的前面加一个系数,系数为 1(i,j)wwi,j ,也就是模板系数和的倒数。

    如下图为一个标准差为1.0的整数值高斯核。

    这里写图片描述

    性质

    高斯函数具有五个重要的性质,这些性质使得它在早期图像处理中特别有用.这些性质表明,高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器,且在实际图像处理中得到了工程人员的有效使用.高斯函数具有五个十分重要的性质,它们是:

    (1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑.旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方向.

    (2)高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性质是很重要的,因为边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真.

    (3)高斯函数的傅立叶变换频谱是单瓣的.正如下面所示,这一性质是高斯函数付立叶变换等于高斯函数本身这一事实的直接推论.图像常被不希望的高频信号所污染(噪声和细纹理).而所希望的图像特征(如边缘),既含有低频分量,又含有高频分量.高斯函数付立叶变换的单瓣意味着平滑图像不会被不需要的高频信号所污染,同时保留了大部分所需信号.

    (4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数σ,可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷.

    (5)由于高斯函数的可分离性,较大尺寸的高斯滤波器可以得以有效地实现.二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长.

    高斯核的生成

    知道生成的原理,实现起来也就不困难了。

    void generateGaussianTemplate(double window[][11], int ksize, double sigma)
    {
        static const double pi = 3.1415926;
        int center = ksize / 2; // 模板的中心位置,也就是坐标的原点
        double x2, y2;
        for (int i = 0; i < ksize; i++)
        {
            x2 = pow(i - center, 2);
            for (int j = 0; j < ksize; j++)
            {
                y2 = pow(j - center, 2);
                double g = exp(-(x2 + y2) / (2 * sigma * sigma));
                g /= 2 * pi * sigma;
                window[i][j] = g;
            }
        }
        double k = 1 / window[0][0]; // 将左上角的系数归一化为1
        for (int i = 0; i < ksize; i++)
        {
            for (int j = 0; j < ksize; j++)
            {
                window[i][j] *= k;
            }
        }
    }

    σ值的意义及选取

    通过上述的实现过程,不难发现,高斯滤波器模板的生成最重要的参数就是高斯分布的标准差σ。标准差代表着数据的离散程度,如果σ较小,那么生成的模板的中心系数较大,而周围的系数较小,这样对图像的平滑效果就不是很明显;反之,σ较大,则生成的模板的各个系数相差就不是很大,比较类似均值模板,对图像的平滑效果比较明显。

    来看下一维高斯分布的概率分布密度图:

    图6

    横轴表示可能得取值x,竖轴表示概率分布密度F(x),那么不难理解这样一个曲线与x轴围成的图形面积为1。σ(标准差)决定了这个图形的宽度,可以得出这样的结论:σ越大,则图形越宽,尖峰越小,图形较为平缓;σ越小,则图形越窄,越集中,中间部分也就越尖,图形变化比较剧烈。这其实很好理解,如果sigma也就是标准差越大,则表示该密度分布一定比较分散,由于面积为1,于是尖峰部分减小,宽度越宽(分布越分散);同理,当σ越小时,说明密度分布较为集中,于是尖峰越尖,宽度越窄!

    于是可以得到如下结论:

    • σ越大,分布越分散,各部分比重差别不大,于是生成的模板各元素值差别不大,类似于平均模板;
    • σ越小,分布越集中,中间部分所占比重远远高于其他部分,反映到高斯模板上就是中心元素值远远大于其他元素值,于是自然而然就相当于中间值得点运算。

    参考文献

    高斯噪声
    图像处理基础(4):高斯滤波器详解

    展开全文
  • 图像处理python代码,附带测试图片:添加高斯、椒盐、泊松、均匀噪声,分别进行高斯滤波、中值滤波、盒滤波、双边滤波
  • 了解平均滤波高斯滤波,中值滤波等的内容 能够使用滤波器对图像进行处理 1 图像噪声 由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理。常见的图像噪声高斯噪...

    日萌社

    人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


    图像平滑

    学习目标

    • 了解图像中的噪声类型
    • 了解平均滤波,高斯滤波,中值滤波等的内容
    • 能够使用滤波器对图像进行处理

    1 图像噪声

    由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理。常见的图像噪声有高斯噪声、椒盐噪声等。

    1.1 椒盐噪声

    椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。椒盐噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。

    1.2 高斯噪声

    高斯噪声是指噪声密度函数服从高斯分布的一类噪声。由于高斯噪声在空间和频域中数学上的易处理性,这种噪声(也称为正态噪声)模型经常被用于实践中。高斯随机变量z的概率密度函数由下式给出:

    2 图像平滑简介

    图像平滑从信号处理的角度看就是去除其中的高频信息,保留低频信息。因此我们可以对图像实施低通滤波。低通滤波可以去除图像中的噪声,对图像进行平滑。

    根据滤波器的不同可分为均值滤波,高斯滤波,中值滤波, 双边滤波。

    2.1 均值滤波

    由一个归一化卷积框完成的。它只是用卷积框覆盖区域所有像素的平均值来代替中心元素。

    例如,3x3标准化的平均过滤器如下所示:

    均值滤波的优点是算法简单,计算速度较快,缺点是在去噪的同时去除了很多细节部分,将图像变得模糊。

    API:

    cv.blur(src, ksize, anchor, borderType)
    

    参数:

    • src:输入图像
    • ksize:卷积核的大小
    • anchor:默认值 (-1,-1) ,表示核中心
    • borderType:边界类型

    示例:

    import cv2 as cv
    import numpy as np
    from matplotlib import pyplot as plt
    # 1 图像读取
    img = cv.imread('./image/dogsp.jpeg')
    # 2 均值滤波
    blur = cv.blur(img,(5,5))
    # 3 图像显示
    plt.figure(figsize=(10,8),dpi=100)
    plt.subplot(121),plt.imshow(img[:,:,::-1]),plt.title('原图')
    plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title('均值滤波后结果')
    plt.xticks([]), plt.yticks([])
    plt.show()
    

    2.2 高斯滤波

    二维高斯是构建高斯滤波器的基础,其概率分布函数如下所示:

    正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小。计算平滑结果时,只需要将"中心点"作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值。

    高斯平滑在从图像中去除高斯噪声方面非常有效。

    高斯平滑的流程:

    • 首先确定权重矩阵

    假定中心点的坐标是(0,0),那么距离它最近的8个点的坐标如下:

    更远的点以此类推。

    为了计算权重矩阵,需要设定σ的值。假定σ=1.5,则模糊半径为1的权重矩阵如下:

    这9个点的权重总和等于0.4787147,如果只计算这9个点的加权平均,还必须让它们的权重之和等于1,因此上面9个值还要分别除以0.4787147,得到最终的权重矩阵。

    • 计算高斯模糊

    有了权重矩阵,就可以计算高斯模糊的值了。

    假设现有9个像素点,灰度值(0-255)如下:

    每个点乘以对应的权重值:

    得到

    将这9个值加起来,就是中心点的高斯模糊的值。

    对所有点重复这个过程,就得到了高斯模糊后的图像。如果原图是彩色图片,可以对RGB三个通道分别做高斯平滑。

    API:

    cv2.GaussianBlur(src,ksize,sigmaX,sigmay,borderType)
    

    参数:

    • src: 输入图像
    • ksize:高斯卷积核的大小,注意 : 卷积核的宽度和高度都应为奇数,且可以不同
    • sigmaX: 水平方向的标准差
    • sigmaY: 垂直方向的标准差,默认值为0,表示与sigmaX相同
    • borderType:填充边界类型

    示例

    import cv2 as cv
    import numpy as np
    from matplotlib import pyplot as plt
    # 1 图像读取
    img = cv.imread('./image/dogGasuss.jpeg')
    # 2 高斯滤波
    blur = cv.GaussianBlur(img,(3,3),1)
    # 3 图像显示
    plt.figure(figsize=(10,8),dpi=100)
    plt.subplot(121),plt.imshow(img[:,:,::-1]),plt.title('原图')
    plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title('高斯滤波后结果')
    plt.xticks([]), plt.yticks([])
    plt.show()

    2.3 中值滤波

    中值滤波是一种典型的非线性滤波技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值。

    中值滤波对椒盐噪声(salt-and-pepper noise)来说尤其有用,因为它不依赖于邻域内那些与典型值差别很大的值。

    API:

    cv.medianBlur(src, ksize )
    

    参数:

    • src:输入图像
    • ksize:卷积核的大小

    示例:

    import cv2 as cv
    import numpy as np
    from matplotlib import pyplot as plt
    # 1 图像读取
    img = cv.imread('./image/dogsp.jpeg')
    # 2 中值滤波
    blur = cv.medianBlur(img,5)
    # 3 图像展示
    plt.figure(figsize=(10,8),dpi=100)
    plt.subplot(121),plt.imshow(img[:,:,::-1]),plt.title('原图')
    plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title('中值滤波后结果')
    plt.xticks([]), plt.yticks([])
    plt.show()
    

    总结

    1. 图像噪声

      • 椒盐噪声:图像中随机出现的白点或者黑点
      • 高斯噪声:噪声的概率密度分布是正态分布
    2. 图像平滑

      • 均值滤波:算法简单,计算速度快,在去噪的同时去除了很多细节部分,将图像变得模糊

        cv.blur()

      • 高斯滤波: 去除高斯噪声

        cv.GaussianBlur()

      • 中值滤波: 去除椒盐噪声

        cv.medianBlur()


    In [1]:

    import numpy as np
    import cv2 as cv
    import matplotlib.pyplot as plt 

    In [2]:

    dogsp = cv.imread("./image/dogsp.jpeg")

    In [3]:

    doggau = cv.imread("./image/dogGauss.jpeg")

    均值滤波

    In [4]:

    dog = cv.blur(dogsp,(5,5))

    In [5]:

    plt.imshow(dog[:,:,::-1])

    Out[5]:

    <matplotlib.image.AxesImage at 0x12a8b0a50>

    高斯滤波

    In [6]:

    dog = cv.GaussianBlur(doggau,(3,3),1)

    In [7]:

    plt.imshow(dog[:,:,::-1])

    Out[7]:

    <matplotlib.image.AxesImage at 0x1290f73d0>

    中值滤波

    In [8]:

    dog = cv.medianBlur(dogsp,3)

    In [9]:

    plt.imshow(dog[:,:,::-1])

    Out[9]:

    <matplotlib.image.AxesImage at 0x12e5d41d0>

    In [11]:

    plt.imshow(dogsp[:,:,::-1])

    Out[11]:

    <matplotlib.image.AxesImage at 0x12eee1e50>

    展开全文
  • 同态滤波高斯高通滤波高斯低通滤波、高频滤波matlab代码 不要积分了 同态滤波高斯高通滤波高斯低通滤波、高频滤波matlab代码 不要积分了 同态滤波高斯高通滤波高斯低通滤波、高频滤波matlab代码 不要...
  • c) 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到...
  • python调用高斯滤波函数或者中值对大数据集进行滤波
  • matlab实现均值滤波去除高斯噪声. matlab实现均值滤波去除高斯噪声. matlab实现均值滤波去除高斯噪声. matlab实现均值滤波去除高斯噪声.
  • 关于数字图像处理,均值滤波可以去除高斯噪声,但是均值滤波会使图像变得模糊,中值滤波能有效滤除椒盐噪声。
  • 高斯滤波 中值滤波 均值滤波

    千次阅读 2021-02-25 10:27:32
    高斯噪声:顾名思义指服从高斯分布(正态分布)的一类噪声,通常是因为...对于高斯噪声通过高斯滤波去除噪声。 中值滤波,将模板内的像素数据,按从小到大的顺序排列,取中间的像素替换原始像素的卷积操作。注:如果

    线性滤波

    方框滤波、均值滤波、高斯滤波,原始数据和滤波结果是一种线性的算术运算,即用加减乘除等运算实现所以称之为线性滤波。

    非线性滤波

    中值滤波、双边滤波。原始数据和滤波结果是一种逻辑关系,即通过比较一定邻域内的灰度值大小来实现的。

    高斯噪声

    顾名思义指服从高斯分布(正态分布)的一类噪声,通常是因为不良照明和温度引起的传感器噪声。通常在RGB图像中,显现比较明显。如图:

    椒盐噪声

    通常是由图像传感器,传输通道,解压处理等产生的黑白相间的亮暗点噪声(椒-黑,盐-白)。椒盐噪声往往由图像切割引起,去除脉冲干扰及椒盐噪声最常用的算法是中值滤波。

    降噪是图像卷积运算的重要功能之一;中值模板的卷积对去除椒盐噪声有比较好的作用但均值滤波的降噪效果不佳。对于高斯噪声通过高斯滤波去除噪声。

    我们使用信噪比(Signal NoiseRate)衡量图像噪声,图象的信噪比应该等于信号与噪声的功率谱之比,但通常功率谱难以计算,有一种方法可以近似估计图象信噪比,即信号与噪声的方差之比(其实在均值为零的情况下,功率就是方差)。首先计算图象所有像素的局部方差,将局部方差的最大值认为是信号方差,最小值是噪声方差,求出它们的比值,再转成dB数,最后用经验公式修正。
    如果是灰度图像的话,SNR=(洁净图片中的像素点的灰度值之和)/abs(噪声图片的灰度值之和-洁净图片中的灰度值之和)为该图像的信噪比。

    如何给一幅数字图像加上椒盐噪声:

    1. 指定信噪比 SNR (其取值范围在[0, 1]之间)
    2. 计算总像素数目 SP, 得到要加噪的像素数目 NP = SP * (1-SNR)
    3. 随机获取要加噪的每个像素位置P(i, j)
    4. 指定像素值为255或者0。
    5. 重复3,4两个步骤完成所有像素的NP个像素
    6. 输出加噪以后的图像
    import cv2
    import numpy as np
    
    filename = "d:/1.jpg"
    winname = "figure"
    img = cv2.imread(filename)
    
    def addSaltNoise():
        # 指定信噪比
        SNR = 0.9
        # 获取总共像素个数
        size = img.size
        # 因为信噪比是 SNR ,所以噪声占据百分之10,所以需要对这百分之10加噪声
        noiseSize = int(size * (1 - SNR))
        # 对这些点加噪声
        for k in range(0, noiseSize):
            # 随机获取 某个点
            xi = int(np.random.uniform(0, img.shape[1]))
            xj = int(np.random.uniform(0, img.shape[0]))
            # 增加噪声
            if img.ndim == 2:
                img[xj, xi] = 255
            elif img.ndim == 3:
                img[xj, xi] = 0
        cv2.imshow(winname, img)
        cv2.waitKey(0)
    
    def main():
        addSaltNoise()
    
    if __name__ == '__main__':
        main()

    中值滤波

    将模板内的像素数据,按从小到大的顺序排列,取中间的像素替换原始像素的卷积操作。

    注:如果数量为偶数那么中位数则是中间两数的均值。中值滤波是一种可以非常有效去除少量异常像素值的滤波方法。

    中值滤波在一定的条件下可以克服常见线性滤波器如方框滤波器、均值滤波等带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声非常有效,也常用于保护边缘信息, 保存边缘的特性使它在不希望出现边缘模糊的场合也很有用,是非常经典的平滑噪声处理方法。

    但是中值滤波的缺点也很明显,因为要进行排序操作,所以处理的时间长,是均值滤波的5倍以上。

    void medianBlur( InputArray src, OutputArray dst, int ksize );

    输入图像src,输出图像dst,以及核的大小ksize。注意这里的ksize必须为正奇数1,3,5,7……否则程序会出错。

    均值滤波

    求取模板内的像素均值替代像素值。

     

    高斯滤波

    高斯滤波是最常用的图像去噪方法之一,它能很好地滤除掉图像中随机出现的高斯噪声,高斯滤波是一种低通滤波,它在滤除图像中噪声信号的同时,也会对图像中的边缘信息进行平滑,表现出来的结果就是图像变得模糊。高斯滤波之所以会导致图像变得模糊,是因为它在滤波过程中只关注了位置信息。

    在滤波窗口内,距离中心点越近的点的权重越大;这种只关注距离的思想在某些情况下是可行的,例如在平坦的区域,距离越近的区域其像素分布也越相近,自然地,这些点的像素值对滤波中心点的像素值更有参考价值。但是在像素值出现跃变的边缘区域,这种方法会适得其反,损失掉有用的边缘信息。此时就出现了一类算法——边缘保护滤波方法,双边滤波就是最常用的边缘保护滤波方法(另一种常用来与双边滤波对比的边缘保护滤波方法——引导滤波)。

    双边滤波

    双边滤波的思想很简单,在高斯滤波的基础上加入了像素值权重项,也就是说既要考虑距离因素,也要考虑像素值差异的影响,像素值越相近,权重越大。

    Python: cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]]) → dst

    函数中的参数依次表示

    src:输入图像,

    d:滤波窗口的直径(函数注释中使用的是Diameter,那么很可能函数中选取的窗口是圆形窗口),

    sigmaColor:像素值域方差,颜色空间的标准差,即灰度值相似性高斯函数标准差,一遍尽可能大。

    sigmaSpace:空间域方差,以及边缘处理方式。一般尽可能小,参数越大,邻近像素将会在越远的地方mix

    引导滤波

    引导滤波与双边滤波相似,同样具有保持边缘的特性,在引导滤波中,用到了局部线性模型,用如下图进行简单理解:

    某函数上一点与其临近部分的点成线性关系,一个复杂的函数就可以用很多局部的线性函数来表示,当需要求该函数上某一点的值时,只需要计算所有包含该点的线性函数的值做平均即可。这种模型,在表示非解析函数上非常有用。

    在滤波效果上,引导滤波和双边滤波差不多,在一些细节上,引导滤波较好。

    引导滤波最大的优势在于,可以写出时间复杂度与窗口大小无关的算法,因此在使用大窗口处理图片时,其效率更高。

    在图像去雾、图像抠图上均有相应的应用。

    最小二乘滤波(WLS)

     

     

    参考

    1、https://blog.csdn.net/firstlai/article/details/77675344

    2、https://blog.csdn.net/weixin_43194305/article/details/88959183?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.baidujs&dist_request_id=5df70368-b884-4333-9019-48a25179440b&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.baidujs

    3、https://blog.csdn.net/tsfx051435adsl/article/details/78251739

     

     

     

     

     

     

    展开全文
  • 很多时候将图像噪声看作多维随机过程,因而描述噪声的方法完全可以借用随机过程的描述,即使其概率分布函数和概率密度分布函数。图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量,图像在传输过程中...

    图像噪声是图像在获取或传输过程中受到随机信号干扰,妨碍人们对图像理解及分析的信号。很多时候将图像噪声看作多维随机过程,因而描述噪声的方法完全可以借用随机过程的描述,即使用其概率分布函数和概率密度分布函数。图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量,图像在传输过程中产生图像噪声的主要因素是所用的传输信道受到噪声污染。

    一、噪声类型

    1、椒盐噪声(盐=白色,椒=黑色

    椒盐噪声是数字图像中的常见噪声,一般是由图像传感器、传输信道及解码处理等产生的黑白相见的亮暗点噪声,椒盐噪声常由图像切割产生。椒盐噪声是指两种噪声:盐噪声(salt noise)及椒噪声(pepper noise)。盐噪声一般是白色噪声,椒噪声一般是黑色噪声,前者高灰度噪声,后者属于低灰度噪声,一般两种噪声同时出现,呈现在图像上就是黑白杂点。图像去除脉冲干扰及椒盐噪声最常用的算法是中值滤波,图像模拟添加椒盐噪声是通过随机获取像素值点并设置为高亮点来实现的。

     

    2.随机噪声

    随机噪声,又称背景噪声,由时间上随机产生的大量起伏骚扰积累而造成的,其值在给定瞬间内不能预测的噪声。说实话没大理解,后来在老师的ppt课件上发现了随机值脉冲噪声,感觉它的效果和椒盐噪声很像。又百度了一下,发现脉冲噪声的特点是无规则。于是本算法基本和椒盐噪声的实现相似,可以控制噪声数量,随机生成黑白杂点,但此黑白杂点也是随机色值(a,b,c)(255-a,255-b,255-c),其中a,b,c是0-30的随机数,这些杂点在图像坐标内随机分布。
     

    3.高斯噪声

    高斯噪声是指概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度服从高斯分布,而它的功率谱密度又是分布均匀的,则称它为高斯白噪声。高斯白噪声的二阶矩不想关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声包括热噪声和散粒噪声。高斯噪声完全由其时变平均值和两瞬时的协方差函数来确定,若噪声为平稳的,则平均值与时间无关,而协方差函数则变成仅和所考虑的两瞬时之方差有关的相关函数,它在意义上等效于功率谱密度。高斯噪声可以由大量独立的脉冲产生,从而在任何有限时间间隔内,这些脉冲中的每一个脉冲值与所有脉冲值的总和相比都可以忽略不计。

     

    二、滤波

    常见的滤波方式有均值滤波、中值滤波、高斯滤波等。

    1、均值滤波—mean_image

           均值滤波又称作邻域平均法,是典型的线性滤波算法,理想的均值滤波是用每个像素和它周围像素计算出来的平均值替换图像中每个像素。
           从频率域观点来看均值滤波是一种低通滤波器(让图像的低频部分通过,通常弱化边缘,会得到比较平缓的图像),高频信号将会去掉,因此可以帮助消除图像尖锐噪声,实现图像平滑,模糊等功能。因为此方法不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊。采样Kernel数据通常是3X3的矩阵,如下表示:

    在这里插入图片描述
           从左到右从上到下计算图像中的每个像素,最终得到处理后的图像。均值滤波可以加上两个参数,即迭代次数,Kernel数据大小。一个相同的Kernel,但是多次迭代就会效果越来越好。同样,迭代次数相同,Kernel矩阵越大,均值滤波的效果就越明显。

    优势:消除尖锐噪声,实现图像平滑,模糊等功能。

     

    2、中值滤波—median_Image,适用于椒盐噪声

           中值滤波也是消除图像噪声最常见的手段之一,特别是消除椒盐噪声,中值滤波的效果要比均值滤波更好。它的基本原理是计算出数字图像中的一点的一个邻域中的各点值的中值(中间值),并使用该中值将将该点原值代替。可以理解为使用一个窗口沿图像移动,用窗口内所有象素灰度的中值来代替窗口中心位置的象素灰度。窗口根据需要定义,可以是3* 3,5 *5的方形、十字形或者圆形等。

    在这里插入图片描述
    优势:消除椒盐噪声。

     

    3、高斯滤波—gauss_image,适用于高斯噪声

           高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。可以理解为用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

    优势:消除高斯噪声。

    产生原因:

    图像传感器在拍摄时市场不够明亮、亮度不够均匀;
    电路各元器件自身噪声和相互影响;
    图像传感器长期工作,温度过高。

     

    三、举例

    1、halcon示例

    *中值滤波,去除椒盐噪声
    read_image (Image, 'D:/hellowprld/2/OtherSquare_1.jpg')
    *彩色转灰度图
    count_channels (Image, Channels)
    if (Channels == 3 or Channels == 4)
        rgb1_to_gray (Image, Image)
    endif
    
    *因为边界处往往无法移动滤波窗口,因此需要对像素做补充.
    *'continued'表示延伸边界像素
    *'cyclic'表示循环延伸边界像素
    median_image (Image, ImageMedian, 'circle', 3, 'continued')
    median_image (Image, ImageMedian2, 'circle', 3, 'cyclic')
    dev_display (ImageMedian)
    write_image (ImageMedian, 'jpeg 100', 0, 'D:/hellowprld/2/medianBlur.jpg')
    stop()
    

    2、opencv中提供了medianBlur()函数实现了中值滤波操作,其原型如下:

    void medianBlur(InputArray src, OutputArray dst, int ksize)

    参数解释:

    InputArray src: 输入图像,图像为1、3、4通道的图像,当模板尺寸为3或5时,图像深度只能为CV_8U、CV_16U、CV_32F中的一个,如而对于较大孔径尺寸的图片,图像深度只能是CV_8U。

    OutputArray dst: 输出图像,尺寸和类型与输入图像一致,可以使用Mat::Clone以原图像为模板来初始化输出图像dst。

    int ksize: 滤波模板的尺寸大小,必须是大于1的奇数,如3、5、7…… 

    Mat SrcImage;
    Mat DstImage;
    int nkernelSize = 3;
    medianBlur(SrcImage, DstImage, nkernelSize);

    opencv完整版源码:

    int main(int argc, char** argv)
    {
    	Mat SrcImage = imread("D:\\hellowprld\\2\\4.jpg", IMREAD_GRAYSCALE);
    	int h = SrcImage.rows;
    	int w = SrcImage.cols;
    	if (h == 0 || w == 0)
    	{
    		return -1;
    	}
    
    	namedWindow("input", WINDOW_NORMAL);
    	imshow("input", SrcImage);
    
    	Mat DstImage;
    	int nkernelSize = 3;
    	cv::medianBlur(SrcImage, DstImage, nkernelSize);
    	namedWindow("output", WINDOW_NORMAL);
    	imshow("output", DstImage);
    	imwrite("medianBlur.jpg", DstImage);
    
    	waitKey(0);
    }

     

    ---

    参考文献:

    http://blog.sina.com.cn/s/blog_159aff7940102xcme.html

    https://blog.csdn.net/u013033431/article/details/50907806

    https://blog.csdn.net/weixin_43197380/article/details/91045946

     

     

     

    展开全文
  • 自己写的基于MATLAB的去除图像高斯噪声的中值滤波代码,已经仿真过。希望可以帮到大家
  • 高斯噪声下粒子滤波用于目标跟踪的程序,详细注释
  • C语言实现高斯滤波

    2020-11-27 00:31:32
    高斯滤波在图像处理中具有很重要的作用,可以去除噪声等等。作为入门者来说,这是一个很基础的程序。 高斯滤波在图像处理中具有很重要的作用,可以去除噪声等等。作为入门者来说,这是一个很基础的程序。
  • 基于matlab的图像处理——高斯噪声&均值滤波,椒盐噪声&中值滤波 [plain] view plain copy figure oriImg=imread('peppers.bmp');%读取并显示原有图像 subplot(1,2,1);imshow(oriImg);title('原始...
  • 图像处理——高斯滤波与双边滤波高斯滤波References 高斯滤波 滤波是对输入信号进行卷积处理的一个过程,写成一个表达式的形式是这样的:滤波 = 卷积( 输入信号 ,卷积模板 ),卷积模板/掩膜 的不同决定了不同的...
  • 高斯噪声是指噪声的密度服从高斯分布的一类噪声,由于高斯噪声在空间和频域中数学上的易处理性,这种噪声(也称为正态噪声)模型经常被用于实践中。高斯噪声随机变量Z的概率密度函数由下式给出: 加入高斯噪声后...
  • 均值滤波&高斯滤波&中值滤波

    万次阅读 多人点赞 2018-11-01 20:07:39
    均值滤波 均值滤波是一种线性滤波器,处理思路也很简单,就是将一个窗口...计算均值滤波时可以采用很多优化手段,例如使用积分图的方法对图像进行预处理,处理过后的图像可以通过O(1)的时间复杂度获取窗口区域中的像...
  • 对图像进行添加高斯噪声、椒盐噪声处理之后,使用高斯滤波、中值滤波方式对添加噪声的图像进行滤波处理,实现程序如下:clc P = imread('原始图像.jpg'); % 读入图像 figure img=rgb2gray(P); imwrite(img,'甲.png')...
  • 程序能够针对输入的图像进行高斯模糊处理,对于机器视觉技术的相关学科有比较重要的用途
  • 高斯滤波与双边滤波

    千次阅读 2019-09-23 17:42:59
    双边滤波器、高斯滤波 双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。普通的高斯滤波会将图像的...
  • 在matlab2019下亲测有效~ In spatial domain, denoising pepper&salt noises by mean, median and Gaussian filters, respectively,
  • 图像的滤波图像的滤波概念平滑滤波高斯滤波中值滤波 图像的滤波概念 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像...
  • import cv2 as cv from pylab import * from scipy import ndimage import matplotlib.pyplot as plt import random # ............................二维高斯模板为: 3,对自备图像之一添加椒盐噪声,再进行中值滤波
  • 摘要:为了有效滤除图像中的高斯噪声,提出了一种组合滤波方法。该方法首先将含有高斯噪声的图像进行维纳滤波预处理以滤除部分噪声干扰,然后将图像进行二维小波分解,得到高频和低频分解系数,保持低频分解系数不变...
  • I=imread('D:\TuPian\lion.png'); subplot(3,3,1);imshow(I);title('原始图像');... %添加高斯噪声,均值为0,方差为0.02 subplot(3,3,4);imshow(G);title('高斯噪声图像'); j1 = fspecial('avera
  • 给图像添加椒盐噪声和高斯噪声,再通过算术均值滤波和几何均值滤波对图像进行复原。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,488
精华内容 7,395
关键字:

高斯噪声用什么滤波