Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

adapthisteq

对比度受限的自适应直方图均衡化 (CLAHE)

说明

示例

J = adapthisteq(I) 使用限制对比度的自适应直方图均衡化 (CLAHE) 来变换值,从而增强灰度图像 I 的对比度 [1]

J = adapthisteq(I,Name,Value) 使用名称-值对组来控制对比度增强的各个方面。

示例

全部折叠

对图像应用 CLAHE 并显示结果。

I = imread('tire.tif');
J = adapthisteq(I,'clipLimit',0.02,'Distribution','rayleigh');
imshowpair(I,J,'montage');
title('Original Image (left) and Contrast Enhanced Image (right)')

Figure contains an axes object. The axes object with title Original Image (left) and Contrast Enhanced Image (right) contains an object of type image.

将索引彩色图像读入工作区。

[X, MAP] = imread('shadow.tif');

将索引图像转换为真彩色 (RGB) 图像,然后将 RGB 图像转换为 L*a*b* 颜色空间。

RGB = ind2rgb(X,MAP);
LAB = rgb2lab(RGB);

将值缩放到 adapthisteq 函数预期的范围 [0 1]。

L = LAB(:,:,1)/100;

对 L 通道执行 CLAHE。缩放结果,使其回到 L*a*b* 颜色空间使用的范围。

L = adapthisteq(L,'NumTiles',[8 8],'ClipLimit',0.005);
LAB(:,:,1) = L*100;

将生成的图像转换回 RGB 颜色空间。

J = lab2rgb(LAB);

显示原始图像和处理后的图像。

figure
imshowpair(RGB,J,'montage')
title('Original (left) and Contrast Enhanced (right) Image')

Figure contains an axes object. The axes object with title Original (left) and Contrast Enhanced (right) Image contains an object of type image.

增强图像中的阴影区域看起来更暗,高光区域看起来更亮。整体对比度得到改善。

输入参数

全部折叠

灰度图像,指定为二维数值矩阵。

数据类型: single | double | int16 | uint8 | uint16

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数后,但对各个参数对组的顺序没有要求。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 'NumTiles',[8 16] 将图像分成 8 行 16 列的图块。

adapthisteq 将图像分割成的矩形上下文区域(图块)的数量,指定为由正整数组成的二元素向量。原始图像分成大小为 MN 列的图块,'NumTiles' 的值为 [M N]MN 都必须至少是 2。图块总数等于 M*N。图块的最佳数量取决于输入图像的类型,最好通过试验来确定。

数据类型: double

对比度增强限制,指定为 [0, 1] 范围内的数值。限值越高,对比度越大。

'ClipLimit' 是对比度因子,用于防止图像的同质区域出现过饱和现象。由于许多像素落在相同的灰度级范围内,这些区域在图像图块的直方图中呈现尖峰特征。在没有限幅的情况下,自适应直方图均衡化方法在某些情况下可能会产生比原始图像更差的结果。

数据类型: double

用于构建对比度增强变换的直方图 bin 数,指定为正整数。值越高,动态范围越大,处理速度也越慢。

数据类型: double

输出图像数据的范围,指定为下列值之一。

描述
'full'使用输出类的完整范围(例如,对 uint8 使用 [0 255])。
'original'将范围限制为 [min(I(:)) max(I(:))]

数据类型: char | string

所需的直方图形状,指定为下列值之一:

描述
'uniform'创建平坦直方图。
'rayleigh'创建钟形直方图。
'exponential'创建曲线直方图。

'Distribution' 指定 adapthisteq 用作创建对比度变换函数的基础的分布。您选择的分布应取决于输入图像的类型。例如,当使用瑞利分布时,水下图像看起来更自然。

数据类型: char | string

分布参数,指定为非负数。'Alpha' 仅在 'Distribution' 设置为 'rayleigh''exponential' 时使用。

数据类型: double

输出参数

全部折叠

对比度增强图像,以与输入图像 I 具有相同数据类型的二维矩阵形式返回。

算法

CLAHE 对图像中称为图块的小区域进行运算,而不是对整个图像进行运算。adapthisteq 分别计算每个图块的对比度变换函数。每个图块的对比度都得到增强,因此输出区域的直方图与 'Distribution' 值指定的直方图大致匹配。然后使用双线性插值合并相邻图块,以消除人工形成的边界。可以限制对比度,尤其是在同构区域,以避免放大图像中可能存在的任何噪声。

参考

[1] Zuiderveld, Karel. “Contrast Limited Adaptive Histograph Equalization.” Graphic Gems IV. San Diego: Academic Press Professional, 1994. 474–485.

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2006a 之前推出

另请参阅