4.1 直方图绘制

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本章我们开始介绍直方图相关知识


1. 什么是直方图

话不多说,直接上公式:

  • 公式一(数量的统计):
    h ( r k ) = n k k = 0 , 1 , 2 , 3 , . . . L − 1 k 表示灰度图像的像素值 n k 表示图像中像素值为 k ( 或者区间 ) 的像素的个数 \begin{aligned} h(r_k)&=n_k \quad k=0,1,2,3,...L-1 \\ &k\quad表示灰度图像的像素值 \\ &n_k\quad表示图像中像素值为k(或者区间)的像素的个数 \end{aligned} h(rk)=nkk=0,1,2,3,...L1k表示灰度图像的像素值nk表示图像中像素值为k(或者区间)的像素的个数
  • 公式二(概率统计):
    p ( r k ) = h ( r k ) M ∗ N = n k M ∗ N M , N 表示灰度图像的行数和列数 n k 表示图像中像素值为 k ( 或者区间 ) 的像素的个数 根据 公式可以得知 p ( r k ) 的总和是 1 \begin{aligned} p(r_k)&=\frac{h(r_k)}{M*N}=\frac{n_k}{M*N} \\ &M,N\quad表示灰度图像的行数和列数 \\ &n_k\quad表示图像中像素值为k(或者区间)的像素的个数 \\ 根据&公式可以得知p(r_k)的总和是1 \end{aligned} p(rk)根据=MNh(rk)=MNnkMN表示灰度图像的行数和列数nk表示图像中像素值为k(或者区间)的像素的个数公式可以得知p(rk)的总和是1
    简单一句话就是,直方图是统计像素的,统计某一个灰度级别的像素有多少个,并将统计的结果以图表的方式绘制出来。

2. 直方图绘制

2.1 直方图统计代码

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv

if __name__ == '__main__':
    # 读取灰度图像
    imgGray1 = cv.imread('Image/Fig0401.tif', 0)
    imgGray2 = cv.imread('Image/Fig0402.tif', 0)
    imgGray3 = cv.imread('Image/Fig0403.tif', 0)
    imgGray4 = cv.imread('Image/Fig0404.tif', 0)

    hist1 = cv.calcHist([imgGray1], [0], None, [256], [0, 256])
    hist2 = cv.calcHist([imgGray2], [0], None, [256], [0, 256])
    hist3 = cv.calcHist([imgGray3], [0], None, [256], [0, 256])
    hist4 = cv.calcHist([imgGray4], [0], None, [256], [0, 256])

    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.figure(figsize=(10, 5))
    titleList = ["暗图像", "亮图像", "低对比度图像", "高对比度", "直方图", "直方图", "直方图", "直方图"]
    imageList = [imgGray1, imgGray2, imgGray3, imgGray4, hist1, hist2, hist3, hist4]
    for i in range(4):
        plt.subplot(2, 4, i + 1), plt.title(titleList[i]), plt.axis('off')
        plt.imshow(imageList[i], vmin=0, vmax=255, cmap='gray')

    for i in range(4,8):
        plt.subplot(2, 4, i + 1), plt.title(titleList[i])
        plt.plot(imageList[i], color='r')
    plt.tight_layout()
    plt.savefig("Image/tmp.png")
    plt.show()

2.2 直方图绘制效果

在这里插入图片描述
从上图中可以看出:

  • 较暗的图像直方图集中在灰度级低的区域
  • 较亮的图像直方图集中在灰度级高的区域
  • 对比度低的图像灰度等级比较集中
  • 对比度高的图像灰度等级比较分散
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值