FastEdgeDetection

surprisingly fast edge detection

static int edge_detect(dl_matrix3du_t *image_matrix_out, dl_matrix3du_t *image_matrix_in)

{

  int line = image_matrix_in->w*3;

  int line2 = line * 2;

  unsigned int bumpiness = 0;

  for (i=(line2);i<((image_matrix_in->w * image_matrix_in->h * 3) - line2);i++)

  {

    image_matrix_out->item[i] = min(255,(

      //image_matrix_in->item[i]+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i-3])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i+3])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i-6])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i+6])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i- line])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i+ line])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i-3+ line])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i+3+ line])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i-3- line])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i+3- line])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i- line2])+

      abs(image_matrix_in->item[i] - image_matrix_in->item[i+ line2])

      )>>2   // divide by 4

      );

      bumpiness+=image_matrix_out->item[i];

  }

  return (bumpiness/(line*image_matrix_in->h));

}

Page last modified on February 07, 2022, at 10:26 PM
Powered by PmWiki