• 直方图 与 均衡化


    对图像求直方图,即统计每个像素值有多少个点

    第一个参数为图像,第二个参数为图像通道(0表示灰度图),第三个参数为掩膜(None表示没有)

    第四个参数为直方图中有多少柱子,第五个参数为统计像素值的范围

    img_x = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    
    hist = cv2.calcHist([img_x], [0], None, [256], [0, 255])
    plt.hist(img_x.ravel(), 256)
    plt.show()

    加掩膜:

    #创建一个全黑掩膜(都为0),
    cover = np.zeros(img_x.shape[0 : 2], dtype = np.uint8)
    #特定区域设为255,即为白色,白色区域为不遮挡区域
    cover[100 : 500, 30 : 500] = 255
    cover_img = cv2.bitwise_and(img_x, img_x, mask = cover)
    cv2.imshow('cover', cover_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    #hist_cover = cv2.calcHist([cover_img], [0], None, [256], [0, 255])
    hist_cover = cv2.calcHist([img_x], [0], cover, [256], [0, 255])
    plt.hist(cover_img.ravel(), 256)
    plt.show()

    均衡化:

    将密集的直方图均衡一下

    原理:

    统计每个像素值的个数和其所占所有像素个数的比例,以及其累积概率(即概率前缀和)

    用累积概率 * 255 四舍五入,即得均衡后当前像素值所对应的像素值

    img_x = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    
    hist = cv2.calcHist([img_x], [0], None, [256], [0, 255])
    
    plt.hist(img_x.ravel(), 256)
    plt.show()
    #均衡化操作,返回一个均衡后后的图像
    img_equ = cv2.equalizeHist(img_x)
    hist_equ = cv2.calcHist([img_equ], [0], None, [256], [0, 255])
    plt.hist(img_equ.ravel(), 256)
    plt.show()
    
    img = np.hstack((img_x, img_equ))
    cv2.imshow('img', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    局部均衡化:

    即将一张图片分为若干格子,每个格子分别各自进行均衡化(可以防止个别细节消息,但噪声会造成影响)

    clahe = cv2.createCLAHE(clipLimit = 2.0, tileGridSize = (8, 8))
    img_clahe = clahe.apply(img_x)
    hist_clahe = cv2.calcHist([img_clahe], [0], None, [256], [0, 255])
    plt.hist(img_clahe.ravel(), 256)
    plt.show()
    
    img_total = np.hstack((img_x, img_equ, img_clahe))
    
    
    cv2.imshow('img_total', img_total)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

     

    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    THINKPHP增删改查--(改)
    thinkphp中各字母代表的发放和具体实例
    PHP时间戳和日期互转换
    jquery方法大全
    Bootstrap里的文件分别表示什么?都有什么用?
    文本一处隐藏显示
    点击下拉,其余不动的jquery事件(转)
    JQuery中$.ajax()方法参数详解
    数据库联合查询输出数量
    如何使div居中
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15259003.html
Copyright © 2020-2023  润新知