zoukankan      html  css  js  c++  java
  • Matlab实现直方图均衡化

    直方图均衡化

    算法分析

    1. 对原图像每个通道统计0-255的灰度级概率

    2. 求原图像每个通道累积概率分布

    3. 根据累积概率直方图分别对每个通道(K)求每个像素点的映射

      p(k, i) = p(k, i) * 255

    function outputimg = myhisteq( A )
    % 直方图均衡化
    % 参数A是读入的图像矩阵
    % outputimg是经过直方图均衡化的图像
    
    [H,W,K] = size(A);
    P = zeros(K,256); %用于统计各个通道灰度级概率的行向量
    
    %统计每个通道0-255灰度级的概率
    for k = 1:K
        for v = 0:255
            P(k,v + 1) = length(find(A(:,:,k) == v)) / (H * W);
        end
    end
    
    %求累积概率分布
    for k = 1 : K
        for i = 2 : 256
            P(k, i) = P(k, i - 1) + P(k, i);
        end
    end
    
    %映射到0-255
    for k = 1: K   
        P(k,:) = round(P(k,:) * 255); 
    end
    
    outputimg = zeros(H,W,K);
    
    %对新图像每一个像素点映射
    for k = 1:K
        for i = 1:H
            for j = 1 :W
                outputimg(i,j,k) = P(k, A(i, j, k) + 1);
            end
        end
    end
          
    outputimg = uint8(outputimg);
    end
    

    实验结果

    %调用示例:
    A = imread('lena.png');
    B = myhisteq(A);
    subplot(1,2,1),imshow(A),title('原图');
    ubplot(1,2,2),imshow(B),title('直方图均衡');
    

    实验分析

    • 第一步统计原图中每个灰度级出现的概率,这里注意计数数组下标是从1-256,但是灰度值是从0-255
       for k = 1:K
          for v = 0:255
              P(k,v + 1) = length(find(A(:,:,k) == v)) / (H * W);  %这里是v+1
          end
      end  
    

    这里调用了Matlab中自带的find和length函数,另外也可以使用以下语句分两步实现,先统计灰度级的频数,再求概率

    % 统计每个像素值出现次数
    count = zeros(1, 256);
    for i = 1 : R
        for j = 1 : C
            %f(i,j)中的像素值是从0-255,数组下标是从1-256  
            count(1, fx(i, j) + 1) = count(1, fx(i, j) + 1) + 1;
        end
    end
    % 统计每个像素值出现的概率, 得到概率直方图
    for i = 1 : 256
        T(1, i) = count(1, i) / (R * C);
    end
    
    • 求完累积概率分布,将概率映射到0-255灰度级,这样可以使灰度值范围比较窄的像素点,占据到整个图像所允许范围

    • 直方图均衡化的目的:通过使得图像的灰度级更加均匀,反映在图像上使得相邻的像素之间的差别增大,从而达到增大图像对比度的效果

  • 相关阅读:
    mvn -v提示Permission denied
    JMeter生成HTML报告
    Python数据可视化神器pyecharts
    ThinkPHP 3.2.3 使用 Swift Mailer 邮件系统发送邮件
    qt的webkit
    Windows Driver Kit Version 7.1.0 ( 也就是 7600.16385.1 ) 下载地址
    erlang的调试配置
    emacs之开始就加载tag
    emacs之配置etags-select
    emacs之配置yasnippet
  • 原文地址:https://www.cnblogs.com/Vicky1361/p/13922014.html
Copyright © 2011-2022 走看看