大白话直方图均衡

简介: 用一句大白话说一下直方图均衡的概念,直方图均衡(histogram equalization)是通过让原图的每个像素点的灰度值通过某个函数变换成另一个值,来提高原图的对比度,具体的函数方程为output = L*T(input)其中output为映射后的灰度值,L为灰度级255,T(r)为灰度值r的累积分布概率,计算方法:灰度值为r及以下的像素点总个数数/总像素点数。

用一句大白话说一下直方图均衡的概念,直方图均衡(histogram equalization)是通过让原图的每个像素点的灰度值通过某个函数变换成另一个值,来提高原图的对比度,具体的函数方程为output = L*T(input)其中output为映射后的灰度值,L为灰度级255,T(r)为灰度值r的累积分布概率,计算方法:灰度值为r及以下的像素点总个数数/总像素点数。
对于数学上的一些分析,这里就不写了,想了解具体的可以看这里
以下是效果图片和代码:

原图


histogram_equalize
Figure_1

直方图均衡之后


his_equa_out
Figure_1_1
# img_hist = cv2.calcHist(img, [1], None, [256], [0, 256])另一个计算直方图的函数
plt.hist(img[:,:,0].flatten(), 256, [0, 256], color = 'r')
# plt.plot(img_hist)
plt.title('original')
plt.show()
img_yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
# equalize the histogram of the Y channel
img_yuv[:,:,0] = cv2.equalizeHist(img_yuv[:,:,0])   # only for 1 channel
plt.hist(img_yuv[:,:,0].flatten(), 256, [0, 256], color='r')
img_output = cv2.cvtColor(img_yuv, cv2.COLOR_YUV2BGR)   # y: luminance
# img_equalized_hist = cv2.calcHist(img_yuv, [1], None, [256], [0, 256])
# plt.plot(img_equalized_hist)
plt.title('equalized')
plt.show()
# convert the YUV image back to RGB format
cv2.imwrite(path, img_output)
cv2.imshow('Color input image', img)
cv2.imshow('Histogram equalized', img_output)
key = cv2.waitKey(0)
cv2.destroyAllWindows()
目录
相关文章
|
自然语言处理 数据安全/隐私保护 iOS开发
ChatGPT使用学习(三):ChatGPT桌面版使用
本文介绍了ChatGPT桌面版,一个由OpenAI推出的独立桌面应用程序,支持离线使用、数据隐私保护和快速响应。用户界面友好,支持多语言交互。桌面版无需网络连接,保护用户数据隐私,并提供快速响应。用户可通过Github链接下载安装,使用谷歌账号登录。此外,OpenAI官方也发布了适用于macOS的桌面端应用,并向所有用户免费开放。
483 1
|
存储 API 数据库
信息系统架构模型
信息系统架构模型
568 1
|
机器学习/深度学习 人工智能 自然语言处理
CosyVoice 与 SenseVoice:阿里FunAudioLLM两大语音生成项目的深度评测
近年来,基于大模型的语音人工智能技术发展迅猛,为自然语音人机交互带来新的可能。通义语音大模型无疑是这一领域的佼佼者。它涵盖了语音理解与语音生成两大核心能力,可支持多种语音任务,包括多语种语音识别、语种识别、情感识别、声音事件检测以及语音合成等
4136 1
|
缓存 运维 Linux
保姆级python项目离线部署服务器教程只需这一篇就够了(建议收藏)
这篇文章提供了详尽的Python项目在离线Linux(CentOS)服务器上的部署教程。作者首先介绍了环境背景,强调了无网络环境和使用有网络的CentOS虚拟机准备安装包的重要性。教程分为两部分:外网环境搭建和内网离线安装。在外网环境中,包括下载Python 3.9.0安装包、传输至服务器、安装依赖包,并使用pip3下载项目所需依赖。内网安装则涉及依赖包的复制和Python环境的同样步骤。最后,作者分享了运行项目的命令,并总结了离线安装的整个流程,提醒读者注意可能出现的问题。
保姆级python项目离线部署服务器教程只需这一篇就够了(建议收藏)
|
域名解析 编解码 网络协议
【实操手册】一篇文章教你快速开始使用视频点播
阿里云视频点播(VoD)是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速、视频播放于一体的一站式音视频点播解决方案。 用户可以通过阿里云管理控制台进行基本和高级 VoD 配置、操作,还可以通过视频点播开发工具包(SDK)或直接在应用程序中进行 RESTful API 调用执行基本和高级 VOD任务。
4486 0
|
存储 前端开发 Java
Spring Boot之文件上传:实现简单易用的文件上传功能
本篇详细介绍了在Spring Boot应用中实现文件上传功能的步骤。从创建前端页面、编写Controller处理、文件存储与访问、添加路由与页面展示等方面进行了详细讲解,并提供了代码示例。通过学习本文,读者可以轻松了解如何在Spring Boot项目中实现简单易用的文件上传功能,从而在实际应用中更好地满足用户需求。
4896 0
Spring Boot之文件上传:实现简单易用的文件上传功能
|
SQL 分布式计算 搜索推荐
为什么阿里云要做流批一体?
流批一体已经从理论走向实践,并在 2020 年迎来落地元年。
为什么阿里云要做流批一体?
python 如何通过海表面高度数据计算海表地转流速、并绘制流线图
最近,学习海气相互作用时,老师布置了一个小作业。通过卫星高度计测得的海表面高度异常数据,计算其表层地转流速,并研究其与海表面高度异常的关系。
python 如何通过海表面高度数据计算海表地转流速、并绘制流线图
|
存储 C语言 Perl
为什么要使用交叉引用?西门子S7-200 SMART的交叉引用表、字节使用表、位使用表如何操作?
本篇我们来学习西门子S7-200 SMART的交叉引用表、字节使用表、位使用表如何操作。首先我们先来看为什么要使用交叉引用:通过交叉引用窗口可以查看程序中参数赋值和存储器使用情况,避免重复赋值。
为什么要使用交叉引用?西门子S7-200 SMART的交叉引用表、字节使用表、位使用表如何操作?
|
安全 网络协议 Unix
为 Docker 配置 TLS
Docker 默认通过 `Unix Socket` 对外提供接口,也支持 `HTTP` 的方式,后者允许我们能够在本地控制远程服务器中的 Docker。如果你想让远程服务器中的 Docker 以安全的方式被访问,可为其配置 TLS,做到服务端和客户端的双向验证。本文总结了配置 Docker TLS 过程中的实践经验。