对MATLAB自带的图像cameraman进行直方图均衡化,并显示均衡化后的效果
时间: 2024-11-22 22:47:17 浏览: 45
在MATLAB中对`cameraman`图像进行直方图均衡化的过程可以分为几个步骤:
1. 加载图像:首先,使用`imread`函数加载`cameraman`图像数据,假设其名为`img`。
```matlab
img = imread('cameraman.tif'); % 替换为你的图片路径
```
2. 计算原图像的直方图:`histeq`函数会自动计算像素值的概率密度函数。
```matlab
histogram = histcounts(double(img), 'Normalization', 'probability');
```
这里我们先将图像转换为双精度数,因为`histcounts`函数需要连续的数据。
3. 使用`histeq`函数进行直方图均衡化:该函数返回一个新的累积分布函数(CDF),然后反向映射到新的像素值范围。
```matlab
cdf = cumsum(histogram);
new_img = imadjust(double(img), [0 cdf(end)], [0 1], []);
```
`imadjust`函数用于调整输入图像的灰度范围,使得输出图像的亮度更加均匀。
4. 显示原图和处理后的图像:通过`figure`和`imshow`命令分别展示原始图像和均衡化的图像。
```matlab
figure;
subplot(1, 2, 1);
imshow(uint8(img)); % uint8用于限制在0-255范围内显示
title('Original Image');
subplot(1, 2, 2);
imshow(uint8(new_img));
title('Histogram Equalized Image');
```
最后,运行以上代码即可看到`cameraman`图像直方图均衡化后的效果。
阅读全文