Roberts 算子计算交叉差分,取两种差分的较大值:
// 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 检测效果:
|
文章评论(0条评论)
登录后参与讨论