Guest User

Untitled

a guest
Jul 20th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.55 KB | None | 0 0
  1. PImage img, imgOriginal;
  2. byte[][] imageArray;
  3. byte[][] maskArray;
  4. int currentImage = 0;
  5. String[] images = {"print1.png", "print1b.png", "print2.png", "print2b.png", "print3.png", "print3b.png"};
  6.  
  7. void loadPixelArray(PImage anImage)
  8. {
  9. anImage.loadPixels();
  10. }
  11.  
  12. color getPixelColor(PImage anImage, int x, int y)
  13. {
  14. color pixelColor = anImage.get(x,y);
  15. return pixelColor;
  16. }
  17.  
  18. void refreshImagePixels(PImage anImage)
  19. {
  20. anImage.updatePixels();
  21. }
  22.  
  23. void setPixelColor(PImage anImage, int x, int y, color aColor)
  24. {
  25. anImage.set(x,y,aColor);
  26. }
  27.  
  28. void initImage(String fileName)
  29. {
  30. img = loadImage(fileName);
  31. imgOriginal = loadImage(fileName);
  32.  
  33. size(img.width * 2, img.height);
  34. frame.setSize(img.width * 2, img.height);
  35.  
  36. loadPixelArray(img);
  37.  
  38. imageArray = new byte[img.width][img.height];
  39. maskArray = new byte[img.width][img.height];
  40.  
  41. for (int col = 1; col < img.width - 1; col++)
  42. {
  43. for (int row=1; row<img.height-1; row++)
  44. {
  45. maskArray[col][row] = 0;
  46.  
  47. if (brightness(img.get(col, row)) < 127){
  48. imageArray[col][row] = 1;
  49. } else {
  50. imageArray[col][row] = 0;
  51. }
  52. }
  53. }
  54. }
  55.  
  56. void setup()
  57. {
  58. initImage(images[0]);
  59. }
  60.  
  61. void mousePressed()
  62. {
  63. currentImage = currentImage + 1;
  64.  
  65. if (currentImage >= images.length)
  66. {
  67. currentImage = 0;
  68. }
  69.  
  70. initImage(images[currentImage]);
  71. }
  72.  
  73. void thinning(PImage img, byte[][] imageArray, byte [][] maskArray)
  74. {for(int a = 0; a<5;a++){
  75. for(int i = 0; i<img.width; i++){
  76. for (int j =0; j<img.height;j++){
  77. if (imageArray[i][j]==1){
  78. if(imageArray[i][j-1]==0 && imageArray[i][j+1]==1){
  79. if(imageArray[i-1][j]== 1 || imageArray[i-1][j+1]==1 || imageArray[i-1][j-1]==1 || imageArray[i+1][j]==1 || imageArray[i+1][j-1]==1 || imageArray[i+1][j+1] == 1){
  80. if ((1-imageArray[i+1][j]) - ((1-imageArray[i+1][j])*(1-imageArray[i+1][j-1])*(1-imageArray[i][j-1])) + (1-imageArray[i][j-1]) - ((1-imageArray[i][j-1])*(1-imageArray[i-1][j-1])*(1-imageArray[i-1][j])) + (1-imageArray[i-1][j]) - ((1-imageArray[i-1][j])*(1-imageArray[i-1][j+1])*(1-imageArray[i][j+1])) + (1-imageArray[i][j+1]) - ((1-imageArray[i][j+1])*(1-imageArray[i+1][j+1])*(1-imageArray[i+1][j]))==1){
  81. maskArray[i][j] = 1;
  82.  
  83. }
  84. }
  85. }
  86. }
  87. }
  88. }
  89. processImagePixels();
  90.  
  91. for(int i = 0; i<img.width; i++){
  92. for (int j =0; j<img.height;j++){
  93. if (imageArray[i][j]==1){
  94. if(imageArray[i-1][j]==0 && imageArray[i+1][j]== 1){
  95. if(imageArray[i-1][j+1]== 1 || imageArray[i-1][j-1]==1 || imageArray[i][j-1]==1 || imageArray[i][j+1]==1 || imageArray[i+1][j-1]==1 || imageArray[i+1][j+1] == 1){
  96. if ((1-imageArray[i+1][j]) - ((1-imageArray[i+1][j])*(1-imageArray[i+1][j-1])*(1-imageArray[i][j-1])) + (1-imageArray[i][j-1]) - ((1-imageArray[i][j-1])*(1-imageArray[i-1][j-1])*(1-imageArray[i-1][j])) + (1-imageArray[i-1][j]) - ((1-imageArray[i-1][j])*(1-imageArray[i-1][j+1])*(1-imageArray[i][j+1])) + (1-imageArray[i][j+1]) - ((1-imageArray[i][j+1])*(1-imageArray[i+1][j+1])*(1-imageArray[i+1][j]))==1){
  97. maskArray[i][j] = 1;
  98.  
  99. }
  100. }
  101. }
  102. }
  103. }
  104. }processImagePixels();
  105.  
  106. for(int i = 0; i<img.width; i++){
  107. for (int j =0; j<img.height;j++){
  108. if (imageArray[i][j]==1){
  109. if(imageArray[i][j+1]==0 && imageArray[i][j-1]== 1){
  110. if(imageArray[i-1][j+1]== 1 || imageArray[i-1][j-1]==1 || imageArray[i-1][j]==1 || imageArray[i+1][j]==1 || imageArray[i+1][j-1]==1 || imageArray[i+1][j+1] == 1){
  111. if ((1-imageArray[i+1][j]) - ((1-imageArray[i+1][j])*(1-imageArray[i+1][j-1])*(1-imageArray[i][j-1])) + (1-imageArray[i][j-1]) - ((1-imageArray[i][j-1])*(1-imageArray[i-1][j-1])*(1-imageArray[i-1][j])) + (1-imageArray[i-1][j]) - ((1-imageArray[i-1][j])*(1-imageArray[i-1][j+1])*(1-imageArray[i][j+1])) + (1-imageArray[i][j+1]) - ((1-imageArray[i][j+1])*(1-imageArray[i+1][j+1])*(1-imageArray[i+1][j]))==1){
  112. maskArray[i][j] = 1;
  113.  
  114. }
  115. }
  116. }}}}processImagePixels();
  117.  
  118. for(int i = 0; i<img.width; i++){
  119. for (int j =0; j<img.height;j++){
  120. if (imageArray[i][j]==1){
  121. if(imageArray[i+1][j]==0 && imageArray[i-1][j]== 1){
  122. if(imageArray[i-1][j+1]== 1 || imageArray[i-1][j-1]==1 || imageArray[i][j-1]==1 || imageArray[i][j+1]==1 || imageArray[i+1][j-1]==1 || imageArray[i+1][j+1] == 1){
  123. if ((1-imageArray[i+1][j]) - ((1-imageArray[i+1][j])*(1-imageArray[i+1][j-1])*(1-imageArray[i][j-1])) + (1-imageArray[i][j-1]) - ((1-imageArray[i][j-1])*(1-imageArray[i-1][j-1])*(1-imageArray[i-1][j])) + (1-imageArray[i-1][j]) - ((1-imageArray[i-1][j])*(1-imageArray[i-1][j+1])*(1-imageArray[i][j+1])) + (1-imageArray[i][j+1]) - ((1-imageArray[i][j+1])*(1-imageArray[i+1][j+1])*(1-imageArray[i+1][j]))==1){
  124. maskArray[i][j] = 1;
  125.  
  126. }}}}
  127. }
  128. }processImagePixels();
  129. }
  130. }
  131.  
  132.  
  133.  
  134.  
  135. void processImagePixels()
  136. {
  137. for(int i = 0; i<img.width; i++){
  138. for (int j =0 ; j<img.height;j++){
  139. if (maskArray[i][j] == 1){
  140. setPixelColor(img,i,j, color(255));}
  141.  
  142. // else
  143. // setPixelColor(img,i,j, color(0));}
  144. maskArray[i][j] = 0;
  145. if (brightness(img.get(i, j)) < 127){
  146. imageArray[i][j] = 1;
  147. } else {
  148. imageArray[i][j] = 0;
  149. }
  150. }
  151.  
  152. refreshImagePixels(img);
  153.  
  154. }
  155. }
  156.  
  157.  
  158. void draw()
  159. {
  160. image(imgOriginal,0,0);
  161. thinning(img, imageArray, maskArray);
  162. image(img,img.width,0);
  163. }
Add Comment
Please, Sign In to add comment