# Histogram 直方图

Histogram / 图像直方图 / 灰度直方图

# 一般解释

A histogram is a graphical representation that organizes a group of data points into user-specified ranges. It is similar in appearance to a bar graph. The histogram condenses a data series into an easily interpreted visual by taking many data points and grouping them into logical ranges or bins.

# 图像领域解释

Consider an image whose pixel values are confined to some specific range of values only. For eg, brighter image will have all pixels confined to high values. But a good image will have pixels from all regions of the image. So you need to stretch this histogram to either ends (as given in below image, from wikipedia) and that is what Histogram Equalization does (in simple words). This normally improves the contrast of the image.

# 直接理解

# 宏观意义

# 应用举例

1 直方图均衡，利用一个变换函数将输入图像的灰度级映射到输出图像, 使输出图像各灰度级相对均匀分布。

2 图像的理解，结合轮廓形态学等可以快速实现分割等。

```# Observation in OpenCV
import cv2, numpy as np
from matplotlib import pyplot as plt
# opencv
cv2.calcHist([img], [0], None, [256], [0, 256])
plt.hist(img.ravel(), 256, [0, 256])
plt.show()
## numpy
# np.histogram(img.flatten(),256,[0,256])
# cdf = hist.cumsum()
# cdf_normalized = cdf * hist.max()/ cdf.max()
# plt.plot(cdf_normalized, color = 'b')
# plt.hist(img.flatten(),256,[0,256], color = 'r')
# plt.xlim([0,256])
# plt.legend(('cdf','histogram'), loc = 'upper left')
# plt.show()```

```# Histograms Equalization in OpenCV
equ = cv2.equalizeHist(img)
cv2.imwrite('res.png',res)```

CLAHE (Contrast Limited Adaptive Histogram Equalization)

```# import cv2, numpy as np
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(img)
cv2.imwrite('clahe_2.jpeg',cl1)```

CLAHE同普通的自适应直方图均衡不同的地方主要是其对比度限幅。这个特性也可以应用到全局直方图均衡化中，即构成所谓的限制对比度直方图均衡（CLHE），但这在实际中很少使用。在CLAHE中，对于每个小区域都必须使用对比度限幅。CLAHE主要是用来克服AHE的过度放大噪音的问题。

# 主要难点

0 条评论

• ### Color model 色彩模型

A color model is a system for creating a full range of colours from a small set ...

• ### PI 圆周率

3.141592653589793238462643383279502884197169399375105820974944592307816406286208...

• ### 腾讯多媒体实验室亮相首届世界5G大会，展现5G+多媒体前沿研究成果

11月20-23日，由北京市政府、国家发改委、科技部、工信部共同主办的首届“世界5G大会”在北京举办，全球信息通信领域最具影响力的科学家、世界知名5G上下游企...

• ### 解决mac升级10.11后，出现的 xcrun: error: invalid active developer path, missing xcrun 错误

前天把小mac升级到了10.11，结果今天在终端里使用git的时候，弹出一行莫名其妙的错误：xcrun: error: invalid active devel...

• ### 面试官很牛，逼我尿遁

今天等来了久违的面试。在我的印象里，面试就是要面对面的。因为疫情的缘故，过去几周我经历了太多的视频和电话面试，总是凉凉。想到一本正经的面试官，下半身可能藏在被子...

• ### 保证service存活

Android开发的过程中，每次调用startService(Intent)的时候，都会调用该Service对象的onStartCommand(Intent,i...

• ### 【LeetCode】最小栈

设计一个支持 push，pop，top 操作，并能在常数时间内检索到最小元素的栈。

• ### PLC使用过程中的经验和技巧

随着社会的发展，plc可编程序控制器在工业生产中得到了广泛的使用，但是其维护检修方法和技巧，很多工程师都不得法，下面为您介绍PLC使用过程的经验和技巧。 1、P...

• ### [Java 进阶]异常

异常：程序在运行过程中发生由于硬件设备问题、软件设计错误等导致的程序异常事件。 世上没有百分之百完美的程序。程序总难免存在各式各样的问题。所以，程序中添加对于错...