自适应直方图均衡化matlab
时间: 2023-05-29 15:06:12 浏览: 96
以下是使用MATLAB实现自适应直方图均衡化的示例代码:
```matlab
% 读取图像
img = imread('lena.png');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 设置块的大小
block_size = 32;
% 计算图像的均值和标准差
mean_img = filter2(ones(block_size)/block_size^2, gray_img, 'same');
std_img = sqrt(abs(filter2(ones(block_size)/block_size^2, gray_img.^2, 'same') - mean_img.^2));
% 计算CLAHE的增强函数
clahe_func = @(x) adapthisteq(x,'NumTiles',[floor(size(x,1)/block_size) floor(size(x,2)/block_size)], 'ClipLimit',0.01, 'NBins',256);
% 对图像进行自适应直方图均衡化
enhanced_img = blkproc(gray_img, [block_size block_size], clahe_func);
% 显示原图和增强后的图像
figure;
subplot(1,2,1);
imshow(gray_img);
title('Original Image');
subplot(1,2,2);
imshow(enhanced_img);
title('Enhanced Image');
```
在上面的代码中,首先读取图像并将其转换为灰度图像。然后,设置块的大小并计算图像的均值和标准差。接下来,定义CLAHE的增强函数,然后使用`blkproc`函数对图像进行自适应直方图均衡化。最后,显示原图和增强后的图像。
阅读全文