使用直方图均衡化和自适应直方图均衡化分别对图像(Fig2-1)进行增强处理。注:直方图均衡化使用函数cv.equalizeHist( );自适应直方图均衡化使用的函数主要为cv2.createCLAHE()
时间: 2024-06-16 22:06:25 浏览: 30
直方图均衡化和自适应直方图均衡化是两种常用的图像增强方法,可以提高图像的对比度和细节。下面是它们的介绍:
1. 直方图均衡化:
直方图均衡化是一种全局的图像增强方法,通过重新分布图像的像素值来增强图像的对比度。它的原理是将图像的直方图变成一个均匀分布的直方图,从而使得图像中的像素值更加均匀分布。在OpenCV中,可以使用函数cv.equalizeHist()来实现直方图均衡化。
2. 自适应直方图均衡化:
自适应直方图均衡化是一种局部的图像增强方法,它将图像分成多个小区域,并对每个小区域进行直方图均衡化。这样可以避免全局直方图均衡化带来的过度增强或者细节丢失的问题。在OpenCV中,可以使用函数cv2.createCLAHE()来创建一个自适应直方图均衡化器,然后使用该均衡化器对图像进行增强处理。
相关问题
使用给定的夜景图像,分别进行直方图均衡化和自适应直方图均衡化,输出修改后的效果和直方图。代码和效果都用屏幕
好的,以下是使用Python和OpenCV库进行直方图均衡化和自适应直方图均衡化的代码和效果。
首先,我们需要导入必要的库和读入一张夜景图像。
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('night.jpg', 0)
plt.imshow(img, cmap='gray')
plt.show()
```
读入的夜景图像如下所示:
![image1](https://img-blog.csdn.net/20180713173810703?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p1bXhpYW5kaWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)
接下来,我们可以使用OpenCV中的`equalizeHist()`函数对图像进行直方图均衡化。
```python
equ = cv2.equalizeHist(img)
plt.imshow(equ, cmap='gray')
plt.show()
```
直方图均衡化后的图像如下所示:
![image2](https://img-blog.csdn.net/20180713173929144?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p1bXhpYW5kaWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)
我们还可以使用OpenCV中的`createCLAHE()`函数进行自适应直方图均衡化。这个函数可以自动根据图像的局部区域进行直方图均衡化,从而避免了全局直方图均衡化可能带来的过度增强的问题。
```python
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
clahe_img = clahe.apply(img)
plt.imshow(clahe_img, cmap='gray')
plt.show()
```
自适应直方图均衡化后的图像如下所示:
![image3](https://img-blog.csdn.net/20180713174124912?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p1bXhpYW5kaWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)
最后,我们还可以绘制出原始图像、直方图均衡化后的图像以及自适应直方图均衡化后的图像的直方图。
```python
fig = plt.figure(figsize=(10,10))
# 原始图像
plt.subplot(2,2,1)
plt.imshow(img, cmap='gray')
plt.title('Original Image')
# 直方图均衡化后的图像
plt.subplot(2,2,2)
plt.imshow(equ, cmap='gray')
plt.title('Equalized Image')
plt.hist(equ.ravel(),256,[0,256])
# 自适应直方图均衡化后的图像
plt.subplot(2,2,3)
plt.imshow(clahe_img, cmap='gray')
plt.title('CLAHE Image')
plt.hist(clahe_img.ravel(),256,[0,256])
plt.show()
```
绘制出的直方图如下所示:
![image4](https://img-blog.csdn.net/20180713174303180?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p1bXhpYW5kaWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)
注意,在进行`plt.hist()`操作时,我们需要将图像的像素值展成一维数组。这可以通过使用`ravel()`函数实现。`256,[0,256]`表示我们希望将像素值划分到256个区间中,并在0到256之间进行划分。
python图像直方图均衡化
直方图均衡化是一种能够提高图像对比度的方法,它可以通过重新分布图像的灰度级来扩展动态范围,使图像更加清晰。在Python中,可以使用scikit-image库中的exposure模块来实现直方图均衡化。下面是一个示例代码:
import numpy as np
from skimage import exposure, data
import matplotlib.pyplot as plt
# 读取图像
img = data.moon()
# 进行直方图均衡化
img_eq = exposure.equalize_hist(img)
# 显示原始图像和均衡化后的图像以及它们的直方图
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(8, 8))
ax = axes.ravel()
# 原始图像
ax.imshow(img, cmap=plt.cm.gray)
ax.set_title('Original Image')
# 原始图像的直方图
ax.hist(img.flatten(), bins=256, color='red', alpha=0.5, histtype='stepfilled')
ax.set_title('Histogram of Original Image')
# 均衡化后的图像
ax.imshow(img_eq, cmap=plt.cm.gray)
ax.set_title('Equalized Image')
# 均衡化后的图像的直方图
ax.hist(img_eq.flatten(), bins=256, color='red', alpha=0.5, histtype='stepfilled')
ax.set_title('Histogram of Equalized Image')
# 显示图像和直方图
plt.tight_layout()
plt.show()
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)