AHE和CLAHE matlab代码实现 主函数
时间: 2024-02-12 17:31:32 浏览: 27
以下是 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()` 函数用于在同一窗口内显示多张图像。
相关问题
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来实现。
下面是AHE的Matlab代码实现:
```matlab
% 读入图像
img = imread('lena.png');
% 将图像转换为灰度图像
if size(img,3)==3
img = rgb2gray(img);
end
% 计算累积分布函数
cdf = zeros(256,1);
[height,width] = size(img);
for i = 1:height
for j = 1:width
cdf(img(i,j)+1) = cdf(img(i,j)+1) + 1;
end
end
for i = 2:256
cdf(i) = cdf(i) + cdf(i-1);
end
% 计算直方图均衡
h_eq = round(cdf/(height*width)*255);
% 应用到图像上
img_eq = img;
for i = 1:height
for j = 1:width
img_eq(i,j) = h_eq(img(i,j)+1);
end
end
% 显示原图和直方图均衡后的图像
figure(1)
subplot(2,2,1)
imshow(img)
title('Original Image')
subplot(2,2,2)
imhist(img)
title('Histogram of Original Image')
subplot(2,2,3)
imshow(img_eq)
title('Equalized Image')
subplot(2,2,4)
imhist(img_eq)
title('Histogram of Equalized Image')
```
下面是CLAHE的Matlab代码实现:
```matlab
% 读入图像
img = imread('lena.png');
% 将图像转换为灰度图像
if size(img,3)==3
img = rgb2gray(img);
end
% 设置参数
win_size = 64; % 窗口大小
clip_limit = 0.01; % 截断限制
% 计算CLAHE
[img_eq, ~] = adapthisteq(img,'NumTiles',[floor(size(img,1)/win_size) floor(size(img,2)/win_size)],'ClipLimit',clip_limit);
% 显示原图和CLAHE后的图像
figure(1)
subplot(2,2,1)
imshow(img)
title('Original Image')
subplot(2,2,2)
imhist(img)
title('Histogram of Original Image')
subplot(2,2,3)
imshow(img_eq)
title('CLAHE Image')
subplot(2,2,4)
imhist(img_eq)
title('Histogram of CLAHE Image')
```
其中,CLAHE使用了Matlab自带的函数`adapthisteq`来实现。在参数中,`NumTiles`指定了将图像划分成多少个小块,`ClipLimit`指定了截断限制的值。