精华内容
下载资源
问答
  • 平滑处理

    千次阅读 2019-11-11 21:14:11
    平滑处理,(smoothing)也称模糊处理(bluring)。作用就是减少图像上的噪声或者失真。 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将...

    平滑处理,(smoothing)也称模糊处理(bluring)。作用就是减少图像上的噪声或者失真。

    图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。

    消除图像中的噪声成分叫作图像的平滑化或滤波操作。信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没。因此一个能降低高频成分幅度的滤波器就能够减弱噪声的影响。

    平滑滤波是低频增强的空间域滤波技术。它的目的有两类:一类是模糊;另一类是消除噪音。空间域的平滑滤波一般采用简单平均法进行,就是求邻近像元点的平均亮度值。邻域的大小与平滑的效果直接相关,邻域越大平滑的效果越好,但邻域过大,平滑会使边缘信息损失的越大,从而使输出的图像变得模糊,因此需合理选择邻域的大小。

    关于滤波器,一种形象的比喻法是:我们可以把滤波器想象成一个包含加权系数的窗口,当使用这个滤波器平滑处理图像时,就把这个窗口放到图像之上,透过这个窗口来看我们得到的图像
     

    滤波目的:

    • 1、消除图像中混入的噪声。2、为图像识别抽取出图像特征。

    滤波要求

    • 1、不能损坏图像轮廓及边缘 。2、图像视觉效果应当更好

    方框滤波、平滑处理1线性滤波之——方框滤波

    均值滤波、平滑处理2线性滤波之——均值滤波

    高斯滤波、平滑处理3线性滤波之——高斯滤波

    中值滤波、平滑处理4非线性滤波之——中值滤波

    双边滤波、平滑处理5非线性滤波之——双边滤波

    导向滤波、平滑处理6——引导滤波/导向滤波(Guided Filter)
     

    展开全文
  • Opencv笔记之图片的初步处理平滑处理 精品文档 精品文档 收集于网络如有侵权请联系管理员删除 收集于网络如有侵权请联系管理员删除 精品文档 收集于网络如有侵权请联系管理员删除 关键函数 Smooth 各种方法的图像...
  • 阈值与平滑处理.mp4

    2020-03-29 04:17:46
    阈值与平滑处理.mp4阈值与平滑处理.mp4阈值与平滑处理.mp4阈值与平滑处理.mp4阈值与平滑处理.mp4阈值与平滑处理.mp4阈值与平滑处理.mp4阈值与平滑处理.mp4阈值与平滑处理.mp4阈值与平滑处理.mp4阈值与平滑处理.mp4...
  • C#数字图象处理 平滑处理
  • 数据平滑处理

    2014-06-10 21:28:15
    调用smooth函数进行加噪数据的平滑处理;调用medfilt1函数对加噪正弦波信号进行平滑处理; 数据的标准化变换
  • 图像平滑处理-中值滤波

    万次阅读 多人点赞 2018-11-06 15:57:18
    图像平滑处理-中值滤波1.什么是滤波?2.平滑处理的目的3.平滑处理的应用4.中值滤波的处理方法5.中值滤波的示意图椒盐噪声6.椒盐处理和中值滤波的效果展示7.代码(面向过程)8.程序演示(面向对象) 1.什么是滤波? ...

    1.什么是滤波?

    图像滤波:即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。

    消除图像中的噪声成分叫作图像的平滑化或滤波操作。信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没。因此一个能降低高频成分幅度的滤波器就能够减弱噪声的影响。

    2.平滑处理的目的

    图像滤波的目的有两个:

    一是抽出对象的特征作为图像识别的特征模式;
    另一个是为适应图像处理的要求,消除图像数字化时所混入的噪声。

    而对滤波处理的要求也有两条:

    一是不能损坏图像的轮廓及边缘等重要信息;
    二是使图像清晰视觉效果好。

    3.平滑处理的应用

    关于滤波器,一种形象的比喻法是:
    我们可以把滤波器想象成一个包含加权系数的窗口,当使用这个滤波器平滑处理图像时,就把这个窗口放到图像之上,透过这个窗口来看我们得到的图像。

    举一个滤波在我们生活中的应用:
    美颜的磨皮功能。如果将我们脸上坑坑洼洼比作是噪声的话,那么滤波算法就是来取出这些噪声,使我们自拍的皮肤看起来很光滑。

    4.中值滤波的处理方法

    中值滤波是一种典型的非线性滤波,是基于排序统计理论的一种能够有效抑制噪声的非线性信号处理技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,让周围的像素值接近真实的值从而消除孤立的噪声点。该方法在取出脉冲噪声、椒盐噪声的同时能保留图像的边缘细节。这些优良特性是线性滤波所不具备的。

    中值滤波首先也得生成一个滤波模板,将该模板内的各像素值进行排序,生成单调上升或单调下降的二维数据序列,二维中值滤波输出为

    g(x, y)=medf{f(x-k, y-1),(k, l∈w)}

    	其中f(x,y)和g(x,y)分别是原图像和处理后图像, w为输入的二维模板,能够在整幅图像上滑动,通常尺寸为3*3或5*5区域,也可以是不同的形状如线状、圆形、十字形、圆环形等。通过从图像中的二维模板取出奇数个数据进行排序,用排序后的中值取代要处理的数据即可。 
    

    5.中值滤波的示意图

    首先,我们复习中值。在一连串数字{1,4,6,8,9}中,数字6就是这串数字的中值。由此我们可以应用到图像处理中。依然我们在图像中去3*3的矩阵,里面有9个像素点,我们将9个像素进行排序,最后将这个矩阵的中心点赋值为这九个像素的中值。

    引用

    中值滤波示意图

    椒盐噪声

    椒盐噪声(salt-and-pepper noise)是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。
      所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。椒盐噪声是一种因为信号脉冲强度引起的噪声,产生该噪声的算法也比较简单。
      椒盐噪声往往由图像切割引起,去除脉冲干扰及椒盐噪声最常用的算法是中值滤波。大量的实验研究发现,由摄像机拍摄得到的图像受离散的脉冲、椒盐噪声和零均值的高斯噪声的影响较严重。噪声给图像处理带来很多困难,对图像分割、特征提取、图像识别等具有直接影响。因此,实时采集的图像需进行滤波处理。消除图像中的噪声成份叫做图像的平滑化或滤波操作。滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式;二是为适应计算机处理的要求,消除图像数字化时所混入的噪声。对滤波处理的要求有两条:一是不能损坏图像轮廓及边缘等重要信息;二是使图像清晰,视觉效果好。

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

    6.椒盐处理和中值滤波的效果展示

    在这里插入图片描述

    7.代码(面向过程)

    #%matplotlib inline
    from matplotlib import pyplot as plt
    import cv2
    import numpy as np
    from copy import deepcopy
    
    
    filename = input("请输入图像名称:")
    winname = "figure"
    img = cv2.imread(filename)
    
    def add_salt_noise(img, snr=0.5):
        # 指定信噪比
        SNR = snr
        # 获取总共像素个数
        size = img.size
        print(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
        return img
    
    img_demo = deepcopy(img)
    snr = float(input("请输入一个信噪比(小数表示):"))
    img_salt = add_salt_noise(img_demo, snr)
    img_medianblur = cv2.medianBlur(img, 11)
    
    img_all = np.hstack([
        img, img_salt, img_medianblur
    ])
    
    plt.figure(figsize=(20,10))
    plt.imshow(img_all[:,:,::-1])
    plt.show()
    
    

    8.程序演示(面向对象)

    用tkinter 做的界面化处理操作

    面向对象制作的界面程序处理中值滤波

    完整代码(码云):码云分享
    完整代码(github):github分享

    觉得不错的朋友,可以与我交流关注,以及去码云和github点星,真的感谢!~

    有问题可以联系

    展开全文
  • 这里直接引用OpenCV 2.4+ C++ 平滑处理和OpenCV 2.4+ C++ 边缘梯度计算的相关内容: 平滑也称模糊, 是一项简单且使用频率很高的图像处理方法。 平滑处理时需要用到一个滤波器。 最常用的滤波器是线性 滤波器,线性...
  • 图像平滑处理

    2021-01-22 14:53:32
    目录图像平滑处理图像平滑处理原理图像平滑处理方法:均值滤波基本原理函数语法:dst=cv2.blue(src,ksize,anchor,borderType)例子方框滤波函数语法:dst=cv2.boxFilter(scr,ddepth,ksize,anchor,normalize,...


    图像平滑处理

    尽量保留图像原有信息的情况下,过滤图像内部的噪声,这一过程叫做图像的平滑处理。通过图像平滑处理,我们可以有效过滤掉图像内的噪声信息。对应英文为Soomthing Images,图像平滑处理经常伴随图像牧户操作,因此图像平滑处理有时也被称为图像模糊处理(Blurring Images)

    图像平滑处理原理

    对图像中与周围像素点的像素差异值较大的像素点进行处理,将其值调整为周围像素点像素值的近似值

    图像平滑处理方法:

    • 均值滤波
    • 方框滤波
    • 高斯滤波
    • 中值滤波
    • 双边滤波
    • 2D滤波(自定义滤波)

    均值滤波

    均值滤波指当前像素点周围N*N个像素值的均值来代替当前像素值,使用该方法遍历处理图像内的每一个像素点,即可完成整个图像的均值滤波

    基本原理

    先考虑对周围多少个像素点取平均值,以当前像素点为中心,对行数和列数相等的一块区域所有像素点的像素值进行取平均值。对于边缘像素点(如第一行第一列)可以只取图像内存在的周围邻域点的像素值均值(M*N越大,失真越严重)

    函数语法:dst=cv2.blue(src,ksize,anchor,borderType)

    dst是返回值,得到均值滤波处理结果。src是原始图像,可以由任意数量的通道。Ksize是滤波核大小(均值处理过程中,邻域图像高度和宽度)。Anchor是锚点,默认(-1,-1)表示当前计算均值的点位于核的中心点位置,一般采用默认值。BorderType是边界样式,决定了以何种方式处理边界,一般采用默认值
    所以cv2.blur()的一半形式为:cv2.blur(scr,ksize,)

    例子

    #均值滤波
    img=cv2.imread("C:\photo\lenaNoise.png")
    r1=cv2.blur(img,(9,9))
    r2=cv2.blur(img,(5,5))
    cv2.imshow("original",img)
    cv2.imshow("result_big",r1)
    cv2.imshow("result_small",r2)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    在这里插入图片描述

    卷积核越大,去噪音效果越好,花费的运算时间越多,同时图像越失真

    方框滤波

    可以自由选择是否对均值滤波结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值还是邻域像素值之和,如果不进行归一化,则效果和均值滤波一样

    函数语法:dst=cv2.boxFilter(scr,ddepth,ksize,anchor,normalize,borderType)

    ddepth是处理结果图像的图像深度,一般使用-1表示与原始图像使用相同的图像深度
    Normalize表示是否需要进行归一化(0/1),1表示需要,0表示不需要进行归一化
    常用形式:cv2.boxFilter(scr,ddepth,ksize)

    例程

    #方框滤波
    img=cv2.imread("C:\photo\lenaNoise.png")
    r1=cv2.boxFilter(img,-1,(5,5))#使用归一化处理
    r2=cv2.boxFilter(img,-1,(5,5),normalize=0)#不使用归一化处理
    cv2.imshow("original",img)
    cv2.imshow("result_nor",r1)
    cv2.imshow("result",r2)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    在这里插入图片描述

    使用归一化处理的图片接近白色,因为5*5像素之和一般都会超过当前最大值255

    高斯滤波

    在进行均值滤波和方框滤波,邻域内像素的权重都是相等的,在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小
    在这里插入图片描述

    在此基础上计算邻域内各个像素值不同权重的和,在高斯滤波中核的长度和宽度可以不相等,但必须是奇数。在实际计算中,卷积核是要归一化处理的,严格来讲,没有归一化处理的卷积核进行滤波,得到的结果往往是错误的。

    函数语法 dst=cv2.GaussianBlur(scr,ksize,sigmaX,sigmaY,borderType)

    sigmaX是卷积核在水平方向上(X轴方向)的标准差,其控制的是权重比例,是必选参数
    sigmaY是卷积核在垂直方向上(Y轴方向)的标准差,如果将该值设置为0,则只采用sigmaX的值,如果sigmaX和sigmaY的值都为0,就通过ksize.width.height计算得到。
    Sigmax=0.3*[(ksize.width-1)0.5-1]+0.8
    sigmaY=0.3
    [(ksize.height-1)*0.5-1]+0.8
    常见形式:dst=cv2.GaussianBlur(src,ksize,0,0)#官方文档建议指定ksize、signmaX、signmaY三个参数的值,以避免将来函数修改后可能造成的语法错误,所以将其默认为0

    例子

    #高斯滤波
    img=cv2.imread("C:\photo\lenaNoise.png")
    r1=cv2.GaussianBlur(img,(7,5),0,0)
    cv2.imshow("original",img)
    cv2.imshow("reuslt",r1)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    在这里插入图片描述

    中值滤波

    与之前三种处理方式不同,不再采用加权求平均值的方式来计算滤波结果,用邻域所有像素值的中间值来代替当前像素点的像素值

    基本原理

    采用当前像素点及周围邻近像素点(个数为奇数)的像素值,将这些像素值排列,然后将位于中间的像素值作为当前像素点的像素值

    函数语法:dst=cv2.medianBlur(scr,k size)

    例子

    #中值滤波
    img=cv2.imread("C:\photo\lenaNoise.png")
    r1=cv2.medianBlur(img,3)
    cv2.imshow("original",img)
    cv2.imshow("reuslt",r1)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    在这里插入图片描述

    因为没有进行均值处理,所以不存在均值滤波带来的细节模糊问题,在中值滤波操作中,噪音很难被选上,可以在几乎不影响换图情况下去除全部噪音,但是由于要进行排序等操作,中值滤波需要的运算量较大

    双边滤波

    综合图像空间和色彩信息的滤波方式,在滤波过程中能有效保护图像内的边缘信息
    ###基本原理
    前面滤波只考虑空间的权重信息,计算起来比较方便,但是边缘信息的处理上存在较大问题。滤波处理过程中对邻域像素取均值会造成边界模糊,双边滤波在计算某一个像素点的新值时,不仅考虑距离问题(距离越远,权重越小),也考虑色彩信息(色彩差别越大,权重越小)。综合考虑距离和色彩的权重结果,既能有效去除噪音,也能较好保护边沿信息。处于边缘时,与当前色彩相近的像素点会被给予较大的权重值;而在与当前色彩差别较大的像素点会被给予较小的权重值,这样就保护了边缘信息。

    函数语法:dst=cv2.bilateralFilter(scr,d,sigmaColor,sigmaSpace,borderType)

    d是滤波时选取的空间距离参数,表示以当前像素点为中心的直径。如果非正数,则会自动从参数sigmaSpace中计算得到。如果滤波空间较大,推荐d=5.对于噪声较大的离线滤波,可以选择d=9;
    sigmaColor是滤波时选取的颜色差别范围,决定了周围哪些像素点能够参与滤波中来,与当前像素点的像素值小于sigmaColor时,就能参与到滤波中来,该值为0表示滤波失去意义,该值为255表示直径内所有点都能参与运算
    sigmaSpace是坐标中的sigma值,值越大,表明有越多的点能参与到滤波计算中,当d>0时,无论sigmaSpace的值如何,d都指定邻域大小,否则d与sigmaSpace成比例
    为了简单起见,可以将sigmaSpace和sigmaColor的值设置相同,如果他们的值较小,滤波效果就不明显,如果值较大,滤波效果会比较明显,产生卡通效果。

    例子

    #双边滤波
    img=cv2.imread("C:\photo\pie.png")
    g=r=cv2.GaussianBlur(img,(55,55),0,0)
    b=cv2.bilateralFilter(img,55,100,100)
    cv2.imshow("original",img)
    cv2.imshow("bilateralFilter",b)
    cv2.imshow("GaussianBlur",g)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    在这里插入图片描述

    2D卷积

    使用特定的卷积核实现卷积操作,前面的滤波函数都无法将卷积核确定为特定形式,所以需要使用自定义卷积函数
    ###语法格式
    dst=cv2.filter2D(scr,ddrpth,kernel,anchor,delta,borderType)
    kernel是卷积核,是一个单通道的数组,如果想在处理彩色图像时,让每个通道使用不同的核,则必须将彩色图像分解后使用不同的核完成操作
    delta是修正值,是可选项,如果该值存在,会在基础滤波值上加上该值作为最终的滤波处理结果

    例子

    #2D卷积滤波
    img=cv2.imread("C:\photo\lenaNoise.png")
    kernel=np.ones((9,9),np.float32)/81
    r=cv2.filter2D(img,-1,kernel)
    cv2.imshow("original",img)
    cv2.imshow("filter2D",r)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    在这里插入图片描述

    展开全文
  • 图片平滑处理

    2014-10-24 10:46:53
    本程序对图片进行平滑处理,运行后程序后拖动指针条显示处理后的图片。如果遇到中断,是内存问题点击“继续”即可。
  • Matlab数据平滑处理

    2015-04-20 04:49:39
    Matlab数据平滑处理主要用于对于MATLAB所描述的函数进行平滑处理
  • MATLAB平滑处理数据
  • PLC常用的平滑处理算法库函数,可设定平滑时间,根据当前的PLC OB1扫描周期,平滑处理输入的REAL值,得出平滑后的输出值。
  • 指数平滑处理数据y.mat
  • stemwin表盘指针平滑处理,模拟器可以仿真,STM32F1测试效果不好,可能刷新问题,F4没有测试,大家可以测试下,大家有更好的方案可以交流。
  • 平滑也称模糊, 是一项简单且使用频率很高的图像处理方法,本文将详细介绍OpenCV 2.4+ C++ 平滑处理,需要了解更多的朋友可以详细参考下
  • 拉普拉斯平滑处理

    2019-10-08 17:21:47
    拉普拉斯平滑处理 Laplace Smoothing 背景:为什么要做平滑处理?  零概率问题,就是在计算实例的概率时,如果某个量x,在观察样本库(训练集)中没有出现过,会导致整个实例的概率结果是0。在文本分类的问题中,当...

    拉普拉斯平滑处理 Laplace Smoothing

    背景:为什么要做平滑处理?

      零概率问题,就是在计算实例的概率时,如果某个量x,在观察样本库(训练集)中没有出现过,会导致整个实例的概率结果是0。在文本分类的问题中,当一个词语没有在训练样本中出现,该词语调概率为0,使用连乘计算文本出现概率时也为0。这是不合理的,不能因为一个事件没有观察到就武断的认为该事件的概率是0。

    拉普拉斯的理论支撑

      为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率,所以加法平滑也叫做拉普拉斯平滑。
      假定训练样本很大时,每个分量x的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。

    应用举例

      假设在文本分类中,有3个类,C1、C2、C3,在指定的训练样本中,某个词语K1,在各个类中观测计数分别为0,990,10,K1的概率为0,0.99,0.01,对这三个量使用拉普拉斯平滑的计算方法如下:
      1/1003 = 0.001,991/1003=0.988,11/1003=0.011

      在实际的使用中也经常使用加 lambda(1≥lambda≥0)来代替简单加1。如果对N个计数都加上lambda,这时分母也要记得加上N*lambda。

    展开全文
  • 天津理工大学图像处理第五章平滑处理。用于图像处理的平滑,包括完整的代码与图片。
  • cvSmooth 平滑处理

    2016-03-14 16:22:05
    一、平滑处理平滑处理”又称为“模糊处理”,是用来减少图像上的噪声或者失真。降低图像分辨率时,平滑处理是很重要处理。在OpenCV中可以使用cvSmooth函数对图像进行平滑处理。 二、cvSmooth函数 void ...
  • 阵列信号处理 MUSIC以及空间平滑处理,前、后、前后向平滑算法,经典的MUSIC算法不能对相干信号进行解算,经过空间平滑处理后,可以对相干信号进行解算,并进行波束形成,判断波达方向。
  • VC++图像平滑处理+程序源码,实现图象的平滑(去噪声),锐化功能,测试时请在C盘下放一个测试用的Bmp图片,路径:C:\test.bmp,没有的话没法测试。如上图所示是水平平滑处理,可以对比下,不过感觉颜色失真了,有...
  • 数字图像处理 平滑处理 VC++6.0环境
  • 曲线的平滑平滑处理

    千次阅读 2014-11-24 10:23:52
    经常需要对数据进行平滑处理。直接用FIR滤波器或IIR滤波器都有一个启动问题,滤波完成后总要对数据掐头去尾。因此去找了些简单的数据平滑处理的方法。 在一本老版本的《数学手册》中找到了几个基于最小二乘法的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,572
精华内容 3,428
关键字:

平滑处理