【OpenCV 例程200篇】45. 图像的灰度直方图(cv2.calcHist)

『youcans 的 OpenCV 例程200篇 - 总目录』


【OpenCV 例程200篇】45. 图像的灰度直方图


图像直方图是反映图像像素分布的统计表,横坐标代表像素值的取值区间,纵坐标代表每一像素值在图像中的像素总数或者所占的百分比。 灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数。

灰度直方图反映了图像中的灰度分布规律,直观地表现了图像中各灰度级的占比,很好地体现出图像的亮度和对比度信息:灰度图分布居中说明亮度正常,偏左说明亮度较暗,偏右表明亮度较高;狭窄陡峭表明对比度降低,宽泛平缓表明对比度较高。

根据直方图的形态可以判断图像的质量,通过调控直方图的形态可以改善图像的质量。

OpenCV 提供了函数 cv2.calcHist 可以计算直方图,Numpy 中的函数 np.bincount 也可以实现同样的功能。

函数说明:

cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]]) → hist

函数 cv2.calcHist 可以计算一维直方图或二维直方图,函数的参数 images, channels, histSize, ranges 在计算一维直方图时也要带 [] 号。

参数说明:

  • images:输入图像,用 [] 括号表示
  • channels: 直方图计算的通道,用 [] 括号表示
  • mask:掩模图像,一般置为 None
  • histSize:直方柱的数量,一般取 256
  • ranges:像素值的取值范围,一般为 [0,256]
  • 返回值 hist:返回每一像素值在图像中的像素总数,形状为 (histSize,1)

注意:

    1. 参数 images, channels, histSize, ranges 都要带 [] 号。
    1. mask 是与 images 大小相同的掩模图像,掩模为 0 的区域不作处理。不使用掩模时设为 None。
      3. channels 设置对彩色图像的指定通道计算直方图,灰度图像时设为 0。
      4. Numpy 中的函数 np.bincount 也可以实现同样的功能,但该函数返回值的形状为 (histSize,)

例程:1.57 图像的灰度直方图

    # 1.57 图像的灰度直方图
    img = cv2.imread("../images/imgLena.tif", flags=0)  # flags=0 读取为灰度图像

    histCV = cv2.calcHist([img], [0], None, [256], [0, 256])  # OpenCV 函数 cv2.calcHist
    histNP, bins = np.histogram(img.flatten(), 256)
    print(histCV.shape, histNP.shape)  # histCV: (256, 1), histNP: (256,)

    plt.figure(figsize=(10,3))
    plt.subplot(131), plt.imshow(img, cmap='gray', vmin=0, vmax=255), plt.title("Original"), plt.axis('off')
    plt.subplot(132,xticks=[], yticks=[]), plt.axis([0,255,0,np.max(histCV)])
    plt.bar(range(256), histCV[:,0]), plt.title("Gray Hist(cv2.calcHist)")
    plt.subplot(133,xticks=[], yticks=[]), plt.axis([0,255,0,np.max(histCV)])
    plt.bar(bins[:-1], histNP), plt.title("Gray Hist(np.histogram)")
    plt.show()

在这里插入图片描述

(本节完)


版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/121543352)
Copyright 2022 youcans, XUPT
Crated:2021-11-22

【第4章:灰度变换与直方图】

39. 图像灰度的线性变换
43. 图像的灰度变换(对数变换)
44. 图像的灰度变换(伽马变换)
45. 图像的灰度直方图

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youcans_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值