原创 图像均值平滑

2009-2-23 22:04 3354 8 8 分类: 软件与OS
    图像平滑用于去除图像中的噪声。均值平滑,就是将每个像素的灰度值用其领域的平均值代替。该算法简单,速度快,但不能完全消除椒盐噪声。
    平滑模板:

111
111
111

// 均值平滑
// 1. pImageData   图像数据
// 2. nWidth       图像宽度
// 3. nHeight      图像高度
// 4. nWidthStep   图像行大小
BOOL SmoothBlur(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 };
    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] + pLine[0] + pLine[0][i+1] +
                 pLine[1][i-1] + pLine[1] + pLine[1][i+1] +
                 pLine[2][i-1] + pLine[2] + pLine[2][i+1]) / 9;
            pLine[0][i-1] = (unsigned char) nValue;
        }
    }
    return TRUE;


均值平滑效果:


2d2ad1de-16e7-4a18-9e5c-41c1e2e6f10c.jpg206997dd-47d1-498f-89f5-09e64fe49cc1.jpg
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条