Guest User

Untitled

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