直方图均衡化图像增强
1、原理:将原始图像的灰度图从比较集中的某个灰度区间均匀分布在整个灰度空间中,实现对图像的非线性拉伸,重新分配图像像素值。
2、应用场景:对于图像背景或者前景太亮(曝光严重)可以得到较好的显示。
3、算法特点:直方图均衡化保证在图像像素映射过程中原来的大小关系保持不变,即较亮的区域依旧较亮,较暗的依旧较暗,只是对比度增加,不能明暗颠倒;保证像素映射函数的值域在0和255之间。累积分布函数是单增长函数,并且值域是0到1。
4、算法流程:(下图可以具体理解)
1)统计直方图中每个灰度级出现的次数,计算原始灰度图像的像素概率分布
2)根据像素概率分布获取图像累积分布函数
3)根据映射函数获取变换后的图像
5、利用库函数代码实现:
# coding:utf-8 import cv2 import matplotlib.pyplot as plt import numpy as np path = r"people.jpg" path1 = r"people1.jpg" path2 = r"people2.jpg" def ku(): # 库函数 img = cv2.imread(path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 可以转换为灰度图 # 彩色图像均衡化,需要分解通道 对每一个通道均衡化 (b, g, r) = cv2.split(img) gray = cv2.equalizeHist(gray) bH = cv2.equalizeHist(b) gH = cv2.equalizeHist(g) rH = cv2.equalizeHist(r) # 合并每一个通道 result = cv2.merge((bH, gH, rH)) cv2.imwrite(path1, result) cv2.imwrite(path2, gray)
结果:
原图 | 灰度图结果 | 彩色图结果 |
![]() |
![]() |
![]() |
原图灰度级 | 直方图均衡化后灰度级 | |
![]() |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)