Facebook
From Little Hummingbird, 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("lena3.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 = 0;
  15.     int pos = x + y*img.height;
  16.     int pos_sasiad = (x+1) + y*img.height;
  17.     float val = red(img.pixels[pos]);
  18.     float val_sasiad = red(img.pixels[pos_sasiad]);
  19.    
  20.     if (val == 0) {
  21.       for (int ky = -1; ky <= 1; ky++) {
  22.         for (int kx = -1; kx <= 1; kx++) {
  23.         int pos2 = (y + ky)*img.width + (x + kx);
  24.         float val2 = red(img.pixels[pos2]);
  25.         sum += kernel[ky+1][kx+1] * val2;
  26.         val = sum/8;
  27.       }
  28.     }
  29.     }
  30.     else if (val == 255) {
  31.       for (int ky = -1; ky <= 1; ky++) {
  32.         for (int kx = -1; kx <= 1; kx++) {
  33.         int pos2 = (y + ky)*img.width + (x + kx);
  34.         float val2 = red(img.pixels[pos2]);
  35.         sum += kernel[ky+1][kx+1] * val2;
  36.         val = sum/8;
  37.       }
  38.     }
  39.     }
  40.     edgeImg.pixels[y*img.width + x] = color(val);
  41.   }
  42. }
  43. edgeImg.updatePixels();
  44. image(edgeImg, w, 0);