terça-feira, 26 de janeiro de 2016

Média, Desvio Padrão e Eistein

Na aula sobre média e desvio padrão, analisamos a média dos tons de cinza da famosa imagem de Albert Eistein, também aplicando sobre a análise desta média os desvios padrões.

Na atividade passada para ser feita em casa, foi pedido que fossem analisadas essa mesma imagem com variações de brilho e contraste.

Primeiro, vou deixar aqui o código comentado utilizado para isso.

//variável que armazena a imagem
PImage img;
void setup(){
  size(640, 480);
  float t=0, mediaT, somaT=0;
  int pos;
  //carregamento da imagem
  img = loadImage("einstein.jpg");
  //a imagem é percorrida e são pegues os valores vermelhos dos pixels
  for (int x = 0; x < 640; x++){
    for (int y = 0 ; y < 480; y++){
      pos = y * 640 + x;
      t = red(img.pixels[pos]);
      //aqui, são deixados o valores totais somados destes pixels
      somaT = somaT + t;
  }
}

//aqui, é calculada a média destes valores
mediaT = somaT/(640*480);
println("Média de Tons é ", mediaT);

/*aqui, é calculado o desvio padrão a partir da raiz quadrada da variância (armazenada
na variável "v"*/
float v, SomaV = 0;
for (int x = 0; x < 640; x++){
  for (int y = 0; y < 480; y++){
    pos = y * 640 + x;
    t = red(img.pixels[pos]);
    v = pow(t - mediaT, 2);
    SomaV = SomaV + sqrt(v);
  }
}
//desvio padrão
float media = SomaV/(640*480);
println(media);

}

void draw(){
  image(img, 0, 0);
}

Nas imagens com níveis diferentes de brilho e contraste havia uma alteração significativa nos valores da média e desvio padrão. Quanto maior o brilho, maior o desvio padrão, o que é refletido pelo maior valor que um brilho maior dá para os pixels que compõem a imagem.

Nenhum comentário:

Postar um comentário