图像平滑用于去除图像中的噪声。高斯平滑,就是将每个像素的灰度值用其领域的加权平均值代替。该算法简单,能够有效去除高斯噪声。
、
平滑模板:
// 高斯平滑
// 1. pImageData 图像数据
// 2. nWidth 图像宽度
// 3. nHeight 图像高度
// 4. nWidthStep 图像行大小
BOOL SmoothGauss(unsigned char *pImageData, int nWidth, int nHeight, int nWidthStep)
{
int i = 0;
int j = 0;
int nValue = 0;
unsigned char *pLine[3 = { NULL, NULL, NULL };
int nTemplate[9 =
{
1, 2, 1,
2, 4, 2,
1, 2, 1
};
for (j = 1; j < nHeight - 1; j++)
{
pLine[0 = pImageData + nWidthStep * (j - 1);
pLine[1 = pImageData + nWidthStep * j;
pLine[2 = pImageData + nWidthStep * (j + 1);
for (i = 1; i < nWidth - 1; i++)
{
nValue =
(pLine[0][i-1 * nTemplate[0 +
pLine[0][i * nTemplate[1 +
pLine[0][i+1 * nTemplate[2 +
pLine[1][i-1 * nTemplate[3 +
pLine[1][i * nTemplate[4 +
pLine[1][i+1 * nTemplate[5 +
pLine[2][i-1 * nTemplate[6 +
pLine[2][i * nTemplate[7 +
pLine[2][i+1 * nTemplate[8]) / 16;
pLine[0][i-1 = (unsigned char) nValue;
}
}
return TRUE;
}