欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数字图像处理——直方图均衡(MATLAB)

程序员文章站 2022-04-01 10:25:22
...

数字图像处理中图片的直方图均衡,原理不再介绍。实现如下,有问题请留言。

function zy=Histogram(I)
[R, C] = size(I);

count_pixel= zeros(1, 256);
%计算每个灰度级的像素个数
for i = 1 : R
    for j = 1 : C
        count_pixel(1, I(i, j) + 1) = count_pixel(1, I(i, j) + 1) + 1;
    end
end

Pixel_probability = zeros(1, 256);
Pixel_probability = double(Pixel_probability); count_pixel = double(count_pixel);

% 统计每个灰度级概率
for i = 1 : 256
    Pixel_probability(1, i) = count_pixel(1, i) / (R * C);
end

% 求灰度级的累计概率
for i = 2 : 256
    Pixel_probability(1, i) = Pixel_probability(1, i - 1) + Pixel_probability(1, i);
end

subplot(2,3,3);plot(Pixel_probability);
title('结果概率累加')
% 用Pixel_probability数组实现灰度级[0, 255]的映射。
%将灰度级取最接近的整数和取浮点数时候的不同情况
for i = 1 : 256
    %取最接近的整数的灰度级
   Pixel_probability(1, i) = round(Pixel_probability(1, i) * 255);
   %直接使用浮点数
    %Pixel_probability(1, i) = Pixel_probability(1, i) * 255;
end

%display(Pixel_probability);
% 将映射好的灰度级赋给原图
I = double(I);
for i = 1 : R
    for j = 1 : C
        I(i, j) = Pixel_probability(1, I(i, j) + 1);
    end
end
zy = uint8(I);
end

 

相关标签: 数字图像处理