美文网首页
直方图均衡化

直方图均衡化

作者: 冻冻妖 | 来源:发表于2017-01-20 09:57 被阅读73次

概念:通过拉伸像素强度分布范围来增强图像对比度的一种方法,如下图,将左边直方图的中间的一些强度值拉伸,对绿色椭圆部分应用均衡化后得到右边的直方图,要想把左边的直方图映射到另一个直方图,需使用一个累计分布函数

直方图拉伸.png

步骤:
1、统计像素灰度的个数,范围在0-255之间,所以数组长度可以取266
2、计算像素灰度密度
3、使用累积分布函数计算右边的直方图
4、使用最大值255进行归一化
5、对原图像映射赋值灰度值

代码

typedef struct
{
    int mSize;//图像大小
    int mChannels;//通道数
    int mDepth;//
    int mType;
    int mCol;
    int mRow;
    unsigned char *mData;
} V_Image;

void Histogram_equalization(V_Image** img)
{
    float *pixelNum=(float *) calloc(256,sizeof(float));
    float *pixelCumu=(float *) calloc(256,sizeof(float));
    int index,row,col;
    //初始化数组为0
    for(index=0; index<256; index++)
    {
        pixelNum[index]=0;
        pixelCumu[index]=0;
    }
    //统计像素灰度个数
    for(row=0; row<(*img)->mRow; row++ )
    {
        for(col=0; col<(*img)->mCol; col++ )
        {
            pixelNum[(*img)->mData[row*((*img)->mCol)+col]+1]++;
        }
    }

    //计算像素灰度密度
    for(index=0; index<256; index++)
    {
        pixelNum[index]=pixelNum[index]/(((*img)->mRow)*((*img)->mCol)*1);
    }

    //计算累计直方图分布
    for(index=0; index<256; index++)
    {
        if(index==0)
            pixelCumu[index]=pixelNum[index];
        else
            pixelCumu[index]=pixelCumu[index-1]+pixelNum[index];
    }
    //累计分布取整
    for(index=0; index<256; index++)
    {
        pixelCumu[index]=ceil(255*pixelCumu[index]);
    }
    //对图像灰度值均衡化
    for(row=0; row<(*img)->mRow; row++ )
    {
        for(col=0; col<(*img)->mCol; col++ )
        {
            (*img)->mData[row*((*img)->mCol)+col]=pixelCumu[(*img)->mData[row*((*img)->mCol)+col]];
        }
    }
}

相关文章

  • 47. 直方图均衡化

    本文解释灰度直方图均衡化、彩色直方图均衡化和YUV均衡化效果 灰度直方图均衡化 效果如下: 彩色直方图均衡化 效果...

  • Metal图像处理——直方图均衡化

    Metal图像处理——直方图均衡化 Metal图像处理——直方图均衡化

  • 直方图匹配

    之前我们介绍过直方图均衡化。直方图匹配的核心思想就是在应用直方图的均衡化。 和之前直方图均衡化一样,直方图的匹配本...

  • 四、OpenCV+TensorFlow 入门人工智能图像美化处理

    彩色图片直方图 灰度直方图源码 彩色直方图源码 直方图均衡化 1.灰度 1.1灰度直方图均衡化源码 2.彩色 2....

  • OpenCV-Python学习(十一):直方图

    目录: 1.绘制直方图1)一维直方图2)2D直方图 2.直方图均衡化1)全局直方图均衡化2)CLAHE(限制对比度...

  • 直方图均衡化—理论篇

    直方图均衡化--理论篇 直方图均衡化是数字图像处理中,最基本的一种处理。直方图均衡计算简单,并且适合快速的硬件实现...

  • 低亮度图片增强方法:直方图均衡化

    直方图均衡化(HE) 直方图均衡化是最简单、最方便的低亮度图片增强的算法。 HE通过拉伸图片直方图的分布,使得图片...

  • 灰度直方图和均衡化

    目的: 得到原图的灰度直方图 使原图均衡化 得到均衡化图的灰度直方图 什么是灰度直方图: 图像中所有的像素一句像素...

  • 10、直方图应用

    直方图均衡化,实际上是调整图像的对比度,是图像增强的一种手段 (注:直方图均衡化都是基于灰度图像) 全局均衡化 局...

  • 直方图均衡化

    直方图均衡化的介绍 直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用...

网友评论

      本文标题:直方图均衡化

      本文链接:https://www.haomeiwen.com/subject/xinvbttx.html