您的位置:首页 > 其它

图像处理-基本算法之灰度拉伸 from(同串口)

2013-04-01 20:32 405 查看

图像处理-基本算法之灰度拉伸

分类: 图像处理2012-06-13 13:00152人阅读评论(0)收藏举报
图像处理算法byte
灰度拉伸是图像增强的一种,它是把分离的灰度转换到比较集中的程度,这时就更利于分析。
代码如下:

[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;

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