赞
踩
当图像中存在广泛的对比度差异时,传统的直方图均衡化可能无法产生理想的结果。为了解决这个问题,引入了限制对比度自适应直方图均衡化(CLAHE)方法,它将图像分成小块,对每个小块进行直方图均衡化,并在均衡化过程中限制对比度增强的幅度。这可以避免过度增强噪声或细节,同时改善图像的视觉质量。
CLAHE的原理如下:
1. 将图像划分为不重叠的小块(称为tiles)。
2. 在每个小块中,计算直方图。
3. 对每个小块的直方图进行均衡化,以确保小块内的像素分布更加均匀。
4. 在进行直方图均衡化时,引入一个限制参数,它控制了对比度增强的程度。如果某个小块的直方图超过了这个限制,那么对比度增强会被限制,以避免过度增强。
CLAHE 的数学表示如下:
令
I
(
x
,
y
)
I(x, y)
I(x,y) 表示原始图像上坐标
(
x
,
y
)
(x, y)
(x,y) 处的像素值,
I
clahe
(
x
,
y
)
I_{\text{clahe}}(x, y)
Iclahe(x,y) 表示经过CLAHE处理后的图像上坐标
(
x
,
y
)
(x, y)
(x,y) 处的像素值。
1. 将图像划分为大小为
N
×
N
N \times N
N×N 的小块:
I
block
(
x
,
y
)
I_{\text{block}}(x, y)
Iblock(x,y),其中
(
x
,
y
)
(x, y)
(x,y) 属于小块内的像素坐标。
2. 对每个小块
I
block
(
x
,
y
)
I_{\text{block}}(x, y)
Iblock(x,y),计算直方图
H
block
(
I
block
)
H_{\text{block}}(I_{\text{block}})
Hblock(Iblock)。
3. 计算累积分布函数(CDF):
C
D
F
block
(
I
block
)
CDF_{\text{block}}(I_{\text{block}})
CDFblock(Iblock),并进行直方图均衡化。
4. 限制对比度增强的阈值为
C
C
C,在进行直方图均衡化时,对
C
D
F
block
(
I
block
)
CDF_{\text{block}}(I_{\text{block}})
CDFblock(Iblock) 进行剪切,以限制增强程度。
CLAHE 的意义在于它能够提高图像的视觉质量,同时避免了在局部区域过度增强对比度引起的噪声和伪影。它在医学图像、无人驾驶、图像增强等领域有广泛的应用。
以下是使用 OpenCV 中的 cv2.createCLAHE
函数进行CLAHE处理的示例代码:
import cv2 import matplotlib.pyplot as plt def CLAHE(image): # 读取图像 image = cv2.imread(image, cv2.IMREAD_GRAYSCALE) if image is None: print('Unable to load input_image!') return else: # 创建CLAHE对象 clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)) # 应用CLAHE处理 clahe_image = clahe.apply(image) plt.figure(figsize=(6, 4)) plt.subplot(121), plt.title('Original image'), plt.axis('off') plt.imshow(image, cmap='gray', vmin=0, vmax=255) plt.subplot(122), plt.title('Clahe image'), plt.axis('off') plt.imshow(clahe_image, cmap='gray', vmin=0, vmax=255) plt.tight_layout() plt.show() imgfile1='./Images/cat.jpg' CLAHE(imgfile1)
在这个示例中,clipLimit
参数控制了对比度的限制程度,tileGridSize
参数定义了图像分块的大小。您可以根据需要调整这些参数以达到最佳效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。