您的位置:首页 > 其它

图像处理-基本算法之灰度均衡

2012-06-13 13:02 555 查看
灰度均衡就是让分散的灰度值使其均匀化,使尖锐的图像变得柔和。
代码如下:

[cpp]
view plaincopyprint?

/******************************************************************************

* 作用: 灰度均衡函数
* 参数: pDst 输出图像的像素数组

* 参数: pSrc 原始图像的像素数组
* 参数: nWidth 原始图像宽度

* 参数: nHeight 原始图像高度
******************************************************************************/

int GrayEqualize(BYTE* pDst,
BYTE* pSrc, int nWidth,
int nHeight)
{
if (!pSrc || !pDst)
{
return EXIT_FAILURE;

}

// 灰度映射表
BYTE map[256];
long lCounts[256];

memset(lCounts, 0, sizeof(long) * 256);

int i;

// 计算各灰度值个数

for (i = 0; i < nWidth * nHeight; i++)

{
int x = pSrc[i * 4];

lCounts[x]++;
}

// 保存运算中的临时值
long lTemp;

for (i = 0; i < 256; i++)

{
lTemp = 0;
for (int j = 0; j <= i; j++)

lTemp += lCounts[j];

map[i] = (BYTE)(lTemp * 255.0f / nWidth / nHeight);

}

// 变换后的值直接在映射表中查找
for (i = 0; i < nWidth * nHeight; i++)

{
int x = pSrc[i * 4];

pDst[i*4] = pDst[i*4+1] = pDst[i*4+2] = map[x];

pDst[i*4+3] = 255;
}

return EXIT_SUCCESS;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: