图像处理高斯噪声_图像处理 高斯噪声 - CSDN
  • 图像噪声使图像在获取或是传输过程中收到随机信号干扰,妨碍人们对图像理解及分析处理的信号。很多时候将图像噪声看做多维随机过程,因而描述噪声的方法完全可以借用随机过程的描述,也就是使用随机过程的描述,也...

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

    下面简单介绍两种图像噪声,即椒盐噪声和高斯噪声。

    1.椒盐噪声

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

    图像模拟添加椒盐噪声是通过随机获取像素点并设置为高亮度点和低灰度点来实现的

    图像添加椒盐噪声的程序如下:

    //利用程序给原图像增加椒盐噪声
    //图象模拟添加椒盐噪声是通过随机获取像素点斌那个设置为高亮度点来实现的
     

    #include <cstdlib>
    #include <iostream>
    #include <opencv2\core\core.hpp>
    #include <opencv2\highgui\highgui.hpp>
    #include <opencv2\imgproc\imgproc.hpp>
     
    using namespace cv;
    using namespace std;
     
    Mat addSaltNoise(const Mat srcImage, int n);
     
     
    int main()
    {
        Mat srcImage = imread("2345.jpg");
        if (!srcImage.data)
        {
            cout << "读入图像有误!" << endl;
            system("pause");
            return -1;
        }
        imshow("原图像", srcImage);
        Mat dstImage = addSaltNoise(srcImage, 3000);
        imshow("添加椒盐噪声的图像", dstImage);
        //存储图像
        imwrite("salt_pepper_Image.jpg", dstImage);
        waitKey();
        return 0;
    }
     
    Mat addSaltNoise(const Mat srcImage, int n)
    {
        Mat dstImage = srcImage.clone();
        for (int k = 0; k < n; k++)
        {
            //随机取值行列
            int i = rand() % dstImage.rows;
            int j = rand() % dstImage.cols;
            //图像通道判定
            if (dstImage.channels() == 1)
            {
                dstImage.at<uchar>(i, j) = 255;        //盐噪声
            }
            else
            {
                dstImage.at<Vec3b>(i, j)[0] = 255;
                dstImage.at<Vec3b>(i, j)[1] = 255;
                dstImage.at<Vec3b>(i, j)[2] = 255;
            }
        }
        for (int k = 0; k < n; k++)
        {
            //随机取值行列
            int i = rand() % dstImage.rows;
            int j = rand() % dstImage.cols;
            //图像通道判定
            if (dstImage.channels() == 1)
            {
                dstImage.at<uchar>(i, j) = 0;        //椒噪声
            }
            else
            {
                dstImage.at<Vec3b>(i, j)[0] = 0;
                dstImage.at<Vec3b>(i, j)[1] = 0;
                dstImage.at<Vec3b>(i, j)[2] = 0;
            }
        }
        return dstImage;
    }

    执行程序后,输出的效果如下:


    2.高斯噪声

    高斯噪声是指高绿密度函数服从高斯分布的一类噪声。特别的,如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度有事均匀分布的,则称这个噪声为高斯白噪声。高斯白噪声二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。高斯噪声包括热噪声和三里噪声。高斯噪声万有由它的事变平均值和两瞬时的协方差函数来确定,若噪声是平稳的,则平均值与时间无关,而协方差函数则变成仅和所考虑的两瞬时之差有关的相关函数,在意义上它等同于功率谱密度。高斯早生可以用大量独立的脉冲产生,从而在任何有限时间间隔内,这些脉冲中的每一个买充值与所有脉冲值得总和相比都可忽略不计。

    File:Normal approximation to binomial.svg

    根据Box-Muller变换原理,建设随机变量U1、U2来自独立的处于(0,1)之间的均匀分布,则经过下面两个式子产生的随机变量Z0,Z1服从标准高斯分布。

    上式中Z0,Z1满足正态分布,其中均值为0,方差为1,变量U1和U2可以修改为下式:

    给图像添加高斯噪声的程序如下:

    //给图像添加高斯噪声
    #include <cmath>
    #include <limits>
    #include <cstdlib>
    #include <iostream>
    #include <opencv2\core\core.hpp>
    #include <opencv2\highgui\highgui.hpp>
     
    using namespace cv;
    using namespace std;
     
    double generateGaussianNoise(double m, double sigma);
    Mat addGaussianNoise(Mat &srcImag);
     
    int main()
    {
        Mat srcImage = imread("2345.jpg");
        if (!srcImage.data)
        {
            cout << "读入图片错误!" << endl;
            system("pause");
            return -1;
        }
        imshow("原图像", srcImage);
        Mat dstImage = addGaussianNoise(srcImage);
        imshow("添加高斯噪声后的图像", dstImage);
        waitKey();
        return 0;
    }
     
    //生成高斯噪声
    double generateGaussianNoise(double mu, double sigma)
    {
        //定义小值
        const double epsilon = numeric_limits<double>::min();
        static double z0, z1;
        static bool flag = false;
        flag = !flag;
        //flag为假构造高斯随机变量X
        if (!flag)
            return z1 * sigma + mu;
        double u1, u2;
        //构造随机变量
        do
        {
            u1 = rand() * (1.0 / RAND_MAX);
            u2 = rand() * (1.0 / RAND_MAX);
        } while (u1 <= epsilon);
        //flag为真构造高斯随机变量
        z0 = sqrt(-2.0*log(u1))*cos(2 * CV_PI*u2);
        z1 = sqrt(-2.0*log(u1))*sin(2 * CV_PI*u2);
        return z0*sigma + mu;
    }
     
    //为图像添加高斯噪声
    Mat addGaussianNoise(Mat &srcImag)
    {
        Mat dstImage = srcImag.clone();
        int channels = dstImage.channels();
        int rowsNumber = dstImage.rows;
        int colsNumber = dstImage.cols*channels;
        //判断图像的连续性
        if (dstImage.isContinuous())
        {
            colsNumber *= rowsNumber;
            rowsNumber = 1;
        }
        for (int i = 0; i < rowsNumber; i++)
        {
            for (int j = 0; j < colsNumber; j++)
            {
                //添加高斯噪声
                int val = dstImage.ptr<uchar>(i)[j] +
                    generateGaussianNoise(2, 0.8) * 32;
                if (val < 0)
                    val = 0;
                if (val>255)
                    val = 255;
                dstImage.ptr<uchar>(i)[j] = (uchar)val;
            }
        }
        return dstImage;
    }

    程序执行后的效果图如下:

    展开全文
  • 噪声分类及其消除方法3.1 高斯噪声及其消除方式3.1.1 如何确定一种噪声是高斯噪声3.1.2 高斯滤波消除高斯噪声3.1.3 高斯函数的重要性质3.2 瑞利噪声及其消除方式3.3 伽马(爱尔兰)噪声及其消除方式3.4 指数分布...


    图像处理系列笔记: https://blog.csdn.net/qq_33208851/article/details/95335809


    图像复原 即利用退化过程的先验知识,去恢复已被退化图像的本来面目。在图像的复原中,需要对噪声进行处理。

    1.什么是图像噪声

    图像噪声是指存在于图像数据中的不必要的或多余的干扰信息。 图像中各种妨碍人们对其信息接受的因素即可称为图像噪声 。噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”(图像噪声可以描述成不同的类型,其归类方法就是基于统计方法的)。因此将图像噪声看成是多维随机过程是合适的,因而描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数。通俗的说就是噪声让图像不清楚。
    参考文章:https://baike.baidu.com/item/图像噪声/4116468?fr=aladdin

    2. 图像噪声来源

    1. 图像获取过程中
      图像传感器CCD和CMOS采集图像过程中受传感器材料属性、工作环境、电子元器件和电路结构等影响,会引入各种噪声。

    2. 图像信号传输过程中
      传输介质和记录设备等的不完善,数字图像在其传输记录过程中往往会受到多种噪声的污染。

    3. 噪声分类

    噪声按照不同的分类标准可以有不同的分类形式:

    • 基于产生原因:内部噪声,外部噪声。
    • 基于噪声与信号的关系
      加性嗓声和图像信号强度是不相关的,这类带有噪声的图像g可看成为理想无噪声图像f与噪声n之和:
      在这里插入图片描述
      乘性嗓声和图像信号是相关的,往往随图像信号的变化而变化,载送每一个象素信息的载体的变化而产生的噪声受信息本身调制。在某些情况下,如信号变化很小,噪声也不大。为了分析处理方便,常常将乘性噪声近似认为是加性噪声,而且总是假定信号和噪声是互相统计独立。
      在这里插入图片描述
    • 按照基于统计后的概率密度函数:是比较重要的,主要因为引入数学模型,这就有助于运用数学手段去除噪声。在不同场景下噪声的施加方式都不同,由于在外界的某种条件下,噪声下图像-原图像(没有噪声时)的概率密度函数(统计结果)服从某种分布函数,那么就把它归类为相应的噪声。下面将具体说明基于统计后的概率密度函数的噪声分类及其消除方式。

    3.1 高斯噪声及其消除方式

    在空间域和频域中,由于高斯噪声在数学上的易处理性(高斯函数,高斯函数的傅里叶变换仍然是高斯函数,见相关博文),这种噪声(也称为正态噪声)模型经常被用在实践中,事实上,这种易处理性非常方便。
    高斯函数:
    在这里插入图片描述
    在这里插入图片描述

    3.1.1 如何确定一种噪声是高斯噪声

    样本图:
    在这里插入图片描述
    噪声下的样本图:
    在这里插入图片描述
    噪声的直方图(统计直方图):
    在这里插入图片描述
    可以看到,噪声的直方图中图形像高斯正态函数的分布。
    说明:噪声对原图像的影响是随机的,直方图呈现的分布形式是基于统计的结果直方图表示了(归一化后)灰度值的概率密度分布,因此可以使用直方图来表示灰度值的概率密度。
    统计直方图:
    在这里插入图片描述
    在这里插入图片描述

    3.1.2 高斯滤波消除高斯噪声

    关于高斯滤波(模糊)的方法和过程在前面的文章中写过:

    图像处理(7)–高斯模糊原理

    3.1.3 高斯函数的重要性质

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

    1. 二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑.旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方向.
    2. 高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性 质是很重要的,因为边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真.
    3. 高斯函数的付立叶变换频谱是单瓣的.正如下面所示,这一性质是高斯函数付立叶变换等于高斯函数本身这一事实的直接推论.图像常被不希望的高频信号所 污染(噪声和细纹理).而所希望的图像特征(如边缘),既含有低频分量,又含有高频分量.高斯函数付立叶变换的单瓣意味着平滑图像不会被不需要的高频信号 所污染,同时保留了大部分所需信号.
    4. 高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过 调节平滑程度参数σ,可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷.
    5. 由于高斯函数的可分离性,大高斯滤波器可以得以有效地实现.二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长.

    3.2 瑞利噪声

    瑞利分布:
    在这里插入图片描述
    在这里插入图片描述
    均值和方差:
    在这里插入图片描述
    瑞利分布百度百科:https://baike.baidu.com/item/瑞利分布/10284554?fr=aladdin

    3.2.1 如何确定一种噪声是瑞利噪声

    样本图:
    在这里插入图片描述
    噪声下的样本图:
    在这里插入图片描述
    噪声的直方图(统计直方图):
    在这里插入图片描述

    3.3 伽马(爱尔兰)噪声

    伽马函数:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    或者:
    在这里插入图片描述
    在这里插入图片描述
    Γ函数详解:
    https://blog.csdn.net/lanchunhui/article/details/50535735
    伽马函数百度百科:https://baike.baidu.com/item/伽玛函数/3540177?fromtitle=伽马函数&fromid=11217190&fr=aladdin
    伽马噪声百度百科:https://baike.baidu.com/item/Erlang噪声/22026470?fr=aladdin
    伽马噪声直方图:
    在这里插入图片描述

    3.4 指数分布噪声

    概率密度函数:
    在这里插入图片描述
    在这里插入图片描述
    累计分布函数:
    在这里插入图片描述
    在这里插入图片描述
    期望值(均值):
    在这里插入图片描述
    方差:
    在这里插入图片描述
    相关博文:https://blog.csdn.net/ningyaliuhebei/article/details/46409941

    3.5 均匀分布噪声

    一个连续随机变量X在区间[a,b]上具有均匀分布,记作

    X∼Uniform(a,b)

    当它的概率密度函数满足:
    在这里插入图片描述
    在这里插入图片描述
    它的分布函数如下所示:
    在这里插入图片描述
    在这里插入图片描述
    相应的期望和方差:
    在这里插入图片描述
    在这里插入图片描述
    均匀分布百度百科:https://baike.baidu.com/item/均匀分布/954451?fr=aladdin

    3.6 脉冲(椒盐)噪声及其消除方式

    3.6.1 脉冲(椒盐)噪声

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

    3.6.1 脉冲(椒盐)噪声的消除方式

    一般使用非线性滤波器处理椒盐噪声:

    • 异常值侦测
      异常侦测(Anomaly detection)有时称为异常值侦测(Outlier detection),如其名所隐含的,在给定的资料集合中,它将侦测在已有的规律中表现异常者。现今常用的方法以计算距离为基础的K-近邻算法或是机器学习中的支持向量机等。
    • 中值滤波器
      中值滤波器(Median filtering) 如其名所隐含的,它将一个像素的值用该像素邻域中强度值的中间值来取代(计算中间值的过程中,也会将该像素的原始值包含),中值滤波器在处理盐和胡椒噪声上能提供绝佳的噪声降低效能。
    • 伪中值滤波器
      为了改进中值滤波器的计算速率,伪中值滤波器(Pseudo-median filtering) 以近似的方法算出中间值。

    4. 图像去噪算法的分类

    • 空间域滤波
      空域滤波是在原图像上直接进行数据运算,对像素的灰度值进行处理。常见的空间域图像去噪算法有邻域平均法、中值滤波、低通滤波等。

    • 变换域滤波
      图像变换域去噪方法是对图像进行某种变换,将图像从空间域转换到变换域,再对变换域中的变换系数进行处理,再进行反变换将图像从变换域转换到空间域来达到去除图像嗓声的目的。将图像从空间域转换到变换域的变换方法很多,如傅立叶变换、沃尔什-哈达玛变换、余弦变换、K-L变换以及小波变换等。而傅立叶变换和小波变换则是常见的用于图像去噪的变换方法。

    • 偏微分方程
      偏微分方程是近年来兴起的一种图像处理方法,主要针对低层图像处理并取得了很好的效果。偏微分方程具有各向异性的特点,应用在图像去噪中,可以在去除噪声的同时,很好的保持边缘。偏微分方程的应用主要可以分为两类:一种是基本的迭代格式,通过随时间变化的更新,使得图像向所要得到的效果逐渐逼近,这种算法的代表为Perona和Malik的方程[27],以及对其改进后的后续工作。该方法在确定扩散系数时有很大的选择空间,在前向扩散的同时具有后向扩散的功能,所以,具有平滑图像和将边缘尖锐化的能力。偏微分方程在低噪声密度的图像处理中取得了较好的效果,但是在处理高噪声密度图像时去噪效果不好,而且处理时间明显高出许多。

    • 变分法
      另一种利用数学进行图像去噪方法是基于变分法的思想,确定图像的能量函数,通过对能量函数的最小化工作,使得图像达到平滑状态,现在得到广泛应用的全变分TV模型就是这一类。这类方法的关键是找到合适的能量方程,保证演化的稳定性,获得理想的结果。-形 态学噪声滤除器
      将开与闭结合可用来滤除噪声,首先对有噪声图像进行开运算,可选择结构要素矩阵比噪声尺寸大,因而开运算的结果是将背景噪声去除;再对前一步得到的图像进行闭运算,将图像上的噪声去掉。据此可知,此方法适用的图像类型是图像中的对象尺寸都比较大,且没有微小细节,对这类图像除噪效果会较好。
      参考博文:https://blog.csdn.net/Arcsinsin/article/details/12260373

    5. 图像去噪算法

    根据图像的特征建立起相应的概率密度函数。在对数字图像进行处理的过程中,一般需要以概率密度函数作为根本的依据来对噪声的统计特性进行表述,建立起对应的数据模型。

    5.1 基于空间域下的滤波器

    关于空间域下的滤波器在我的 图像处理(10)–空间滤波 一文中有详细的介绍。这个很重要。

    5.2 基于小波域的小波阈值去噪

    小波萎缩法是目前研究最为广泛的方法,小波萎缩法又分成如下两类:第1类是阈值萎缩,由于阈值萎缩主要基于如下事实,即比较大的小波系数一般都是以实际信号为主,而比较小的系数则很大程度是噪声。因此可通过设定合适的阈值,首先将小于闽值的系数置零,而保留大于闭值的小波系数;然后经过阈值函数映射得到估计系数;最后对估计系数进行逆变换,就可以实现去噪和重建;而另外一种萎缩方法则不同,它是通过判断系数被噪声污染的程度,并为这种程度引入各种度量方法(例如概率和隶属度等),进而确定萎缩的比例,所以这种萎缩方法又被称为比例萎缩。阈值萎缩方法中的两个基本要素是阈值和阈值函数。

    阈值的选择:
    阈值的确定在阈值萎缩中是最关键的。目前使用的阈值可以分成全局阈值和局部适应阈值两类。其中,全局阈值对各层所有的小波系数或同一层内的小波系数都是统一的;而局部适应阈值是根据当前系数周围的局部情况来确定阈值。目前提出的全局阈值主要有以下几种:

    (1),Donoho和Johastone统一阈值(简称DJ阈值):

    其中σ为噪声标准方差,N为信号的尺寸或长度。

    image

    (2),基于零均值正态分布的置信区间阈值:

    image

    (3),Bayes Shrink阈值和Map Shrink阈值。在小波系数服从广义高斯分布的假设下,Chang等人得出了阈值:

    image

    其中,(R为噪声标准方差,RB为广义高斯分布的标准方差值)。

    (4),最小最大化阈值:这是Donoho和John Stone在最小最大化意义下得出的阈值与上边的阈值不同,它是依赖于信号的,而且没有显式表达式,在求取时需要预先知道原信号。

    (5),理想阈值:理想阈值是在均方差准则下的最优阈值,同最大最小化阈值一样,也没有显式的表达式,并且这个阈值的计算通常也需先知道信号本身。

    阈值函数:

    Bruce和Gao。提出了一种半软阈值函数:

    image

    该方法通过选择合适的阈值T1和12,可以在软阈值方法和硬阈值方法之间达到很好的折中。另外,zhang等人为了对SIJRE误差准则函数进行基于梯度的优化搜索,提出了另外一种阈值函数,这种阈值函数同上边闭值函数所不同的是它拥有更高的导数阶,故其重建图像更为平滑,但该文作者将去噪效果的提高归功于搜索方法,其实,Donoh。和 Johnstone提出的在当前小波系数集合中,搜索最优阈值的方法,对于当前已经是优的了,由此可见,该去噪效果的提高则应归功于阈值函数的选取。

    5.3 基于PDE的图像去噪

    目前,基于PDE的图像处理方法的研究,也是图像去噪的研究热点方向,并且己经取得了一定的理论和实际应用方面的成它的去噪过程为通过建立噪声图像为某非线性PDE的初始条件,然后求解这个PDE,得到在不同时刻的解,即为滤波结果。Perona和Malik提出了基于PDE的非线性扩散滤波方法(以下简称P-M),各向异性的去噪模型根据图像的梯度值决定扩散的速度,使之能兼顾噪声消除和边缘保持两方面的要求。

    以P-M模型为代表的这类方法己经在图像增强、图像分割和边缘检测等领域得到了广泛的应用,取得了很好的效果。

    P-M是一种非线性的各向异性方法,目的是为了克服线性滤波方法存在的模糊边缘和边缘位置移动的缺点。基本思想是:图像特征强的地方减少扩散系数,图像特征弱的地方增强扩散系数。方程如下:

    image

    其中u(x,y,t)是随时间变化的图像,image是梯度的模,image扩散系数函数用于控制扩散速度。理想的扩散系数应当使各向异性扩散在灰度变化平缓的区域快速进行,而在灰度变化急剧的位置(即图像特征处)低速扩散乃至不扩散函数,所以,imag应具有如下性质:

    image

    基于以上的两个性质,P-M提出了如下扩散系数函数:

    image

    其中k为边缘阈值,用来判断边缘区域和平坦区域。引入通量函数,主要是为了阐明阈值k在扩散操作中的作用,其函数定义如下:

    image

    尽管P-M方程在抑制噪声与保留图像重要特征方面取得了一定的效果,但却表现出病态且不稳定。Catt等人对该方程进行了改进,他们先用高斯核同图像作卷积,然后取其梯度模作图像边缘信息的估计。文献提出用优化的对称指数滤波器对图像作光滑,然后取其梯度模作图像边缘信息的估计。这两种估计方法的基本思想是降低噪声的干扰,更加真实地提取图像的边缘特征信息,以便利用边缘信息更好地控制P-M方程的扩散行为。

    5.4 全变分(TV)图像去噪

    TV方法是由Rudin Osher and Fatemi提出,它基于变分法的思想,确定图像的能量函数,通过对图像能量函数最小化达到平滑去噪的目的。是现在比较流行的图像复原方法。图像的能量函数方程为:

    image

    在文献[2]中给出的全变分去噪能量泛函为:

    image

    为了使得能量函数最小,其欧拉-拉格朗日方程为:

    image

    其中,梯度算子:

    image

    正则项:

    image

    用来减少平坦区域的退化。将整体左边转换成图像中任意像素点中的局部坐标系后,方程可以分解成边缘方向和边缘正交的两个方向,分解后个方向的系数控制着该方向的扩散强度。扩散方向实际上是一个分线性的各向异性的扩散方程,其扩散算子仅沿图像梯度的正交方向扩散,扩散系数为1/|▽μ|,而朝着梯度方向无扩散。这样可以通过图像的梯度来判断边缘位置,使得边缘扩散系数最小,从而降低对边缘的模糊程度,但是也由于边缘的扩散系数小,噪声得不到很好的抑制,而且当|▽μ|>λ的时候,势能函数是非凸的,使得边缘处处理表现不稳定。所以,如何确定扩散参数的值是一个问题。

    参考文章:https://blog.csdn.net/Arcsinsin/article/details/12260373

    在空间域上的各种滤波器在OpenCV中均有相应的实现方式,例如:
    OpenCV(4)–HPF高通滤波器
    OpenCV(13)–图片模糊处理(平滑)
    等等

    图像处理系列笔记: https://blog.csdn.net/qq_33208851/article/details/95335809
    关于我的OpenCV文章

    展开全文
  • 本文主要介绍给图像添加椒盐噪声和高斯噪声,以及其代码实现和除噪的方法 若要获取更多数字图像处理,python,深度学习,机器学习,计算机视觉等高清PDF以及 更多有意思的 分享,可搜一搜 微信公共号 “分享猿” ...

    本文主要介绍给图像添加椒盐噪声高斯噪声,以及其代码实现除噪的方法

    若要获取更多数字图像处理,python,深度学习,机器学习,计算机视觉等高清PDF以及 更多有意思的 分享,可搜一搜 微信公共号 “分享猿” 免费获取资源。也可扫描下面的二维码关注,期待你的到来~
    在这里插入图片描述
    一、椒盐噪声

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

    如下图一幅电路图像以及加了椒盐噪声后的图像
               原图                  加椒盐噪声后的图像
    在这里插入图片描述

    二、高斯噪声

    高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。常见的高斯噪声包括起伏噪声、宇宙噪声、热噪声和散粒噪声等等。除常用抑制噪声的方法外,对高斯噪声的抑制方法常常采用数理统计方法。

    下列是一幅加了高斯噪声的图像
    在这里插入图片描述
    三、代码实现

    下列是实现椒盐噪声和高斯噪声的python代码
    需要已经安装numpy和opencv-python库

    import numpy as np
    import cv2
    
    #定义添加椒盐噪声的函数
    def SaltAndPepperNoise(img,percetage):
        SP_NoiseImg=img
        SP_NoiseNum=int(percetage*img.shape[0]*img.shape[1])
        for i in range(SP_NoiseNum):
            randX=np.random.random_integers(0,img.shape[0]-1)
            randY=np.random.random_integers(0,img.shape[1]-1)
            if np.random.random_integers(0,1)==0:
                SP_NoiseImg[randX,randY]=0   #0为胡椒噪声
            else:
                SP_NoiseImg[randX,randY]=255    #1为盐粒噪声
        return SP_NoiseImg
    
    #定义添加高斯噪声的函数
    def addGaussianNoise(image,percetage):
        G_Noiseimg = image
        G_NoiseNum=int(percetage*image.shape[0]*image.shape[1])
        for i in range(G_NoiseNum):
            temp_x = np.random.randint(0,G_Noiseimg.shape[0])
            temp_y = np.random.randint(0,G_Noiseimg.shape[1])
            G_Noiseimg[temp_x][temp_y] = 255
        return G_Noiseimg
    
    
    def main():
        img = cv2.imread(r"F:\image\Circuit.tif",1)
        cv2.namedWindow("Original image")
        cv2.imshow("Original image", img)
        grayImg = cv2.imread(r"F:\image\Circuit.tif",0)
        cv2.imshow("grayimage", grayImg)
    
        gauss_noiseImage = addGaussianNoise(grayImg, 0.1)  # 添加10%的高斯噪声
        cv2.imshow("Add_GaussianNoise Image", gauss_noiseImage)
        cv2.imwrite(r"C:\Users\xxx\Desktop\GaussianNoise Image1.jpg", gauss_noiseImage)
    
        SaltAndPepper_noiseImage = SaltAndPepperNoise(grayImg, 0.1)  # 添加10%的椒盐噪声
        cv2.imshow("Add_SaltAndPepperNoise Image", SaltAndPepper_noiseImage)
        cv2.imwrite(r"C:\Users\xxx\Desktop\SaltAndPepper_noiseImage1.jpg", gauss_noiseImage)
    
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    
    main()
    
    

    四、去噪处理

    下面是给出对前文中 加过 椒盐噪声和高斯噪声的图像 分别进行图像去噪 处理
    这里主要介绍下中值滤波均值滤波,并附带四种滤波的比较

    中值滤波和均值滤波都可以起到平滑图像,具有去噪声的功能。
    中值滤波采用非线性的方法,它在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘,选择适当的点来替代污染点的值,所以处理效果好,对椒盐噪声表现较好,对高斯噪声表现较差。
    均值滤波采用线性的方法,平均整个窗口范围内的像素值,均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。均值滤波对高斯噪声表现较好,对椒盐噪声表现较差。

    下列图像中左侧右侧分别是对上述加过椒盐噪声图像和加过高斯噪声图像使用特定滤波进行去噪处理 
     
    中值滤波

    mbImg = cv2.medianBlur(noise_im,3)
    

    在这里插入图片描述  在这里插入图片描述
    均值滤波

    meanImg = cv2.blur(noise_im,(3,3))
    

    在这里插入图片描述  在这里插入图片描述
    高斯滤波

    Img_GaussianBlur=cv2.GaussianBlur(noise_im,(3,3),0)
    

    在这里插入图片描述  在这里插入图片描述
    双边滤波

    img_bilateralFilter=cv2.bilateralFilter(noise_im,40,75,75)
    

    在这里插入图片描述   在这里插入图片描述

    搜索公众号“分享猿”,并回复关键词“代码”,获取本文全部代码

    留言或者公众号关注我,我们一起分享数字图像处理心得,一起交流学习吧~

    展开全文
  • 高斯噪声

    2017-04-27 11:00:29
    本文科普一下高斯噪声(white Gaussian noise,WGN)。  百度百科上解释为“高斯噪声,幅度分布服从高斯分布,功率谱密度服从均匀分布”,听起来有些晦涩难懂,下面结合例子通俗而详细地介绍一下。  白...

    本文科普一下高斯白噪声(white Gaussian noise,WGN)。

      百度百科上解释为“高斯白噪声,幅度分布服从高斯分布,功率谱密度服从均匀分布”,听起来有些晦涩难懂,下面结合例子通俗而详细地介绍一下。

      白噪声,如同白光一样,是所有颜色的光叠加而成,不同颜色的光本质区别是的它们的频率各不相同(如红色光波长长而频率低,相应的,紫色光波长短而频率高)。白噪声在功率谱上(若以频率为横轴,信号幅度的平方为功率)趋近为常值,即噪声频率丰富,在整个频谱上都有成分,即从低频到高频,低频指的是信号不变或缓慢变化,高频指的是信号突变。

      由傅里叶变换性质可知,时域有限,频域无限;频域有限,时域无限。那么频域无限的信号变换到时域上,对应于冲击函数的整数倍(由公式也可推得:)。即说明在时间轴的某点上,噪声孤立,与其它点的噪声无关,也就是说,该点噪声幅值可以任意,不受前后点噪声幅值影响。简而言之,任意时刻出现的噪声幅值都是随机的(这句话实际上说的就是功率谱密度服从均与分布的意思,不同的是,前者从时域角度描述,而后者是从频域角度描述)。这里要指出功率谱密度(Power Spectral Density,PSD)的概念,它从频域角度出发,定义了信号的功率是如何随频率分布的,即以频率为横轴,功率为纵轴

      既然白噪声信号是“随机”的,那么反过来,什么叫做“相关”呢?顾名思义,相关就是某一时刻的噪声点不孤立,和其它时刻的噪声幅值有关。其实相关的情况有很多种,比如此时刻的噪声幅值比上一时刻的大,而下一时刻的噪声幅值比此时刻的还大,即信号的幅值在时间轴上按从小到大的顺序排列。除此之外,幅值从大到小,或幅值一大一小等都叫做“相关”,而非“随机”的。

      解释完了“白噪声”,再来谈谈“高斯分布”。高斯分布,又名正态分布(normal distribution)。概率密度函数曲线的形状又两个参数决定:平均值和方差。简单来说,平均值决定曲线对称中线,方差决定曲线的胖瘦,即贴近中线的程度。概率密度定义了信号出现的频率是如何随着其幅值变化的,即以信号幅值为横轴,以出现的频率为纵轴因此,从概率密度角度来说,高斯白噪声的幅度分布服从高斯分布

      描述了“白噪声”和“高斯噪声”两个含义,那么,回到文章开头的解释:高斯白噪声,幅度分布服从高斯分布,功率谱密度服从均匀分布。它的意义就很明确了,上半句是从空域(幅值)角度描述“高斯噪声”,而下半句是从频域角度描述“白噪声”。

      下面以matlab程序演示,感性认识一下高斯白噪声。

     

    程序1(高斯白噪声):

      由上图可以看出,高斯白噪声的功率谱密度服从均匀分布

      若对噪声进行由小到大排序,则使其从随机噪声变为相关噪声,则功率谱密度就不再是均匀分布了。

    程序2(非高斯白噪声):

      下面让我们从高斯白噪声的统计信息和幅值分布看一下它的特点。

    程序3(高斯白噪声):

      直方图的纵轴为频次,而概率密度的纵轴为频率,但是两者大致的分布曲线确是一样的,因此,这幅图解释了高斯白噪声的幅度分布服从高斯分布

    展开全文
  • 数字图像处理---高斯噪声效果图对比如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图...
  • 图像处理需注意的地方 好的。 我们说噪音的大小是由sigma决定的。 实际上,我们可以只看噪声函数本身,所以不要添加原始图像,只需看看噪声函数。 Sigma对高斯噪声的影响 噪音是什么意思? 是 0。 非常好! 这...
  • 1.添加高斯噪声1.1 概率密度函数σ为z的标准差,z为均值,用E。1.2 生成高斯分布随机数序列方法由Marsaglia和Bray在1964年提出,C++版本如下: mu是均值,sigma是方差,X服从N(0,1)分布 double generateGaussianNoise...
  • 一副图像高斯噪声之后,通过100次相加求和的方法除噪声,其matlab实现以及遇到的问题:源代码: I=imread('C:\Users\1.png'); J=imnoise(I,'gaussian',0,0.02); %对图像进行加噪声 subplot(1,2,1),imshow(I);...
  • 概念 高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀...我的理解:高斯噪声就是符合高斯分布的噪声,在数字图像处理这块就...
  • 图像加入高斯噪声和平滑处理代码 a=imread('lena.jpg'); subplot(221); imshow(a); title ('原始图像'); Inoise=imnoise(a,'gaussian',0.1,0.004);%对图像加入高斯噪声 subplot(222); imshow(Inoise); title('加入...
  • 利用opencv为图像添加高斯噪声的C++代码,有助于学习opencv和图像处理
  • 图像噪声是影响人们接受图像信息的因素,常见的噪声有高斯噪声和椒盐噪声。因为最近课程要求,做一个图像恢复的Project,所以掌握了给图像添加噪声以及去除噪声的方法。   给图像添加高斯噪声  高斯噪声是大量...
  • 噪声表现形式:噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素...另外,在图像处理的某些环节当输入的像对象并不如预想时也会在结果图像中引入噪声 噪声对数字图像的影响:对于数字图像信号,噪声表为或大
  • 在进行平滑滤波中,经常要测试滤波的算法是否有作用,比如模拟现实中出现一些高斯噪声,要怎么样对图像进行处理,才能达到这个目的呢?下面就来解决这个问题,这里使用np.random.normal函数来生成高斯噪声,然后再...
  • 高斯噪声是一个均值为 0 方差为 σn2\sigma_n^2σn2​ 的正态分布,是一个加性噪声。但要正确地给图片添加高斯噪声,还要取决于程序中读入图片的数据格式。 如果图片的数据格式为 uint8,也即数据的范围为 [0, 255]...
  • 根据均值和方差生成高斯噪声,给图像叠加高斯噪声,C++
  • 下面简单介绍两种图像噪声,即椒盐噪声和高斯噪声。 1.椒盐噪声  椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素...
  • 图像画面中的噪声,大致可以分为两类:高斯噪声和椒盐噪声。在这里,我们先看下图像中两种噪声各自的特征。 椒盐噪声:噪声幅值基本相同,但出现位置随机。 高斯噪声图像中每一点都存在噪声,但幅值是随机分布的...
  • 题目:对含有高斯噪声图像进行滤波 思考:先对图像添加高斯噪声,在对图像进行中值滤波,高斯滤波,均值滤波,形态学滤波,以及闭运算后进行中值滤波操作。 实验结果如图: MATLAB代码如下: ...
  • 本程序通过MATLAB实现,主要实现向图像中加入高斯噪声和椒盐噪声,内附有实验结果
1 2 3 4 5 ... 20
收藏数 17,710
精华内容 7,084
关键字:

图像处理高斯噪声