MATLAB对灰度图像进行直方图均衡化和直方图规定化处理代码
时间: 2024-10-21 16:08:24 浏览: 72
MATLAB是一种强大的数值计算环境,对于图像处理也非常方便。以下是两个常用图像处理操作——灰度图像直方图均衡化(Histogram Equalization)和直方图规定化(Histogram Specification)的基本代码示例:
**1. 灰度图像直方图均衡化**:
```matlab
% 加载灰度图像
img = imread('your_image_name.jpg', 'gray');
% 计算原始灰度直方图
histogram_eq = imhist(img);
% 创建一个新的直方图大小
new_histogram_size = length(unique(img(:)));
% 定义新的累积分布函数 (CDF)
cdf = cumsum(histogram_eq) / sum(histogram_eq);
% 使用新的CDF进行线性插值,得到均衡化的像素值
eq_img = interp1(linspace(0, 1, size(img, 1)), img(:), cdf(img(:))', 'linear');
% 显示原图和均衡化后的图像
subplot(1, 2, 1), imshow(img);
title('Original Image');
subplot(1, 2, 2), imshow(uint8(eq_img));
title('Histogram Equalized Image');
```
**2. 直方图规定化**:
直方图规定化通常是将图像调整到特定的直方图形状,例如预设的均匀分布。这里假设你有一个目标直方图`target_hist`:
```matlab
% 定义目标直方图
target_hist = your_target_histogram;
% 计算归一化的目标累计分布函数 (CDF)
target_cdf = cumsum(target_hist) / sum(target_hist);
% 对每个像素应用目标直方图的CDF
spec_img = interp1(linspace(0, 1, size(img, 1)), img(:), target_cdf, 'linear');
% 显示原图和规定化后的图像
subplot(1, 2, 1), imshow(img);
title('Original Image');
subplot(1, 2, 2), imshow(uint8(spec_img));
title('Histogram Specified Image');
```
别忘了替换`your_image_name.jpg`和`your_target_histogram`为你实际的图片文件名和目标直方图。
阅读全文