直方图均衡化算法
1.将灰度图直方图化,计算各个像素级的像素数目
2.形成累积直方图
3.建立新的亮度查找表
程序源代码:
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
void histogram1(IplImage *src)
{
assert(src->nChannels == 1);
//assert(src1->nChannels == 1);
int histogram[256] = {0};
int chistogram[256] = {0};
for(int h=0;h<src->height;h++)
{
unsigned char *p = (unsigned char *)src->imageData+h*src->widthStep;
for(int w=0;w<src->width;w++)
{
histogram[*p++]++;//计算直方图
}
}
int flag = 0;
for(int i=0;i<256;i++)//形成累积直方图
{
if(flag==0)
{
chistogram[0] = 0;
flag = 1;
}
else
{
chistogram[i] = chistogram[i-1]+histogram[i];
}
}
int T[256] = {0};
for(int i=0;i<256;i++)
{
T[i] = (int)(255/(src->width*src->height))*chistogram[i];//建立新的查找表
}
for(int h=0;h<