Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PImage img, imgOriginal;
- byte[][] imageArray;
- byte[][] maskArray;
- int currentImage = 0;
- String[] images = {"print1.png", "print1b.png", "print2.png", "print2b.png", "print3.png", "print3b.png"};
- void loadPixelArray(PImage anImage)
- {
- anImage.loadPixels();
- }
- color getPixelColor(PImage anImage, int x, int y)
- {
- color pixelColor = anImage.get(x,y);
- return pixelColor;
- }
- void refreshImagePixels(PImage anImage)
- {
- anImage.updatePixels();
- }
- void setPixelColor(PImage anImage, int x, int y, color aColor)
- {
- anImage.set(x,y,aColor);
- }
- void initImage(String fileName)
- {
- img = loadImage(fileName);
- imgOriginal = loadImage(fileName);
- size(img.width * 2, img.height);
- frame.setSize(img.width * 2, img.height);
- loadPixelArray(img);
- imageArray = new byte[img.width][img.height];
- maskArray = new byte[img.width][img.height];
- for (int col = 1; col < img.width - 1; col++)
- {
- for (int row=1; row<img.height-1; row++)
- {
- maskArray[col][row] = 0;
- if (brightness(img.get(col, row)) < 127){
- imageArray[col][row] = 1;
- } else {
- imageArray[col][row] = 0;
- }
- }
- }
- }
- void setup()
- {
- initImage(images[0]);
- }
- void mousePressed()
- {
- currentImage = currentImage + 1;
- if (currentImage >= images.length)
- {
- currentImage = 0;
- }
- initImage(images[currentImage]);
- }
- void thinning(PImage img, byte[][] imageArray, byte [][] maskArray)
- {for(int a = 0; a<5;a++){
- for(int i = 0; i<img.width; i++){
- for (int j =0; j<img.height;j++){
- if (imageArray[i][j]==1){
- if(imageArray[i][j-1]==0 && imageArray[i][j+1]==1){
- 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){
- 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){
- maskArray[i][j] = 1;
- }
- }
- }
- }
- }
- }
- processImagePixels();
- for(int i = 0; i<img.width; i++){
- for (int j =0; j<img.height;j++){
- if (imageArray[i][j]==1){
- if(imageArray[i-1][j]==0 && imageArray[i+1][j]== 1){
- 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){
- 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){
- maskArray[i][j] = 1;
- }
- }
- }
- }
- }
- }processImagePixels();
- for(int i = 0; i<img.width; i++){
- for (int j =0; j<img.height;j++){
- if (imageArray[i][j]==1){
- if(imageArray[i][j+1]==0 && imageArray[i][j-1]== 1){
- 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){
- 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){
- maskArray[i][j] = 1;
- }
- }
- }}}}processImagePixels();
- for(int i = 0; i<img.width; i++){
- for (int j =0; j<img.height;j++){
- if (imageArray[i][j]==1){
- if(imageArray[i+1][j]==0 && imageArray[i-1][j]== 1){
- 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){
- 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){
- maskArray[i][j] = 1;
- }}}}
- }
- }processImagePixels();
- }
- }
- void processImagePixels()
- {
- for(int i = 0; i<img.width; i++){
- for (int j =0 ; j<img.height;j++){
- if (maskArray[i][j] == 1){
- setPixelColor(img,i,j, color(255));}
- // else
- // setPixelColor(img,i,j, color(0));}
- maskArray[i][j] = 0;
- if (brightness(img.get(i, j)) < 127){
- imageArray[i][j] = 1;
- } else {
- imageArray[i][j] = 0;
- }
- }
- refreshImagePixels(img);
- }
- }
- void draw()
- {
- image(imgOriginal,0,0);
- thinning(img, imageArray, maskArray);
- image(img,img.width,0);
- }
Add Comment
Please, Sign In to add comment