View difference between Paste ID: vFQSfkVg and jkqeHbaC
SHOW: | | - or go back to the newest paste.
1
2
/** Retorna a matriz resultado da busca
3
 */
4
matriz busca(matriz *original, matriz *recorte) {
5
	matriz * localizada = cópia da matriz original;
6
7
	matriz * recorteMaisProximo = nada por enquanto;
8
	matriz * recorteDaOriginal =  nada por enquanto;
9
10
	unsigned int mseMenor, mseTemporario;
11
	unsigned int xDoMenor, yDoMenor;
12
13
	for (j) {
14
		for(i) {
15
			recorteDaOriginal = recortar a original;
16
17
			mseTemporario = comparaMatrizes(recorteDaOriginal, );
18
19
			if (mseTemporario < mseMenor) {
20
				xDoMenor = i;
21
				yDoMenor = j;
22
				mseMenor = mseTemporario;
23
				recorteMaisProximo = recorteDaOriginal;
24
			}
25
		}
26
	}
27
28
	return marcarMatriz(localizada, recorteMaisProximo, xDoMenor, yDoMenor);
29
}
30
31
32
/** Compara a diferença das matrizes retornando
33
 *  a diferença através do MSE
34
 *
35
 * Obs: Imagem 1 e imagem 2 devem ter o mesmo tamanho;
36
 */
37
static int comparaMatrizes(matriz * imagem1, matriz * imagem2) {
38
	int soma = 0;
39
40
	int pixel1, pixel2;
41
	int i, tamanho = imagem1->altura * imagem1->largura;
42
	for (i = 0; i < tamanho; i++) {
43
		pixel1 = *(imagem1->dadosM + i);
44
		pixel2 = *(imagem2->dadosM + i);
45
46
		subtracao = pixel1 - pixel2;
47
		soma += subtracao * subtracao;
48
	}
49
50
	return soma / tamanho;
51
}