ADCHE均衡化matlab代码
时间: 2023-11-25 17:56:51 浏览: 65
直方图均衡化 matlab 代码
5星 · 资源好评率100%
ADCHE均衡化是一种基于直方图的图像增强方法,可以增强图像对比度,使得图像更加清晰。以下是基于MATLAB的ADCHE均衡化代码示例:
```matlab
function img_out = adche(img_in, alpha, beta, gamma)
% ADCHE均衡化函数
% img_in: 输入图像
% alpha: 参数,控制输出图像的对比度
% beta: 参数,控制输出图像的亮度
% gamma: 参数,控制输出图像的饱和度
if nargin < 2
alpha = 0.2;
end
if nargin < 3
beta = 0.8;
end
if nargin < 4
gamma = 0.5;
end
% 将输入图像转换为灰度图像
if size(img_in, 3) == 3
img_in = rgb2gray(img_in);
end
% 获取输入图像的直方图
hist_in = imhist(img_in);
% 计算输入图像的累积分布函数
cdf_in = cumsum(hist_in) / numel(img_in);
% 计算输出图像的累积分布函数
cdf_out = beta * (cdf_in .^ gamma) + (1 - beta) * cdf_in;
% 将输出图像的累积分布函数限制在[alpha, 1]的范围内
cdf_out = (cdf_out - min(cdf_out(:))) ./ (1 - min(cdf_out(:)));
cdf_out = alpha + (1 - alpha) * cdf_out;
% 计算输出图像的灰度级映射表
map = interp1(linspace(0, 1, 256), cdf_out, linspace(0, 1, 256));
% 对输入图像进行灰度级映射
img_out = uint8(interp1(0:255, map, double(img_in)));
end
```
使用方法:
```matlab
% 读取图像
img = imread('lena.png');
% ADCHE均衡化
img_adche = adche(img);
% 显示结果
subplot(1, 2, 1), imshow(img), title('Original Image');
subplot(1, 2, 2), imshow(img_adche), title('ADCHE Enhanced Image');
```
其中,alpha、beta、gamma分别控制输出图像的对比度、亮度和饱和度。如果不指定这些参数,它们的默认值将分别设置为0.2、0.8和0.5。
阅读全文