MATLAB怎么对一张灰度图片进行直方图均衡化
时间: 2024-10-18 18:08:16 浏览: 22
在MATLAB中,直方图均衡化是一个常用的技术,用于增强图像对比度,特别适用于灰度图像。以下是基本步骤:
1. **加载图片**:首先,你需要使用 `imread` 函数读取灰度图片,例如:
```matlab
gray_img = imread('your_image_name.png', '_GRAYSCALE');
```
其中 `'GRAYSCALE'` 参数确保图像被读取为单通道灰度图像。
2. **计算直方图**:然后,使用 `imhist` 函数计算图像的灰度值分布,得到直方图:
```matlab
histogram = imhist(gray_img, 256); % 使用256个bins,可以根据需求调整
```
3. **创建累计分布函数 (CDF)**:将直方图转换为累积分布函数 (CDF),这样可以确定每个像素映射到的新灰度级:
```matlab
cdf = cumsum(histogram) / sum(histogram);
```
4. **应用直方图变换**:最后,使用 `imadjust` 函数对原始图像进行直方图均衡化,传入CDF和原范围:
```matlab
equi_img = imadjust(gray_img, [0 cdf(end)], [0 1], []);
```
参数 `[0 cdf(end)]` 和 `[0 1]` 分别表示输入图像的灰度范围和输出的全动态范围。
完整的例子:
```matlab
img = imread('your_image_name.png', 'GRAYSCALE');
histogram = imhist(img, 256);
cdf = cumsum(histogram) / sum(histogram);
equi_img = imadjust(img, [0 cdf(end)], [0 1], []);
imshow(equi_img);
```
阅读全文