利用Roberts进行边缘检测的代码
作者:cnfgg 日期:2009-06-30
以下代码实现了最简单的Roberts算子边缘检测,输入为width*height的灰度图,存放在矩阵src中,输出也为width*height的灰度图(象素取值在0-255之间),存放在矩阵dst中。
复制内容到剪贴板
程序代码
程序代码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
[本日志由 cnfgg 于 2009-06-30 04:40 PM 编辑]
文章来自: 本站原创
Tags: Roberts 边缘检测 vc 代码
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
上一篇
下一篇
