matlab自编一个直方图均衡化的函数,输入输出格式:Y = myhisteq(X). 并用自编的函数对‘tire.tif’进行直方图均衡化.
时间: 2024-09-10 15:12:39 浏览: 65
在MATLAB中,直方图均衡化是一种常用的数据增强技术,用于改善图像对比度。我们可以自定义一个函数`myhisteq`来实现这一过程。以下是一个简单的直方图均衡化的步骤和代码示例:
```matlab
function Y = myhisteq(X)
% 计算输入矩阵X的直方图
hist, bins = histogram(X(:), 'Normalization', 'probability');
% 定义直方图的最大最小值
min_val = min(min(hist));
max_val = max(max(hist));
% 算法的核心部分:根据累积分布函数(CDF)线性变换原始像素值
Y = accumarray(bins, hist .* (max_val - min_val) + min_val, [], @(x)x(1));
end
% 加载tire.tif图像
I = imread('tire.tif');
% 对图像进行直方图均衡化
enhanced_I = myhisteq(I);
% 显示原图像和直方图均衡化后的图像
subplot(1, 2, 1);
imshow(I);
title('Original Image');
subplot(1, 2, 2);
imshow(enhanced_I);
title('Histogram Equalized Image');
```
在这个函数中,`histogram`函数用于计算输入图像像素值的频率分布,`accumarray`函数则根据这个分布对像素进行线性变换,实现亮度的均匀分布。
注意:`imread`函数用于读取TIFF图像,如果在你的环境中无法找到该文件,你需要确保它存在于正确的路径下,或者提供一个有效的图像文件名。
阅读全文