用MATLAB将图片进行直方图均衡化,并变换不同的灰度级数,得到三种结果
时间: 2024-10-18 14:07:59 浏览: 74
图像处理 matlab
在MATLAB中,图像直方图均衡化是一种常用的技术,它通过改变像素值的概率分布,使得整个图像的对比度增强,特别适用于那些暗部细节丢失或对比度过低的图片。以下是使用MATLAB进行图像直方图均衡化的步骤以及创建三种不同灰度级数结果的过程:
1. **加载图片**:
使用`imread`函数读取图像文件,例如:
```
img = imread('your_image.jpg');
```
2. **计算原始直方图**:
使用`imhist`或`histcounts`获取图像的灰度直方图:
```
histOriginal = imhist(img);
```
3. **直方图均衡化**:
MATLAB有内置函数`imadjust`来进行直方图均衡化,也可以手动归一化并查找新的灰度值范围:
```
% 使用imadjust
imgEq = imadjust(img);
% 或者手动操作
minVal = min(img(:));
maxVal = max(img(:));
newMin = 0;
newMax = 255; % 假设你要调整到8位灰度
imgEq = (img - minVal) * ((newMax - newMin) / (maxVal - minVal)) + newMin;
```
4. **保存处理后的图像**:
```
imwrite(imgEq, 'equalized_img1.jpg');
```
5. **改变灰度级数**:
若要得到不同灰度级别的效果,可以调整直方图均衡化后的图像的动态范围。比如,你可以选择不同的最小最大值,或者应用不同的伽马校正:
- 改变新范围:
```
imgEqGamma = imadjust(imgEq, [0 0.9], [], 1); % 降低对比度
imwrite(imgEqGamma, 'equalized_img2.jpg');
```
- 应用伽马校正:
```
gamma = 0.7; % 可以设置不同的伽马值
imgEqGamma = imgEq.^gamma;
imwrite(imgEqGamma, 'equalized_img3.jpg');
```
阅读全文