图像处理-基本算法之灰度均衡
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;
}
代码如下:
[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;
}
相关文章推荐
- 图像处理-基本算法之灰度均衡 form(同串口)
- 数字图像处理基本算法实现(1)--section3.2基本灰度变换
- 图像处理基本算法-直方图均衡
- 图像处理基本算法-直方图均衡
- 图像处理基本算法-直方图均衡
- 图像处理-基本算法之灰度拉伸
- 图像处理基本算法--仿射变换
- 图像基本处理算法的简单实现(三)
- 图像处理基本算法-滤波
- 图像处理算法(模糊,锐化,水彩,素描,反色,马塞克,灰度转化等)
- 图像处理的基本算法
- 图像处理之特殊灰度算法技巧
- 图像处理基本算法 形状特征
- 图像处理基本算法-比特分层
- 数字图像处理基本算法实现(3)--section3.5-6空间滤波处理
- 【图像处理】基本的全局图像灰度变换
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 图像处理基本算法 形状特征
- 图像处理基本算法-比特分层
- 图像处理基本算法 车牌识别与定位