用MATLAB将图片直方图进行归一化,变换不同的灰度级数,得到三种结果
时间: 2024-10-18 13:07:46 浏览: 14
在MATLAB中,你可以通过`imhist`函数获取图片的直方图,然后使用`histeq`(直方图均衡化)或其他方法进行归一化。这里我会为你展示如何对一张灰度图像进行三种不同类型的直方图变换:
1. **直方图拉伸(Histogram Stretching)**:
这种方法简单地调整直方图,使得大部分像素落在中间灰度范围内,提高对比度。比如,假设我们有图像`I`,可以这样做:
```
% 计算直方图
imgHist = imhist(I);
% 找到最小和最大灰度值
minVal = min(imgHist);
maxVal = max(imgHist);
% 拉伸直方图
stretchedImg = rescale(I, [minVal, maxVal]);
```
`rescale`函数用于按照新的比例线性地缩放图像的像素值。
2. **直方图均衡化(Histogram Equalization)**:
这是一种更高级别的直方图变换,通过均匀分布所有灰度等级,增强图像的整体对比度:
```
% 直方图均衡化
eqImg = imadjust(I);
```
`imadjust`会自动处理直方图并进行动态范围的调整。
3. **自适应直方图均衡化(Adaptive Histogram Equalization)**:
对于更大的图像或局部区域,可以使用`adapthisteq`函数,它根据局部信息调整每个小区域的直方图:
```
% 自适应直方图均衡化
aheqImg = adapthisteq(I);
```
上述操作后的三种结果,分别是原始图像、普通拉伸后的图像和经过均衡化或自适应均衡化处理后的图像,每一种都能改变图像的亮度对比度,有助于更好的视觉呈现。
阅读全文