图像处理 灰度直方图变换

灰度图的直方图变换

对于一个灰度图像,m_pBMIH,宽度为biWidth,高度为biHeight,那么它的像素点总数为宽度*高度

传入的参数n为灰度直方图的灰度级数,phDist为输出的直方图数组

下面的代码主要分成以下几个部分:

1,判断传入的参数的合法性

2,根据传入的灰度级数n得到每一个级数所含有的灰度点dDivider

3,对所有的像素点,将对应的灰度级的个数增1      0(m*n)级别

4,将形成的phDist进行归一化处理,有点求平均的感觉  0(k)级别

这样得到的phDist是一个数组,数组的下标为灰度直方图的灰度级,数组的对应下标的值为相应的像素点的个数的归一概率值。


代码抄写字数字图像与机器视觉的那本书,理解才好

BOOL CImgProcess::GenHistLP(double* phHist, int n)
{
if(m_pBMIH->biBitCount != 8) return false;
if(n<=0 || n > 256) return FALSE;


//直方图的每一分需要占用几个灰度级
double dDivider;
memset(phHist, 0, sizeof(double));
dDivider = 256.0 / (double)n;


BYTE bGray;
for (int i =0; i < m_pBMIH->biHeight; ++i)
{
for(int j =0; j < m_pBMIH->biWidth; ++j)
{
bGray = GetGray(j, i);//获取指定像素点的灰度级
phHist[(int)(bGray/dDivider)]++;
}
}
double squre =  m_pBMIH->biWidth * m_pBMIH->biHeight;
for(int i = 0; i < n; ++i)
{
phHist[i] /= squre;
}
return true;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值