zoukankan      html  css  js  c++  java
  • 直方图均衡化算法 & 代码

    做了一天,都是黑屏,最后发现,竟然是一个局部变量引起。

       基本是分3步,这个是在灰度图像下 实现均衡化直方图。 彩色下直接均衡化研究出来再补上。

    第一步:

      计算初始直方图,即记录每一个像素出现次数。

    for(int y = 0; y < m_image->GetHeight(); y++)
    {
        for(int x = 0; x < m_image->GetWidth();x++)
        {
            COLORREF rgb = m_image->GetPixel(x,y);
    int rValue = GetRValue(rgb); // 记录每一个像素出现次数。 hist[rValue]++; } }

    第二步:

       由上面得到的初始直方图计算归一化直方图和累积直方图

    int hist[256] = {0};
    
    double phist[256];
    
    for (int i = 0; i <= 255 ;i++)
    {
        phist [i] = (double) hist[i] / (m_image->GetHeight() * m_image->GetWidth());  //归一化直方图 即每个像素出现概率
    }
    double dSum[256] = {0.0};
    
    for(int i = 0; i<=255;i++)
    {
        if(i != 0)
        {
            dSum[i] = dSum[i-1] + phist[i];
        }
        else//累积直方图
        {
            dSum[i]  = phist[i];
        }
    }

    第三步:

      求均衡化映射(旧图->新图)关系,并写入新图像

    for(int y = 0; y < m_image->GetHeight(); y++)
    {
        for(int x = 0; x < m_image->GetWidth();x++)
        {
            COLORREF rgb = m_image->GetPixel(x,y);
    
            int rValue = GetRValue(rgb);
    
            rValue = Mapping[rValue];        //根据映射关系实现均衡化
            rgb = RGB(rValue,rValue,rValue);
            m_image->SetPixel(x,y,rgb);
        }
    }
  • 相关阅读:
    django关闭调试信息,打开内置错误视图
    django 配置URLconf和获取值
    django模版中配置和使用静态文件方法
    django的模型类管理器-----------数据库操作的封装
    美团校招的算法题:灯泡游戏
    ccTouchBegan
    特效effects(二)
    特效effects
    CCProgressTo和CCProgressTimer
    TransitionsTest
  • 原文地址:https://www.cnblogs.com/WilsonPan/p/2533266.html
Copyright © 2011-2022 走看看