原创 Roberts 算子

2009-2-23 22:11 4690 7 7 分类: 软件与OS
    Roberts 算子计算交叉差分,取两种差分的较大值:


10
0-1

0-1
10

// Roberts 算子
// 1. pImageData   图像数据
// 2. nWidth       图像宽度
// 3. nHeight      图像高度
// 4. nWidthStep   图像行大小
BOOL Roberts(unsigned char *pImageData, int nWidth, int nHeight, int nWidthStep)
{
    int            i            = 0;
    int            j            = 0;
    int            nDx          = 0;
    int            nDy          = 0;
    int            nValue       = 0;
    unsigned char *pLine[2]     = { NULL, NULL };
    for (j = 0; j < nHeight - 1; j++)
    {
        pLine[0]  = pImageData + nWidthStep * j;
        pLine[1]  = pImageData + nWidthStep * (j + 1);
        for (i = 0; i < nWidth - 1; i++)
        {
            nDx = abs(pLine[0] - pLine[1][i+1]);
            nDy = abs(pLine[1] - pLine[0][i+1]);
            nValue = nDx > nDy ? nDx : nDy;
            pLine[0][i-1] = (unsigned char) nValue;
        }
    }
    return TRUE;
}


Roberts 检测效果:


881eaca9-6356-4c38-bdb4-029e0db759e4.jpg99656adb-9609-4d6b-98f1-87f8271aa381.jpg
PARTNER CONTENT

文章评论0条评论)

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