matlab不调用函数实现直方图均衡化
时间: 2023-08-09 13:06:35 浏览: 108
如果您不想使用Matlab的内置函数,可以按照以下步骤手动实现直方图均衡化:
1. 读入图像并转化为灰度图像
```
img = imread('lena.jpg');
gray_img = rgb2gray(img);
```
2. 计算灰度直方图
```
[h, x] = histcounts(gray_img, 256);
```
3. 计算累积分布函数CDF
```
cdf = zeros(1,256);
cdf(1) = h(1);
for i = 2:256
cdf(i) = cdf(i-1) + h(i);
end
cdf = cdf / numel(gray_img);
```
4. 将CDF映射到0~255的灰度级范围内
```
map = uint8(255 * cdf);
```
5. 应用映射函数,得到均衡化后的图像
```
eq_img = zeros(size(gray_img), 'uint8');
for i = 1:size(gray_img,1)
for j = 1:size(gray_img,2)
eq_img(i,j) = map(gray_img(i,j) + 1);
end
end
```
6. 显示原图和均衡化后的图像
```
subplot(1,2,1)
imshow(gray_img)
title('Original Image')
subplot(1,2,2)
imshow(eq_img)
title('Equalized Image')
```
以上就是手动实现直方图均衡化的步骤,与使用Matlab内置函数的结果应该是相同的。
阅读全文