OpenCV-39 图像直方图

一、图像直方图的基本概念

在统计学中,直方图是一种对数据情况的图形表示,是一种二维统计图表。

图像直方图是一种表示数字图像中亮度分布 的直方图, 标绘了图像中每个亮度值得像素数。可以借助观察该直方图了解需要如何调整亮度分布的直方图。这种直方图中,横坐标得左侧为纯黑、较暗的区域,而右侧为较亮,纯白的区域。因此,一张较暗图片得直方图中得数据多集中于左侧和中间部分,而整体明亮、只有少量阴影得图像则相反。

  • 横坐标:图像中各个像素点的灰度值(例如0~255)
  • 纵坐标:具有该灰度级的像素个数

直方图可以说折线图 或者柱状图,图像图即为统计图像中各个灰度出现的次数。

如下图:

普通的直方图

用折线图的形式来表示:

或者以柱状图的形式来表示:

归一化的直方图

  • 横坐标:图像中各个像素点的灰度级
  • 纵坐标:出现这个灰度级的概率

直方图术语

  • dims: 需要统计的特征的数目。例如:dims = 1,表示我们仅统计灰度值。
  • range:统计灰度值的范围,一般为[0, 255]。
  • bins:每个特征空间子区段的数目。

二、在OpenCV中使用统计直方图

使用API --- calcHist(images, channels, mask, histSize, ranges, [ hist[, accumulate]])

  • images: 原始图像
  • channels: 指定通道(需要用中括号括起来,输入图像是灰度图像时,值为[0], 彩色图像可以是[0], [1], [2], 分别对应B, G, R)
  • mask:掩码图像 (统计整幅图像的直方图,设为None;统计图象某一部分的直方图时,需要掩码图像。)
  • hisSize:BINS的个数(需要用中括号括起来,例如[256])
  • ranges:像素值范围,例如[0, 255]
  • accumulate: 累计标识 (默认值为False;如果设为True, 则直方图在开始分配时不会被清零;该参数允许从多个对象中计算单个直方图,或者用于实时更新直方图;多个直方图的累计结果,用于对一组图像计算直方图)

示例代码如下:

复制代码
import cv2
import numpy as np
lena = cv2.imread("beautiful women.png")
hist = cv2.calcHist([lena], [0],None, [256], [0, 255])
print(hist)
print(hist.size)
print(hist.shape)

输出结果如下:

输出的hist为返回的一个二阶列表(因为只统计了一个颜色通道)

相关推荐
Li emily7 分钟前
解决了用美股历史数据api分析价格波动的困扰
数据库·人工智能·python
DX_水位流量监测8 分钟前
德希科技在线 COD 传感器
人工智能·水质监测·水质传感器·水质厂家·供水水质监测·在线cod传感器·污水在线监测系统
龙文浩_9 分钟前
AI深度学习演进之路:从机器学习到大模型的范式变革
人工智能·深度学习·神经网络·算法·回归·线性回归
Xpower 1711 分钟前
PHM念叨叨系列--工业场景大模型幻觉治理
人工智能·python·语言模型
AEIC学术交流中心12 分钟前
【快速EI检索 | SPIE出版】2026年第六届计算机视觉与模式分析国际会议(ICCPA 2026)
人工智能·计算机视觉
请数据别和我作队13 分钟前
基于 DeepSeek API 的 ASR 文本纠错脚本实战:Python 多线程批量处理 JSONL 语音转写数据
开发语言·经验分享·python·自然语言处理·nlp
AI先驱体验官14 分钟前
数字人技术正在改变企业服务:一场静悄悄的效率革命
大数据·运维·人工智能·重构·aigc
风巽·剑染春水20 分钟前
【扩散模型原理】(三)Score-Based Perspective: From EBMs to NCSN
人工智能·深度学习·生成模型·diffusion·扩散模型
紧固视界20 分钟前
轨道交通紧固件有哪些?应用场景及技术要求详解_2026上海紧固件专业展
大数据·人工智能·上海紧固件展·紧固件展·上海紧固件专业展