OpenCV实现灰度图像直方图均衡化算法
创作时间:
作者:
@小白创作中心
OpenCV实现灰度图像直方图均衡化算法
引用
CSDN
1.
https://blog.csdn.net/missyougoon/article/details/81775251
直方图均衡化是一种常用的图像增强技术,主要用于改善图像的对比度。通过重新分配图像的灰度级,使得图像的灰度分布更加均匀,从而增强图像的视觉效果。本文将详细介绍如何使用OpenCV实现灰度图像的直方图均衡化算法。
灰度图像直方图均衡化的实现主要包含以下步骤:
- 计算每一个灰度级的概率
- 计算每一个灰度级的累计概率
- 计算映射表
- 将图像像素值通过映射表进行映射
对于直方图均衡化的原理,可以参考相关博文:直方图均衡化原理
下面是具体的代码实现:
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image0.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('src', gray)
# 初始化计数数组
count = np.zeros(256, np.float) # 因为是概率, 有可能是浮点数
# 统计像素个数并计算概率
for i in range(height):
for j in range(width):
pixel = gray[i, j]
index = int(pixel)
count[index] = count[index] + 1
total = height * width # 总像素个数
count = count / total # 计算概率
# 计算累计概率
sum = float(0)
for i in range(256):
sum += count[i]
count[i] = sum # 计算出累积概率
# 计算映射表
mapl = np.uint16(255 * count)
# 将图像进行映射
for i in range(height):
for j in range(width):
pixel = gray[i, j]
gray[i, j] = mapl[pixel]
cv2.imshow('dst', gray)
cv2.waitKey(0)
原图如下:
灰度图像直方图均衡化后效果如下:
热门推荐
机房动环监控系统方案,稳定运行通信基站
二十八星宿之苍龙七宿:从角宿到箕宿的天文与文化
光明于心,自理成翼:盲人生活自理能力训练探索
秦皇岛旅游全攻略:行程安排、交通建议、必游景点及美食住宿指南
金泽旅游全攻略:一座融合传统与现代的日本名城
CPU针脚是什么?一文详解CPU针脚大全图解
钟摆腿防治膝关节痛
羽毛球技巧解析:进攻与防守战术详解
法学专业10大院校推荐及权威排名榜
2025法硕择校指南:293所院校数据全解析
山东慢病过早死亡率下降 健康素养提升见成效
道教护法尊神王灵官:从民间传说看道教“讳字”文化
贝多芬是哪个国家的
甄姬:从《洛神赋》到历史真相
外国籍配偶签证是什么
经济周期四个阶段特征及其影响因素分析
选对枕头,拥抱甜蜜梦境
miRNASNP v4:涵盖17个物种的miRNA关联SNP综合数据库
北京九处温泉度假村全攻略:从设施到交通一应俱全
高压氧舱显著改善心律失常:科学与实践的新突破
如何评估自己的身体恢复能力,怎样变强?
早晨肚子痛的症状可能和你的饮食有关
解读电脑内存条:如何选择合适的内存提升性能?
黑枸杞治什么病
软件设计:从概念到实践的全面解析
全国春季田管和春耕备耕“新新”向荣 科技赋能织就“智慧”春景
补偿n+1的1是底薪还是平均工资
传统文化“清廉六说”
芋头煮多久能熟?不同大小芋头的烹饪时间指南
滑车神经受损时的表现