OpenCV-42 直方图均匀化

目录

一、直方图均匀化原理

二、直方图均匀化在OpenCV中的运用


一、直方图均匀化原理

直方图均匀化是通过拉伸像素强度的分布范围,使得在0~255灰阶上的分布更加均匀,提高图像的对比度。达到改善图像主管视觉效果的目的。对比度较低的图像适合使用直方图均衡化的方法来增强图像细节。

原理

  1. 计算累计直方图
  2. 将累计直方图进行区间转换
  3. 在累计直方图中,概率相近的原始值,会被处理为相同的值 

最初的像素点都在0-7之间,最后我们将其规划到0~255中间。 

二、直方图均匀化在OpenCV中的运用

使用API---eqyalizeHist(src[, dst)

示例代码如下:

import cv2
import numpy as np
import matplotlib.pyplot as plt
cv2.namedWindow("img", cv2.WINDOW_NORMAL)
cv2.resizeWindow("img", 1290, 480)
lena = cv2.imread("beautiful women.png")
gray = cv2.cvtColor(lena, cv2.COLOR_BGR2GRAY)

# lena变黑
gray_dark = gray - 40
# lena变亮
gray_bright = gray + 40
cv2.imshow("img", np.hstack((gray, gray_dark, gray_bright)))
# 查看各自的直方图
hist_gray = cv2.calcHist([gray], [0], None, [256], [0, 255])
hist_dark = cv2.calcHist([gray_dark], [0], None, [256], [0, 255])
hist_bright = cv2.calcHist([gray_bright], [0], None, [256], [0, 255])
# 画出直方图
plt.plot(hist_gray, label = "gray")
plt.plot(hist_dark, label = "dark")
plt.plot(hist_bright, label = "bright")
plt.legend()
plt.show()
# 进行均衡化处理
dark_equ = cv2.equalizeHist(gray_dark)
bright_equ = cv2.equalizeHist(gray_bright)
# 查看均衡化的直方图
hist_dark_equ = cv2.calcHist([dark_equ], [0], None, [256], [0, 255])
hist_bright_equ = cv2.calcHist([bright_equ], [0], None, [256], [0, 255])
plt.plot(hist_dark_equ, label = "dark_equ")
plt.plot(hist_bright_equ, label = "bright_equ")
plt.legend()
plt.show()
cv2.imshow("gray_dark", np.hstack((gray_dark, dark_equ)))
cv2.imshow("gray_dark", np.hstack((gray_bright, bright_equ)))

cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

 图像均衡化之前:

图像均衡化之后:

 

直方图均衡化之前:

直方图均衡化之后:

 

相关推荐

  1. OpenCV-Python(22):直方图均衡

    2024-02-19 19:52:03       59 阅读
  2. OPenCV实现直方图均衡----20240711

    2024-02-19 19:52:03       27 阅读
  3. OPenCV批量实现直方图均衡----20240718

    2024-02-19 19:52:03       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-19 19:52:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-19 19:52:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-19 19:52:03       82 阅读
  4. Python语言-面向对象

    2024-02-19 19:52:03       91 阅读

热门阅读

  1. 人工智能之数学基础【共轭梯度法】

    2024-02-19 19:52:03       45 阅读
  2. Linux系统之部署网页小游戏合集网站

    2024-02-19 19:52:03       49 阅读
  3. Linux中字符串使用单引号与双引号的区别

    2024-02-19 19:52:03       53 阅读
  4. keepalived的通信原理

    2024-02-19 19:52:03       51 阅读
  5. AI趋势(01)人工智能发展史简介

    2024-02-19 19:52:03       38 阅读
  6. 文件 IO

    2024-02-19 19:52:03       49 阅读
  7. Python编程读取csv文件数据分别计算RMSE、SD、R

    2024-02-19 19:52:03       52 阅读