Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. /** Retorna a matriz resultado da busca
  3.  */
  4. matriz busca(matriz *original, matriz *recorte) {
  5.     matriz * localizada;
  6.     copiarMatriz(original, localizada);
  7.  
  8.     matriz * recorteMaisProximo;
  9.     matriz * recorteDaOriginal;
  10.  
  11.     unsigned int mseMenor, mseTemporario;
  12.     unsigned int xDoMenor, yDoMenor;
  13.  
  14.     for (i = 0; i < original->altura - recorte->altura + 1; i++) {
  15.         for(j = 0; j < original->largura - recorte->largura + 1; j++) {
  16.             // OU
  17.             // dando o tamanho
  18.             recorte(original, recorteDaOriginal, i, j, tamanho do recorte, tamanho do recorte);
  19.             // OU
  20.             // dando coordenadas iniciais e finais
  21.             recorte(original, recorteDaOriginal, i, j, i + tamanho do recorte, j + tamanho do recorte);
  22.  
  23.             mseTemporario = comparaMatrizes(recorteDaOriginal, recorte);
  24.  
  25.             if (mseTemporario < mseMenor) {
  26.                 mseMenor = mseTemporario;
  27.                 recorteMaisProximo = recorteDaOriginal;
  28.  
  29.                 xDoMenor = i;
  30.                 yDoMenor = j;
  31.             }
  32.         }
  33.     }
  34.  
  35.     marcarMatriz(localizada, recorteMaisProximo, xDoMenor, yDoMenor);
  36.     return &localizada;
  37. }
  38.  
  39. /** Copia a 'original', 'na cópia'
  40.  */
  41. void copiarMatriz(matriz * original, matriz * copia) {
  42.     copia->altura  = original->altura;
  43.     copia->largura = original->largura;
  44.     copia->dadosM  = vocês tem uma função que faz isso!;
  45.  
  46.     int i;
  47.     int tamanho = original->altura * original->largura;
  48.     for (i = 0; i < tamanho; i++){
  49.         *(copia.dadosM + i) = *(original->dadosM + i);
  50.     }
  51. }
  52.  
  53. /** Compara a diferença das matrizes retornando
  54.  *  a diferença através do MSE
  55.  *
  56.  * * Obs: Imagem 1 e imagem 2 devem ter o mesmo tamanho;
  57.  */
  58. static int comparaMatrizes(matriz * imagem1, matriz * imagem2) {
  59.     int soma = 0;
  60.  
  61.     int pixel1, pixel2;
  62.     int i, tamanho = imagem1->altura * imagem1->largura;
  63.     for (i = 0; i < tamanho; i++) {
  64.         pixel1 = *(imagem1->dadosM + i);
  65.         pixel2 = *(imagem2->dadosM + i);
  66.  
  67.         subtracao = pixel1 - pixel2;
  68.         soma += subtracao * subtracao;
  69.     }
  70.  
  71.     return soma / tamanho;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement