用matlab编制一个对图像进行直方图均衡化处理的程序。
时间: 2024-10-21 10:17:24 浏览: 88
在MATLAB中,直方图均衡化是一种常用的图像增强技术,它可以改善图像对比度,使得灰度级分布更为均匀。以下是基本的直方图均衡化的步骤,包括计算直方图、查找表生成以及应用查找表到原始图像上:
```matlab
function eqImage = histogramEqualization(inputImage)
% 计算直方图
hist, bins = histogram(inputImage(:)); % 转置成一维向量以便于计算
% 确定最大最小灰度级别
maxGray = max(hist);
minGray = min(hist);
% 查找表生成
lut = zeros(256, 1); % 创建查找表,范围从0到255
for i = minGray:maxGray
lut(i) = double(i) / (maxGray - minGray); % 线性映射
end
% 应用查找表
eqImage = im2uint8(imresize(lut, size(inputImage))); % 使用imresize对查找表进行扩展
eqImage = mat2gray(eqImage); % 因为lut结果是0-1之间,需要转换回灰度图像
eqImage = imadjust(eqImage, [0, 1], [minGray, maxGray]); % 最后再微调一下对比度
end
% 示例使用
input = imread('your_image.jpg'); % 替换为你要处理的图片文件名
eq_output = histogramEqualization(input);
imshow(eq_output);
```
阅读全文