adapthisteq
对比度受限的自适应直方图均衡化 (CLAHE)
说明
示例
应用对比度受限的自适应直方图均衡化 (CLAHE)
对图像应用 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)')
对索引彩色图像应用 CLAHE
将索引彩色图像读入工作区。
[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')
增强图像中的阴影区域看起来更暗,高光区域看起来更亮。整体对比度得到改善。
输入参数
I
— 灰度图像
二维数值矩阵
灰度图像,指定为二维数值矩阵。
数据类型: single
| double
| int16
| uint8
| uint16
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量后,但对各个参量对组的顺序没有要求。
如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: "NumTiles",[8 16]
将图像分成 8 行 16 列的图块。
NumTiles
— 图块数量
[8,8]
(默认) | 由正整数组成的二元素向量
adapthisteq
将图像分割成的矩形上下文区域(图块)的数量,指定为由正整数组成的二元素向量。原始图像分成大小为 M
行 N
列的图块,NumTiles
的值为 [M N]
。M
和 N
都必须至少是 2
。图块总数等于 M*N
。图块的最佳数量取决于输入图像的类型,最好通过试验来确定。
数据类型: double
ClipLimit
— 对比度增强限制
0.01
(默认) | [0, 1] 范围内的数值
对比度增强限制,指定为 [0, 1] 范围内的数值。限值越高,对比度越大。
ClipLimit
是对比度因子,用于防止图像的同质区域出现过饱和现象。由于许多像素落在相同的灰度级范围内,这些区域在图像图块的直方图中呈现尖峰特征。在没有限幅的情况下,自适应直方图均衡化方法在某些情况下可能会产生比原始图像更差的结果。
数据类型: double
NBins
— 用于构建对比度增强变换的直方图 bin 数
256
(默认) | 正整数
用于构建对比度增强变换的直方图 bin 数,指定为正整数。值越高,动态范围越大,处理速度也越慢。
数据类型: double
Range
— 输出数据的范围
"full"
(默认) | "original"
输出图像数据的范围,指定为下列值之一。
值 | 描述 |
---|---|
"full" | 使用输出类的完整范围(例如,对 uint8 使用 [0 255])。 |
"original" | 将范围限制为 [min(I(:)) max(I(:))] 。 |
数据类型: char
| string
Distribution
— 所需的直方图形状
"uniform"
(默认) | "rayleigh"
| "exponential"
所需的直方图形状,指定为下列值之一:
值 | 描述 |
---|---|
"uniform" | 创建平坦直方图。 |
"rayleigh" | 创建钟形直方图。 |
"exponential" | 创建曲线直方图。 |
Distribution
指定 adapthisteq
用作创建对比度变换函数的基础的分布。您选择的分布应取决于输入图像的类型。例如,当使用瑞利分布时,水下图像看起来更自然。
数据类型: char
| string
Alpha
— 分布参数
0.4
(默认) | 非负数
分布参数,指定为非负数。Alpha
仅在 Distribution
设置为 "rayleigh"
或 "exponential"
时使用。
数据类型: double
算法
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++ 代码。
adapthisteq
支持 C 代码生成(需要 MATLAB® Coder™)。有关详细信息,请参阅图像处理的代码生成。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2006a 之前推出R2022b: 支持基于线程的环境
adapthisteq
现在支持基于线程的环境。
R2022a: 使用 GPU Coder 生成 CUDA 代码
adapthisteq
现在支持生成优化的 CUDA® 代码(需要 GPU Coder™)。
R2021a: 使用 MATLAB Coder 生成 C 代码
现在 adapthisteq
支持 C 代码生成(需要 MATLAB Coder)。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)