大白话直方图均衡

简介: 用一句大白话说一下直方图均衡的概念,直方图均衡(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()
目录
相关文章
|
6月前
|
C#
C#的类和对象的概念学习案例刨析
【5月更文挑战第17天】C#是一种面向对象的语言,以类和对象为核心。类作为对象的模板,定义了属性(如Name, Age)和行为(如Greet)。对象是类的实例,可设置属性值。封装通过访问修饰符隐藏实现细节,如Customer类的私有name字段通过Name属性访问。继承允许新类(如Employee)从现有类(Person)继承并扩展。多态让不同对象(如Circle, Square)共享相同接口(Shape),实现抽象方法Area,提供灵活的代码设计。
65 1
|
6月前
|
存储 分布式计算 Java
深入探究JAVA编程语言:概念、应用与实例分析
**JAVA**是广泛应用的高级编程语言,以其易学性、跨平台能力和高效的性能著称。它采用面向对象编程,强调封装、继承和多态,且具备平台无关性、内置安全性和多线程支持。JAVA广泛应用于Web开发(如JSP、Servlet)、移动应用(Android开发)、大数据处理(Hadoop、Spark)和桌面应用。通过一个计算两数之和的简单示例,展示了JAVA的易读性和面向对象特性,帮助读者理解JAVA在实际开发中的运用。
|
前端开发 JavaScript Java
C++零碎概念介绍
C++零碎概念介绍
|
安全 Linux 程序员
Linux环境编程必须搞懂的几个概念
Linux环境对于初学者来说,必须深刻理解重点概念才能更好的编写代码,实现业务功能,下面就几个重要的及常用的知识点进行说明。搞懂这几个概念后以免在将来的编码出现混淆。
20823 0
Linux环境编程必须搞懂的几个概念
|
编解码 缓存 NoSQL
7点 讲明白地图切片的概念与原理
7点 讲明白地图切片的概念与原理
475 0
|
安全 编译器 网络安全
一些碎碎念以及类和对象零碎知识点补充
一些碎碎念以及类和对象零碎知识点补充
104 0
一些碎碎念以及类和对象零碎知识点补充
|
Java API 定位技术
Java后台专业术语
OOD(Object Oriented Design):面向对象设计 OOA(Object Oriented Analysis):面向对象分析
109 0
|
数据采集 算法 关系型数据库
透了,Mysql索引中最不容易记的三个知识点通透了
Mysql索引中最不容易记的三个知识点通透了
108 0
透了,Mysql索引中最不容易记的三个知识点通透了
下一篇
无影云桌面