直方图均衡化matlab实现mmsiche算法
时间: 2024-10-19 16:12:59 浏览: 40
matlab灰度图直方图均衡化代码_matlab_直方图_直方图均衡化_
5星 · 资源好评率100%
直方图均衡化的目的是为了改善图像的对比度,使得图像中的细节更加明显。MMSiche算法是一种改进的直方图均衡化方法,它考虑了像素间的空间相关性。在MATLAB中实现这个算法,通常需要以下几个步骤:
1. **读取和预处理图像**:
```matlab
img = imread('your_image_path');
img_gray = rgb2gray(img); % 转换为灰度图像
```
2. **计算原始直方图**:
```matlab
hist原 = imhist(img_gray);
```
3. **MMSiche算法的核心步骤**:
- 定义邻域窗口,获取每个像素及其邻居的灰度值。
- 计算窗口内所有像素的累计分布函数(CDF)。
- 根据CDF对每个像素进行映射,得到均衡后的像素值。
4. **使用累积分布函数进行映射**:
```matlab
cdf原 = cumsum(hist原(:))/sum(hist原(:));
cdf均衡 = linspace(0, 1, size(img_gray, 1)); % 线性插值得到新的累积分布范围
img均衡 = interp1(cdf原, cdf均衡, img_gray(:));
```
5. **将均匀分布的像素值还原回原图像尺寸**:
```matlab
img均衡 = reshape(img均衡, size(img_gray));
```
6. **显示结果**:
```matlab
imshow(uint8(img均衡), []);
```
阅读全文