Python绘制图像累积直方图教程

本教程将引导你使用Python绘制图像的累积直方图。累积直方图在图像处理中用于分析图像的亮度分布,是直方图均衡化等技术的基础。

步骤:

  1. 读取图像并转换为灰度图像: 使用OpenCV库读取图像,并将其转换为灰度图像。

  2. 计算图像的直方图: 统计每个像素值在图像中出现的次数。

  3. 计算直方图的累积和: 将每个像素值的出现次数累加到前一个像素值的出现次数上。

  4. 将累积和归一化: 将累积直方图的值归一化到[0,255]范围内,以便于显示和比较。

  5. 绘制累积直方图: 使用matplotlib库绘制累积直方图,其中x轴表示像素值,y轴表示像素值在图像中出现的累积次数。

Python代码示例:

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

# 读取图像并转换为灰度图像
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 计算直方图和累积直方图
hist = cv2.calcHist([gray], [0], None, [256], [0, 256])
cumulative_hist = np.cumsum(hist)

# 将累积直方图归一化到[0,255]范围内
cumulative_hist_normalized = cumulative_hist * 255 / cumulative_hist[-1]

# 绘制累积直方图
plt.plot(cumulative_hist_normalized)
plt.xlim([0, 255])
plt.ylim([0, 255])
plt.title('图像累积直方图')
plt.xlabel('像素值')
plt.ylabel('累积像素数')
plt.show()

代码解释:

  • cv2.imread() 读取图像文件。
  • cv2.cvtColor() 将图像转换为灰度图像。
  • cv2.calcHist() 计算直方图。
  • np.cumsum() 计算累积和。
  • plt.plot() 绘制曲线。
  • plt.xlim()plt.ylim() 设置坐标轴范围。
  • plt.title(), plt.xlabel()plt.ylabel() 设置图表标题和轴标签。
  • plt.show() 显示绘制的图形。

通过运行这段代码,你就能得到图像的累积直方图。 这可以帮助你理解图像的亮度分布,并为进一步的图像处理操作提供参考。

Python绘制图像累积直方图教程

原文地址: https://www.cveoy.top/t/topic/jthl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录