matlab直方图AHE
时间: 2023-10-19 17:33:24 浏览: 63
在MATLAB中,直方图自适应均衡化(Adaptive Histogram Equalization,AHE)是一种用于增强图像对比度的方法。AHE能够根据图像的局部特点自适应地进行直方图均衡化,从而改善图像的局部对比度并获得更好的视觉效果。采用AHE可以避免全局直方图均衡化带来的不良影响,如过度增强噪声或平滑细节。<span class="em">1</span>
#### 引用[.reference_title]
- *1* [直方图均衡化,直方图均衡化原理,matlab](https://download.csdn.net/download/weixin_42696333/22355206)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关问题
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`指定了截断限制的值。
自适应直方图均衡化(ahe)matlab代码
为了实现自适应直方图均衡化(Adaptive Histogram Equalization,AHE),我们可以使用MATLAB编写以下代码:
1. 导入图像并将其转换为灰度图像:
```
im = imread('image.jpg');
im_gray = rgb2gray(im);
```
2. 指定AHE块的大小:
```
block_size = 16;
```
3. 定义AHE函数并在每个块上应用:
```
% 定义AHE函数
ahe_fn = @(block_struct) histeq(block_struct.data);
% 应用AHE函数到每一个块
im_ahe = blockproc(im_gray, [block_size, block_size], ahe_fn);
```
4. 显示原始图像和AHE处理图像:
```
subplot(1,2,1); imshow(im_gray); title('原始图像');
subplot(1,2,2); imshow(im_ahe); title('AHE处理图像');
```
这个代码片段将导入一个图像,将其转换为灰度图像,然后使用16×16块的AHE函数在每个块上应用AHE处理。最后,它将原始图像和AHE处理图像显示在同一窗口中。