用matlab实现数字图像直方图均衡
时间: 2024-10-08 08:00:25 浏览: 58
在MATLAB中,直方图均衡化是一种常用的技术,用于增强图像对比度,使得图像的暗部和亮部信息更明显。以下是简单的步骤来实现数字图像的直方图均衡化:
1. **读入图像**:
```matlab
img = imread('example.jpg'); % 替换为你要处理的图像文件名
```
2. **计算直方图**:
```matlab
hist = imhist(img, 'Normalization', 'probability');
```
3. **创建累计分布函数(CDF)**:
```matlab
cdf = cumsum(hist);
```
4. **查找映射表**:
```matlab
min_val = min(img(:));
max_val = max(img(:));
linear_cdf = linspace(0, 1, length(cdf))';
lut = interp1(linear_cdf, cdf, (img-min_val)/(max_val-min_val), 'nearest');
```
5. **应用映射**:
```matlab
eq_img = imadjust(img, [min_val, max_val], [], lut);
```
6. **显示原图和均衡化后的图像**:
```matlab
figure;
subplot(1, 2, 1), imshow(uint8(img)), title('Original Image');
subplot(1, 2, 2), imshow(uint8(eq_img)), title('Histogram Equalized Image');
```
以上代码将原始图像映射到新的灰度范围,使其直方图更加均匀。
阅读全文