Advertisement
Guest User

Untitled

a guest
Sep 24th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. public MeinBild konturVerlauf() {
  2. int width = meinBild.getWidth();
  3. int height = meinBild.getHeight();
  4. int[][] pixel = meinBild.getBildmatrix();
  5. int[][] auswerteBild = new int[width+2][height+2];
  6. int xStart, yStart, xKontur, yKontur, xHinter, yHinter, xKand, yKand;
  7.  
  8.  
  9. // Binaerobjekt kann am Bildrand liegen, deshalb
  10. for (int x=0; x<width; x++) {
  11. for (int y=0; y<height; y++) {
  12. auswerteBild[x+1][y+1] = pixel[x][y];
  13. pixel[x][y] = 0;
  14. }
  15. }
  16.  
  17. // Hell/Dunkel-Übergang im Bild finden
  18. for (int x=1; x<width; x++) {
  19. for (int y=1; y<height; y++) {
  20. // Startpunkt gefunden
  21. if (auswerteBild[x-1][y] == 0 && auswerteBild[x][y] == 255)
  22. {
  23. System.out.println("Startpunkt gefunden");
  24. auswerteBild[x][y] = 128;
  25. pixel[x-1][y-1] = 255;
  26.  
  27. xStart = x;
  28. yStart = y;
  29. xKontur = xStart;
  30. yKontur = yStart;
  31. xHinter = xStart-1; // Koordinaten des letzten
  32. yHinter = yStart; // Hintergrundpunktes
  33.  
  34.  
  35. // eigentliche Konturextraktion beginnt
  36. do {
  37. boolean gefunden = false;
  38. int versuche = 1;
  39. // Suche den nächsten Konturpunkt
  40. while (!gefunden && versuche<8) {
  41. int deltaX = xHinter - xKontur;
  42. int deltaY = yHinter - yKontur;
  43. if (xHinter != xKontur && yHinter != yKontur) {
  44. xKand = xHinter - (deltaX+deltaY)/2;
  45. yKand = yHinter + (deltaX-deltaY)/2;
  46. }
  47. else {
  48. xKand = xHinter - deltaY;
  49. yKand = yHinter + deltaX;
  50. }
  51. if (auswerteBild[xKand][yKand] != 0) { // Konturpunkt
  52. auswerteBild[xKand][yKand] = 128;
  53. pixel[xKand-1][yKand-1] = 255;
  54.  
  55. xKontur = xKand;
  56. yKontur = yKand;
  57. gefunden = true;
  58. }
  59. else { // Hintergrundpunkt
  60. xHinter = xKand;
  61. yHinter = yKand;
  62. }
  63. versuche++;
  64. }
  65. } while (xKontur != xStart || yKontur != yStart);
  66. }
  67. }
  68. }
  69. // Abspeichern in MeinBild
  70. meinBild.resetPixel(pixel);
  71. return meinBild;
  72. }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement