he、ahe、clahe matlab代码
时间: 2023-05-17 15:01:48 浏览: 144
HE(Histogram Equalization)直方图均衡化、AHE(Adaptive Histogram Equalization)自适应直方图均衡化和CLAHE(Contrast Limited Adaptive Histogram Equalization)限制对比度自适应直方图均衡化是 Matlab 中三种图像增强的方法。
HE 是最基本的直方图均衡化方法,它通过对图像像素值的分布进行统计,然后将直方图均衡化,使得图像像素值分散在更广的范围内。虽然这种方法可以增强图像对比度,但是有时候会导致局部对比度失真,因为它将整幅图像视为一个整体进行处理。
而 AHE 是对 HE 的一种改进,它根据局部像素值的分布进行直方图均衡化,使得不同局部的对比度得到增强,避免出现全局的对比度失真,但是它的局限性在于它无法处理具有大块相同像素值的图像区域。
CLAHE 是针对 AHE 的局限性所做的改进,它对 AHE 进行一定的限制,避免在局部进行直方图均衡化时出现过度增强的情况。具体地说,CLAHE 会将图像分成许多小块,对每个小块进行 AHE,但它会限制每个小块中增强后的像素值在一个预定范围内,这样就不会出现像素值的过度增强或失真。
在 Matlab 中,使用这三种方法可以轻松实现对图像的增强,对于选用哪种方法主要取决于图像本身及需求,需要用户根据具体情况来选择。
相关问题
AHE和CLAHE matlab代码实现
以下是AHE和CLAHE的Matlab代码实现。
AHE:
```matlab
function J = AHE(I,ws)
% Adaptive Histogram Equalization
% I: input image
% ws: window size
I = im2double(I);
[m,n] = size(I);
J = zeros(m,n);
for i = 1:m
for j = 1:n
i1 = max(i-ws,1);
i2 = min(i+ws,m);
j1 = max(j-ws,1);
j2 = min(j+ws,n);
J(i,j) = histeq(I(i1:i2,j1:j2),256);
end
end
end
```
CLAHE:
```matlab
function J = CLAHE(I,ws,K)
% Contrast-Limited Adaptive Histogram Equalization
% I: input image
% ws: window size
% K: contrast enhancement factor
I = im2double(I);
[m,n] = size(I);
J = zeros(m,n);
for i = 1:m
for j = 1:n
i1 = max(i-ws,1);
i2 = min(i+ws,m);
j1 = max(j-ws,1);
j2 = min(j+ws,n);
J(i,j) = adapthisteq(I(i1:i2,j1:j2),'NumTiles',[8,8],'ClipLimit',K);
end
end
end
```
其中,AHE函数实现了自适应直方图均衡化,ws表示窗口大小;CLAHE函数实现了对比度受限的自适应直方图均衡化,ws表示窗口大小,K表示对比度增强因子。
AHE和CLAHE matlab代码实现 主函数
以下是 AHE 和 CLAHE 的 Matlab 代码实现主函数:
```matlab
% 读取图像
img = imread('input.jpg');
% 灰度化
gray_img = rgb2gray(img);
% AHE
ahe_img = adapthisteq(gray_img);
% CLAHE
clahe_img = adapthisteq(gray_img, 'ClipLimit', 0.02, 'Distribution', 'rayleigh');
% 显示图像
subplot(2, 2, 1);
imshow(img);
title('原图');
subplot(2, 2, 2);
imshow(gray_img);
title('灰度图');
subplot(2, 2, 3);
imshow(ahe_img);
title('AHE');
subplot(2, 2, 4);
imshow(clahe_img);
title('CLAHE');
```
其中,`adapthisteq()` 函数是 Matlab 中用于实现 AHE 和 CLAHE 的函数。`'ClipLimit'` 和 `'Distribution'` 是 CLAHE 中的两个参数,可以根据实际情况进行调整。`subplot()` 函数用于在同一窗口内显示多张图像。