用MATLAB对一张灰度图片进行直方图均衡化然后变换三次灰度级数,每次变换都输出一张图片
时间: 2024-10-18 11:08:39 浏览: 25
MATLAB图像处理函数大全
在MATLAB中,你可以通过以下几个步骤来对一张灰度图片进行直方图均衡化并分别进行三次灰度级数变换:
1. **加载图像**:
使用`imread`函数读取灰度图片,例如 `img = imread('your_image_name.jpg');`
2. **直方图均衡化**:
使用`imhist`和`imadjust`函数来进行直方图均衡化。首先计算图像的直方图,然后调整灰度范围:
```matlab
histData = imhist(img);
normalizedHist = histData / sum(histData); % 归一化
newImg = imadjust(img, [0, 1], [min(normalizedHist), max(normalizedHist)], 'contrast');
```
3. **灰度级数变换**:
对于每次变换,你可以使用`uint8`、`double`或其他合适的数据类型将新生成的图像转换到不同的灰度级别。这里我们举个例子,如果要做三次256级、128级和64级的变换:
```matlab
for i = 1:3
switch i
case 1
img_transformed = uint8(newImg * 255); % 256级灰度
case 2
img_transformed = uint8(newImg * 127 + 127); % 128级灰度
case 3
img_transformed = uint8(newImg * 63 + 63); % 64级灰度
end
% 保存每次变换后的图片
imwrite(img_transformed, ['output_' num2str(i) '.jpg']);
end
```
每完成一次循环,都会得到一张新的灰度图片,并以指定格式保存。
阅读全文