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

    直方图均衡化是图像增强的一种基本方法,可提高图像的对比度,即:将较窄的图像灰度范围以一定规则拉伸至较大(整个灰度级范围内)的范围。

    目的是在得到在整个灰度级范围内具有均匀分布的图像。图像的像素灰度变化是随机的,直方图的图形高低不齐,直方图均衡化就是用一定的算法使直方图大致平和。

    灰度直方图均衡化的算法,简单地说,就是把直方图的每个灰度级进行归一化处理,求每种灰度的累积分布,得到一个映射的灰度映射表,然后根据相应的灰度值来修正原图中的每个像素。

    直方图均衡化MATLAB实现

    [filename,pathname]=uigetfile('*.*','select an image');
    input_I=imread([pathname filename]);%读入图像

    subplot(3,3,1);imshow(input_I);
    title('原始图像');%显示原始图像

    I_gray = rgb2gray(input_I);
    subplot(3,3,4);imshow(I_gray);
    title('灰度图像');
    subplot(3,3,5);imhist(I_gray);
    title('灰度图像直方图');%显示灰度图像及直方图

    [height,width]=size(I_gray);

    r=zeros(1,256);
    for i=1:height
    for j=1:width
    r(I_gray(i,j)+1)= r(I_gray(i,j)+1)+1;
    end
    end %计算灰度直方图中的数值:每个灰度级对应的像素数目。
    subplot(3,3,6);stem(r);
    title('计算所得灰度图像直方图');

    s=zeros(1,256);
    s(1)=r(1);
    for i=2:256
    s(i)=s(i-1)+r(i);
    end %累积分布函数:对应的也是像素的数目。
    subplot(3,3,9);stem(s);

    for i=1:256
    s(i)=floor(255*s(i)/(height*width));
    end % s(i)/(height*width) 为频率,*256 为归一到0—255之间,floor为取整(整数部分)函数。【round为四舍五入函数,ceil为取整数部分加1】

    I_HE=I_gray;
    for i=1:height
    for j=1:width
    I_HE(i,j)= s(I_gray(i,j)+1);
    end
    end%得到均衡化后的图像。s(1)~s(256)里的数值即为灰度值,1~256标号对应的是原始灰度图像的0~255的灰度值。

    m=zeros(1,256);
    for i=1:height
    for j=1:width
    m(I_HE(i,j)+1)= m(I_HE(i,j)+1)+1;
    end
    end %计算直方图中的数值:每个灰度级对应的像素数目。
    subplot(3,3,9);stem(m);
    title('计算所得均衡化后图像直方图');

    imwrite(I_gray,'1gray.png');
    imwrite(I_HE,'1he.png');
    subplot(3,3,7);imshow(I_HE);
    title('均衡化后的图像');
    subplot(3,3,8);imhist(I_HE);
    title('均衡化后图像直方图');

    结果图

  • 相关阅读:
    jsp文件上传、下载
    Hadoop 集群常见错误
    大学手机课表系统前景和范围文档
    psp工具软件前景与范围文档
    PSP系统项目前景与范围文档
    社团管理系统项目前景与范围文档
    PSP结构化分析
    PSP(个人软件开发过程)需求分析
    有关高校科研系统相关信息分析
    QQ应用前景与范围文档
  • 原文地址:https://www.cnblogs.com/chunmei/p/4928795.html
Copyright © 2011-2022 走看看