zoukankan      html  css  js  c++  java
  • 【python-opencv】16-图像平滑

    【微语】“你以后向成为什么样的人?”    “什么意思,难道我以后就不能成为我自己吗?”    ----《阿甘正传》

     补充知识点:如何理解图像的低频是轮廓,高频是噪声和细节

    图像的频率:灰度值变化剧烈程度的指标,是灰度在平面空间上的梯度。
    
    (1)什么是低频?
          低频就是颜色缓慢地变化,也就是灰度缓慢地变化,就代表着那是连续渐变的一块区域,这部分就是低频. 对于一幅图像来说,除去高频的就是低频了,也就是边缘以内的内容为低频,而边缘内的内容就是图像的大部分信息,即图像的大致概貌和轮廓,是图像的近似信息。
    
    (2)什么是高频?
    
         反过来, 高频就是频率变化快.图像中什么时候灰度变化快?就是相邻区域之间灰度相差很大,这就是变化得快.图像中,一个影像与背景的边缘部位,通常会有明显的差别,也就是说变化那条边线那里,灰度变化很快,也即是变化频率高的部位.因此,图像边缘的灰度值变化快,就对应着频率高,即高频显示图像边缘。图像的细节处也是属于灰度值急剧变化的区域,正是因为灰度值的急剧变化,才会出现细节。
          另外噪声(即噪点)也是这样,在一个像素所在的位置,之所以是噪点,就是因为它与正常的点颜色不一样了,也就是说该像素点灰度值明显不一样了,,也就是灰度有快速地变化了,所以是高频部分,因此有噪声在高频这么一说。
    
          其实归根到底,是因为我们人眼识别物体就是这样的.假如你穿一个红衣服在红色背景布前拍照,你能很好地识别么?不能,因为衣服与背景融为一体了,没有变化,所以看不出来,除非有灯光从某解度照在人物身上,这样边缘处会出现高亮和阴影,这样我们就能看到一些轮廓线,这些线就是颜色(即灰度)很不一样的地方.
    View Code
    import cv2
    import numpy as np
    from matplotlib import pyplot as plt
    
    img = cv2.imread('opencv_logo.png')
    
    kernel = np.ones((5,5),np.float32)/25
    dst = cv2.filter2D(img,-1,kernel)
    
    plt.subplot(121),plt.imshow(img),plt.title('Original')
    plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(dst),plt.title('Averaging')
    plt.xticks([]), plt.yticks([])
    plt.show()

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt
    
    img = cv2.imread('opencv_logo.png')
    
    blur = cv2.blur(img,(5,5))
    
    plt.subplot(121),plt.imshow(img),plt.title('Original')
    plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(blur),plt.title('Blurred')
    plt.xticks([]), plt.yticks([])
    plt.show()

    #0 根据窗口大小(5,5)来计算高斯函数标准差
    blur = cv2.GaussianBlur(img,(5,5),0)

    median = cv2.medianBlur(img,5)

    #9 邻域直径,两个75 分别表示空间高斯函数标准差,灰度值相似性高斯函数标准差
    blur = cv2.bilateralFilter(img,9,75,75)

    看上面的纹理被模糊掉了,但是边界还保留了

  • 相关阅读:
    分享:一个支持并发, 支持异步/同步, 支持http/https, 支持续传的avhttp库
    EvaThumber : 基于URL的图片处理库 (可实现缩略图 | 二维码 | 水印 | 面部识别等)
    Stanford University Introduction to Computational Advertising
    saghul, on code « How do event loops work in Python?
    django orm 自己跟自己一对多关系? django问答求助 python官方论坛 Powered by Discuz!
    台北印象 阮一峰的网络日志
    Connector/ODBC 64 bit windows version
    The Django Book
    使用 libevent 和 libev 提高网络应用性能
    SNA Shared Nothing Architecture
  • 原文地址:https://www.cnblogs.com/XJT2018/p/9993182.html
Copyright © 2011-2022 走看看