以下代码实现了最简单的Roberts算子边缘检测

时间:2022-05-19 12:50:24 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
以下代码实现了最简单的Roberts算子边缘检测,输入为width*height的灰度图,存放在矩阵src中,输出也为width*height的灰度图(象素取值在0255之间),存放在矩阵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




本文来源:https://www.wddqw.com/doc/33ab63baf121dd36a32d8290.html