quarta-feira, 3 de junho de 2015

Atividade 19

Envelhecimento da Imagem

- crie uma aplicação que realize o envelhecimento de uma imagem, a sua escolha, a partir de três variáveis distintas de controle: quantidade de pixels alterados por ruído, quantidade de amarelo e quantidade de vermelho adicionados.

código:







































Primeiramente são criados variáveis para a Imagem Original e para suas respectivas cópias.
Depois define-se as variáveis que serão utilizadas, pos para definir a posição do pixel e r,g,b para os canais de cores.
PImage imgOriginal;
PImage imgCopia = createImage(300,400,RGB);
PImage imgCopia2 = createImage(300,400,RGB);
PImage imgCopia3 = createImage(300,400,RGB);
PImage imgCopia4 = createImage(300,400,RGB);

float r,g,b;
int pos;


Depois é só acrescentar o efeito desejado em cada uma das cópias.

para o efeito de ruído, acrescenta-se um valor aleatório nos canais RGB.
    for (int x = 0; x < 300; x++){
    for(int y = 0; y < 400; y++){
    r = red(imgOriginal.pixels[pos]) + random(50);
    g = green(imgOriginal.pixels[pos]) + random(50);
    b = blue(imgOriginal.pixels[pos]) + random(50);
    pos = y*300 + x;
    imgCopia.pixels[pos] = color(r,g,b);
   } 
  }

para o efeito de preto e branco, faz-se a media ponderada da quantidade de cada cor num pixel.
     for (int x = 0; x < 300; x++){
     for(int y = 0; y < 400; y++){
    r = red(imgCopia.pixels[pos]);
    g = green(imgCopia.pixels[pos]);
    b = blue(imgCopia.pixels[pos]);
    pos = y*300 + x;
    float m = (0.3*r + 0.59*g + 0.11*b);
    imgCopia2.pixels[pos] = color(m,m,m);
     }
   }

para o efeito avermelhado, aumenta-se o valor da cor vermelha.
   for (int x = 0; x < 300; x++){
     for(int y = 0; y < 400; y++){
    r = red(imgCopia2.pixels[pos]);
    g = green(imgCopia2.pixels[pos]);
    b = blue(imgCopia2.pixels[pos]);
    pos = y*300 + x;
    imgCopia3.pixels[pos] = color (r + 50,g,b);
     }
   }

para o efeito sépia, reduz-se a quantidade de azul da imagem.
   for (int x = 0; x < 300; x++){
     for(int y = 0; y < 400; y++){
    r = red(imgCopia3.pixels[pos]);
    g = green(imgCopia3.pixels[pos]);
    b = blue(imgCopia3.pixels[pos]);
    pos = y*300 + x;
    imgCopia4.pixels[pos] = color (r,g,b - 50);
     }
   }


Depois é só chamar as imagens no draw.
void draw(){
  image(imgOriginal,0,0);
  image(imgCopia,300,0);
  image(imgCopia2,600,0);
  image(imgCopia3,900,0);
  image(imgCopia4,1200,0);
  
}


Resultado:



Nenhum comentário:

Postar um comentário