不用均衡化函数实现matlab直方图均衡化
时间: 2023-10-17 22:23:10 浏览: 88
以下是一个不使用Matlab内置的直方图均衡化函数的实现代码:
```matlab
% 读入图像
img = imread('lena.jpg');
% 将图像转换为灰度图
gray_img = rgb2gray(img);
% 计算图像直方图
histogram = imhist(gray_img);
% 计算灰度级数量
num_pixels = numel(gray_img);
% 计算概率密度函数
pdf = histogram / num_pixels;
% 计算累计分布函数
cdf = cumsum(pdf);
% 将CDF映射到新的灰度级范围
new_gray_levels = round(cdf * 255);
% 对图像进行直方图均衡化
eq_img = uint8(new_gray_levels(gray_img + 1));
% 显示原始图像和直方图均衡化后的图像
subplot(1,2,1), imshow(gray_img), title('原始图像');
subplot(1,2,2), imshow(eq_img), title('直方图均衡化后的图像');
```
该代码首先读入图像并将其转换为灰度图像。然后计算灰度级数量和图像的直方图。根据直方图计算概率密度函数和累计分布函数,将累计分布函数映射到新的灰度级范围,并对图像进行直方图均衡化。最后,使用Matlab的subplot函数将原始图像和直方图均衡化后的图像显示在同一窗口中。
阅读全文