Roberts算子边缘检测代码:
void Roberts(BYTE *dst,BYTE *src,int width,int height)
{
int A, B; // A(x-1, y-1) B(x, y-1)
int C, D; // C(x-1, y) D(x, y)
int x;
int y;
for (x = 0; x < width; x++)
{
*dst = 0;
dst++;
}
// 指向第一行
src += width;
// 不处理最上边和最左边
for (y = 1; y < height; y++)
{
// 指向每行第一列
*dst = 0;
src++;
dst++;
for (x = 1; x < width; x++)
{
A = *(src - width - 1);
B = *(src - width);
C = *(src - 1);
D = *src;
int temp = (int)(sqrt((A - D) * (A - D) + (B - C) * (B - C)));
// 越界判断 0 -- 255
if(temp >= 255)
{
*dst = 255;
}
else
{
*dst = (BYTE)temp;
}
src++;
dst++;
} // x
} // y
return;
} // end of Roberts
提个思路
灰度化 二值化 提取边缘
主要是二值化 根据你的相应的图片确定阀值
无法确定代码