Apéndice A Programas en Matlab A continuación se presentan los programas utilizados en el desarrollo de este trabajo de tesis, es conveniente mencionar que para un mejor desempeño al realizar pruebas con estos algoritmos se trabaje con imágenes en blanco y negro en formato .bmp. A.1. Programa que compara el módulo de la TF con diferentes exponentes k = 0.3; modulo = [0.2 1 2]; xx = 0; yy = 3; f igure, f or jj = 1 : yy a = imread([0 N ombreDeLaImagen.F ormato0 ],0 F ormato0 ); a = imresize(a, [256256],0 bilinear0 ); a = double(a); a = a − mean2(a); af f t = abs(f f tshif t(f f t2(f f tshif t((a))))); af f t = af f t. ∧ modulo(jj); xx = xx + 1; subplot(3, 3, xx) imshow(af f t, []); 35 36 A.2. Programa que compara imágenes escaladas y rotadas af f t = compspectrum(256). ∗ af f t; af f t = maplog2(mapolar(f actorro(af f t))); xx = xx + 1; subplot(3, 3, xx) imshow(af f t, []); af f t = (f f tshif t(f f t2(f f tshif t(af f t)))); xx = xx + 1; subplot(3, 3, xx) imshow(abs(af f t), []); end A.2. Programa que compara imágenes escaladas y rotadas k = 0.3; Escala = [80 85 Rotacion = [0 20 90 40 95 60 100 80 105]; 100 120 140 160 180]; xx = 10; yy = 10; f or jj = 5 : yy a = imread([0 N ombreDeLaImagen.F ormato0 ],0 F ormato0 ); af f t = T rans Escala(a, k); f or ii = 1 : xx; %Escaladas f or hh = 1 : 6 b = imread([0 N ombreDeLaImagen.F ormato0 ],0 F ormato0 ); %imagenproblema bf f t = T rans Escala(b, k); f c = bf f t. ∗ conj(af f t); f cf = real(f f tshif t(if f t2(f f tshif t(f c)))); [P CE esc(ii, hh), c max esc(ii, hh)] = M etrica P CE(f cf ); end %Rotadas A. Programas en Matlab f or hh = 1 : 10 b = imread([0 N ombreDeLaImagen.F ormato0 ],0 F ormato0 ); %imagenproblema bf f t = T rans Escala(b, k); f c = bf f t. ∗ conj(af f t); f cf = real(f f tshif t(if f t2(f f tshif t(f c)))); [P CE rot(ii, hh), c max rot(ii, hh)] = M etrica P CE(f cf ); end end end A.3. Funciones A.3.1. Función compspectrum f unction OU T = compspectrum(rows) r = (rows − 1)/2; f = 2 ∗ pi/r; [x y] = meshgrid(−r : r); OU T = f. ∗ (x. ∗ x + y. ∗ y); A.3.2. Función factorro f unction y = f actorro(f ) [m, n] = size(f ); centro = m/2; f or i = 1 : m f or j = 1 : m r(i, j) = sqrt((sqrt((i − centro). ∧ 2 + (j − centro). ∧ 2))./(sqrt(2). ∗ centro)); end end r = r + 1; y = r. ∗ f ; 37 38 A.3.3. A.3. Funciones Función mapolar f unction g = mapolar(f ) [m, n] = size(f ); f or i = 1 : m teta(i) = (2 ∗ pi) ∗ (i − 1)/(m − 1); r(i) = m ∗ (i − 1)/(sqrt(2) ∗ (m − 1)); ind(i) = i; end f or i = 1 : m f or j = 1 : m x(i, j) = m/2 + r(i). ∗ cos(teta(j)); y(i, j) = m/2 − r(i). ∗ sin(teta(j)); if (x(i, j) > m||y(i, j) > m|x(i, j) < 1|y(i, j) < 1) g(i, j) = 0; else g(i, j) = f (round(y(i, j)), round(x(i, j))); end end end f or i = 1 : 60 f or j = 1 : 256g(i, j) = interp2(ind0 , ind, f, x(i, j), y(i, j),0 ∗linear0 ); end end A.3.4. Función maplog2 f unction y = maplog2(x); [m, n] = size(x); f or i = 1 : m ind(i) = i; A. Programas en Matlab orig(i) = exp((i − 1). ∗ ((log(m))./(m − 1))); end y = interp2(ind0 , ind, x, ind0 , orig); A.3.5. Función Trans Escala f unction af f t = T rans Escala(a, k) a = imresize(a, [256 256],0 bilinear0 ); a = double(a); a = a − mean2(a); af f t = abs(f f tshif t(f f t2(f f tshif t((a))))); af f t = compspectrum(256). ∗ af f t; af f t = maplog2(mapolar(f actorro(af f t))); af f t = (f f tshif t(f f t2(f f tshif t(af f t)))); af f t = imresize(af f t, [256 256],0 bilinear0 ); f f a = angle(af f t); mods = abs(af f t). ∧ k; af f t = mods. ∗ exp(i ∗ f f a); A.3.6. Función Metrica PCE f unction [P CE, numerador] = M etrica P CE(f cf ) cn2 = f cf ; cn2 = max(max(cn2)); numerador = abs(cn2). ∧ 2; suma = 0.0; f or ii = 1 : 256 f or jj = 1 : 256 suma = suma + abs(f cf (ii, jj)). ∧ 2; end end deno = suma; P CE = numerador/deno; 39