zoukankan      html  css  js  c++  java
  • 第一章 图像处理基础(直方图、高斯滤波、直方图均衡化)

    本次实验所用图片:

    软件:pycharm

    一、直方图

    import cv2 as cv
    from matplotlib import pyplot as plt
    import numpy as np
    
    
    path = '1.jpg'
    img = cv.imread(path, 0)
    plt.hist(img.ravel(), 256, [0, 256])
    
    plt.show()
    View Code

    运行上面的代码,可以得出图片的直方图:

     二、高斯滤波

    # coding=utf-8
    import cv2
    import numpy as np
    
    image = cv2.imread("1.jpg", 0)
    
    lut = np.zeros(256, dtype=image.dtype)  # 创建空的查找表
    
    hist, bins = np.histogram(image.flatten(), 256, [0, 256])
    cdf = hist.cumsum()  # 计算累积直方图
    cdf_m = np.ma.masked_equal(cdf, 0)  # 除去直方图中的0值
    cdf_m = (cdf_m - cdf_m.min()) * 255 / (cdf_m.max() - cdf_m.min())  # 等同于前面介绍的lut[i] = int(255.0 *p[i])公式
    cdf = np.ma.filled(cdf_m, 0).astype('uint8')  # 将掩模处理掉的元素补为0
    
    # 计算
    result2 = cdf[image]
    result = cv2.LUT(image, cdf)
    
    cv2.imshow("OpenCVLUT", result)
    cv2.imshow("NumPyLUT", result2)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    View Code

      上述代码分别用3×3和5×5的滤波器对图像进行滤波处理,通过比较中央像素与周围像素亮度的差值,改变中央像素的值为周围模糊半径内(3×3或5×5)像素点的平均值,显然,模糊半径越大,图像会变得更模糊。这样处理后的图片相比于原图片会变得更模糊,即模糊处理。

      效果图如下:

     

               3×3效果图                       5×5效果图

    仔细看可以看出5×5的效果较3×3的更模糊。

    三、直方图均衡化

    # coding=utf-8
    import cv2
    import numpy as np
    
    image = cv2.imread("1.jpg", 0)
    
    lut = np.zeros(256, dtype=image.dtype)  # 创建空的查找表
    
    hist, bins = np.histogram(image.flatten(), 256, [0, 256])
    cdf = hist.cumsum()  # 计算累积直方图
    cdf_m = np.ma.masked_equal(cdf, 0)  # 除去直方图中的0值
    cdf_m = (cdf_m - cdf_m.min()) * 255 / (cdf_m.max() - cdf_m.min())  # 等同于前面介绍的lut[i] = int(255.0 *p[i])公式
    cdf = np.ma.filled(cdf_m, 0).astype('uint8')  # 将掩模处理掉的元素补为0
    
    # 计算
    result2 = cdf[image]
    result = cv2.LUT(image, cdf)
    
    cv2.imshow("OpenCVLUT", result)
    cv2.imshow("NumPyLUT", result2)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    View Code

     

            灰度化处理               直方图均衡化处理后

     可以看出,图像经过直方图均衡化,图像增强。

  • 相关阅读:
    共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)
    区块链:共识算法POW
    区块链目前的几大共识算法
    StringUtils.isEmpty和StringUtils.isBlank用法
    StringUtils.isEmpty和StringUtils.isBlank用法
    hyper-v 无线网连接
    hyper-v 无线网连接
    hyper-v 无线网连接
    hyper-v 无线网连接
    nat和静态映射
  • 原文地址:https://www.cnblogs.com/wenbozhu/p/10477992.html
Copyright © 2011-2022 走看看