Facebook
From Baby Partdridge, 7 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 309
  1. float[][] kernel = { { 1, 1, 1 },
  2.                      { 1,  0, 1 },
  3.                      { 1, 1, 1 } };
  4.  
  5. PImage img = loadImage("lena2.bmp");
  6. int w = img.width;
  7. int h = img.height;
  8. size(2*w,h);
  9. image(img, 0, 0);
  10. img.loadPixels();
  11. PImage edgeImg = createImage(img.width, img.height, RGB);
  12. for (int y = 1; y < img.height-1; y++) {
  13.   for (int x = 1; x < img.width-1; x++) {
  14.     float sum_red = 0, sum_green = 0, sum_blue = 0;
  15.     int pos = x + y*img.height;
  16.     int pos_sasiad = (x+1) + y*img.height;
  17.     float val_red = red(img.pixels[pos]);
  18.     float val_green = green(img.pixels[pos]);
  19.     float val_blue = blue(img.pixels[pos]);
  20.    
  21.    
  22.     if ((val_red == 0)) {
  23.       for (int ky = -1; ky <= 1; ky++) {
  24.         for (int kx = -1; kx <= 1; kx++) {
  25.         int pos2 = (y + ky)*img.width + (x + kx);
  26.         float val2_red = red(img.pixels[pos2]);
  27.         float val2_green = green(img.pixels[pos2]);
  28.         float val2_blue = blue(img.pixels[pos2]);
  29.         sum_red += kernel[ky+1][kx+1] * val2_red;
  30.         sum_green += kernel[ky+1][kx+1] * val2_green;
  31.         sum_blue += kernel[ky+1][kx+1] * val2_blue;
  32.         val_red = sum_red/8;
  33.         val_green = sum_green/8;
  34.         val_blue = sum_blue/8;
  35.       }
  36.     }
  37.     }
  38.     else if (val_red == 255) {
  39.       for (int ky = -1; ky <= 1; ky++) {
  40.         for (int kx = -1; kx <= 1; kx++) {
  41.         int pos2 = (y + ky)*img.width + (x + kx);
  42.         float val2_red = red(img.pixels[pos2]);
  43.         float val2_green = green(img.pixels[pos2]);
  44.         float val2_blue = blue(img.pixels[pos2]);
  45.         sum_red += kernel[ky+1][kx+1] * val2_red;
  46.         sum_green += kernel[ky+1][kx+1] * val2_green;
  47.         sum_blue += kernel[ky+1][kx+1] * val2_blue;
  48.         val_red = sum_red/8;
  49.         val_green = sum_green/8;
  50.         val_blue = sum_blue/8;
  51.       }
  52.     }
  53.     }
  54.     edgeImg.pixels[y*img.width + x] = color(val_red, val_green, val_blue);
  55.   }
  56. }
  57. edgeImg.updatePixels();
  58. image(edgeImg, w, 0);