用MATLAB将图片进行直方图均衡化
时间: 2024-10-18 22:08:48 浏览: 54
在MATLAB中,直方图均衡化是一种常用的技术,用于增强图像的对比度,使得图像中的细节更易于观察。以下是使用MATLAB内置函数`imhisteq`对图片进行直方图均衡化的步骤:
1. 首先,你需要导入图片,例如一张名为"image.jpg"的图片:
```matlab
img = imread('image.jpg');
```
2. 然后计算原图像的灰度直方图:
```matlab
hist = imhist(img, 256); % 使用256个均匀分布的灰度级
```
3. 对直方图进行归一化,使其总和等于1:
```matlab
cumHist = cumsum(hist);
normCumHist = cumHist / sum(cumHist);
```
4. 应用逆累积分布函数(Inverse Cumulative Distribution Function, ICDF),得到新的像素值:
```matlab
eqImg = icdf(normCumHist, double(img(:)));
```
`double()`转换是为了避免整数溢出,`icdf`返回的是灰度范围内的等概率分布。
5. 最后,你可以用`imshow`显示处理后的图像:
```matlab
imshow(uint8(eqImg));
```
注意:以上代码假设输入的图片是灰度图像。如果图片是彩色的,需要分别处理每个颜色通道(通常RGB三通道分开处理)。
阅读全文