OpenCV Histogram Equalization

本文旨在介绍直方图均衡化的概念及其在改善图片对比度中的应用。当图像像素值集中在某一范围内时,直方图均衡化会通过拉伸像素分布来增强图像对比度。首先,我们利用Numpy实现直方图均衡化,观察到高灰度值的集中现象,并通过转换函数将集中分布的直方图映射到更宽的范围。然后,探讨了OpenCV中的cv2.equalizeHist()函数,该函数适用于灰度图像,能有效提升对比度。最后,提到了局部自适应直方图均衡化(CLAHE),它将图像划分为小块并分别均衡化,特别适用于像素变化幅度较小的区域。

Goal:
Learning the concept of histogram equailze and how to use it to improve the contrast of pictures


Theory:
If most of the pixel values in an images are concentrated in one pixel range.For example, if a picture is bright as a whole, all pixels should be very high, but the pixel value distribution of a high quality image should be very wide.So we should horizontally stretch the histogram.
In general,this operation will improve the contrast of the image.
在这里插入图片描述
First we use Numpy for histogram equlaization, and then learn how to use OpenCV for it.


Numpy


                
直方图均衡化(Histogram equalization)是一种用于增强图像对比度的图像处理技术,下面从介绍、原理和应用方面进行阐述: ### 介绍 直方图均衡化是一种通过调整图像的灰度分布,使得图像的灰度值更均匀地分布在整个灰度范围内的方法。该方法可以增强图像的全局对比度,使得图像中的细节更加清晰可见。它是一种简单且有效的图像增强技术,广泛应用于各种图像处理领域。 ### 原理 直方图均衡化的基本原理是通过对图像的灰度直方图进行非线性变换,将原始图像的灰度分布映射到一个均匀分布的灰度空间。具体步骤如下: 1. **计算原始图像的灰度直方图**:统计图像中每个灰度级出现的像素数量。 2. **计算累积分布函数(CDF)**:对灰度直方图进行累积求和,得到每个灰度级的累积概率。 3. **进行灰度映射**:根据累积分布函数,将原始图像的每个像素的灰度值映射到新的灰度值,使得新的灰度分布更加均匀。 假设原始图像的灰度级范围是 $[0, L - 1]$,其中 $L$ 是灰度级的总数。对于图像中的每个像素 $x$,其原始灰度值为 $r$,经过直方图均衡化后的新灰度值 $s$ 可以通过以下公式计算: $$s = T(r) = (L - 1) \sum_{i = 0}^{r} p(i)$$ 其中,$p(i)$ 是灰度级 $i$ 的概率密度函数,即该灰度级在图像中出现的频率。 ### 应用 - **医学图像处理**:在X光、CT、MRI等医学图像中,直方图均衡化可以增强图像的对比度,帮助医生更清晰地观察病变部位和组织结构。 - **遥感图像处理**:在卫星图像和航空图像中,由于光照条件和地物反射特性的差异,图像的对比度可能较低。直方图均衡化可以改善图像的视觉效果,便于进行地物分类、目标检测等任务。 - **数字摄影**:在摄影中,由于拍摄环境的限制,照片可能会出现对比度不足的问题。直方图均衡化可以作为一种简单的后期处理手段,提高照片的质量。 以下是使用Python和OpenCV库实现直方图均衡化的示例代码: ```python import cv2 import numpy as np import matplotlib.pyplot as plt # 读取图像 image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 进行直方图均衡化 equalized_image = cv2.equalizeHist(image) # 显示原始图像和均衡化后的图像 plt.subplot(121), plt.imshow(image, cmap='gray') plt.title('Original Image'), plt.xticks([]), plt.yticks([]) plt.subplot(122), plt.imshow(equalized_image, cmap='gray') plt.title('Equalized Image'), plt.xticks([]), plt.yticks([]) plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹏AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值