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)
原图如下:
灰度图像直方图均衡化后效果如下:
热门推荐
无人机+数据链:无线通信技术原理概述
上海至昆明深度游攻略:热门景点、美食体验与实用行程规划指南
湖南水稻面积、产量居全国首位
供应商关系管理(SRM)中的供应商绩效评估
什么是套利交易?详细指南
农用小苏打杀虫最佳配方
新西兰都有哪些节日
婚前买房财产属于谁
元始天尊为何不直接摧毁魔丸,干嘛非要弄一个天劫咒呢?
【健康科普】让家长担心的儿童“扁平足” 需要治疗吗?
从边陲小镇到口岸明珠的巨变
激素过敏性皮炎擦什么药
春季种植花草全攻略:26种花草推荐及种植时间指南
深圳坪山河: 一条河的重生 人水融合诗意栖居
改善大便不成形的原因及健康生活方式建议探讨
梅花开花时间及凋谢特点(探究梅花开花时间和凋谢特点的关键因素)
在佛山强取豪夺的日本兵 通过砍杀中国人进行勇气测试
风景虽好安全更重要 这份高海拔自驾游安全手册请收藏
微软、OpenAI欲砸千亿美元打造AI超算,挑战“英伟达霸权”?
揭秘舍利子:神秘宗教遗物的形成之谜
孩子上学需要居住证明吗?
ATX与EATX主板区别比较
秦岭淮河:一条分隔南北的自然界线,更是一道文化的桥梁
无人机遥感预警、AI水体藻情识别 南京为秦淮水域开展“生态大体检”
SCI论文写作的结构与逻辑安排
腰肌劳损怎么治疗好的方法
解耦的艺术:通过DPI依赖倒置实现解耦
后羿射日的启示:勇气、责任与人与自然的和谐
AI技术在金融风控中的应用有哪些?
正山小种“过红锅”工艺解析:武夷传统红茶的灵魂密码