]> git.llucax.com Git - z.facultad/61.03/tp.git/commitdiff
Import inicial después del "/var incident". :(
authorLeandro Lucarella <llucax@gmail.com>
Sun, 23 Mar 2003 07:10:16 +0000 (07:10 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sun, 23 Mar 2003 07:10:16 +0000 (07:10 +0000)
bordet.m [new file with mode: 0644]
f2imagen.m [new file with mode: 0644]
fun1.mat [new file with mode: 0644]
fun1_img.mat [new file with mode: 0644]
informe.sxw [new file with mode: 0644]

diff --git a/bordet.m b/bordet.m
new file mode 100644 (file)
index 0000000..e45791e
--- /dev/null
+++ b/bordet.m
@@ -0,0 +1,112 @@
+% bordet.m\r
+% Script de MathLab para detectar el borde de las imagenes.\r
+\r
+% Introduccion\r
+%%%%%%%%%%%%%%%\r
+clc\r
+disp('   DETECTOR DE BORDES PARA MATHLAB');\r
+disp('   ======== == ====== ==== =======');\r
+disp(' ');\r
+disp('Imagenes del MathLab: flujet, spine, gatlin2, clown, earth, mandrill');\r
+disp(' ');\r
+disp(' ');\r
+\r
+% Pregunta si quiere borrar todas las imagenes y variables\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+sBorrar = input('Desea borrar todos los datos anteriores (S/N)? ', 's');\r
+disp(' ');\r
+if (sBorrar == 'S') | (sBorrar == 's')\r
+       clear;\r
+end\r
+\r
+% Entrada de la imagen\r
+%%%%%%%%%%%%%%%%%%%%%%%\r
+sArchivo = input ('Ingrese el nombre de la imagen (*.mat): ', 's');\r
+load (sArchivo)\r
+\r
+% Entrada de la tolerancia de la deteccion de bordes\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+nTolerancia= input ('Ingrese la tolerancia para detectar los bordes (0 = sin tolerancia, 15 = mucha tolerancia): ');\r
+\r
+% Pregunta si quiere ativar la correccion de zonas constantes\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+sCorrect = input('Desea evitar que los intervalos constantes se detecten como bordes (S/N)? ', 's');\r
+\r
+% Crea una nueva figura y muestra la imagen a la que se le detectarán los bordes\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+clc\r
+figure\r
+image(X), colormap(copper)\r
+disp('MOSTRANDO IMAGEN ORIGINAL. Presione cualquier tecla para continuar ...');\r
+pause\r
+\r
+% Comienza a detectar los bordes, creando otra matriz con la imagen de los mismos\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+clc\r
+disp(' CALCULANDO LOS BORDES. Espere por favor ...');\r
+[m,n]=size(X);                                                                         % obtiene el tamaño de la matriz original\r
+mBorde=ones(m,n);                                                                      % Crea la matriz borde iniciada en 1 (1 es Negro)\r
+for i = 2: 1: m-1                                                                      % Recorre la matriz en busca de los bordes\r
+       for j = 2: 1: n-1\r
+               if (sCorrect == 'S') | (sCorrect == 's')        % Si esta activada la correccion ...\r
+                       % Primero se fija que los valores que rodean al elemento actual y dicho elemento sean (al menos uno)\r
+                       %   distintos entre sí (dependiendo de la tolerancia). Esto evita que en los intervalos que la funcion\r
+                       %   es constante nos detecte un borde, ya que en ese caso, tambien cumple la ecuacion de Laplace pero no\r
+                       %   es un borde en realidad.\r
+                       if (abs(X(i+1, j) - X(i, j-1)) > nTolerancia) | (abs(X(i+1, j) - X(i, j)) > nTolerancia) | (abs(X(i+1, j) - X(i, j+1)) > nTolerancia) | (abs(X(i+1, j) - X(i-1, j)) > nTolerancia) | (abs(X(i-1, j) - X(i, j+1)) > nTolerancia) | (abs(X(i-1, j) - X(i, j)) > nTolerancia) | (abs(X(i-1, j) - X(i, j-1)) > nTolerancia) | (abs(X(i-1, j) - X(i+1, j)) > nTolerancia) | (abs(X(i, j+1) - X(i, j)) > nTolerancia) | (abs(X(i, j+1) - X(i, j-1)) > nTolerancia) | (abs(X(i, j+1) - X(i+1, j)) > nTolerancia) | (abs(X(i, j+1) - X(i-1, j)) > nTolerancia) | (abs(X(i, j-1) - X(i, j+1)) > nTolerancia) | (abs(X(i, j-1) - X(i, j)) > nTolerancia) | (abs(X(i, j-1) - X(i+1, j)) > nTolerancia) | (abs(X(i, j-1) - X(i-1, j)) > nTolerancia)\r
+                               % Calcula el elemento actual aplicando la ecuacion de Laplace\r
+                               nElemento = X(i+1, j) + X(i, j-1) + X(i, j+1) + X(i-1, j) - 4 * X(i, j);\r
+                               if (abs(nElemento) <= nTolerancia)              % Para que cumpla con Laplace el elemento debe ser\r
+                                                                                                               %   igual a cero, pero como se trata de una funcion\r
+                                                                                                               %   discrete es muy comun que no de exactamente cero.\r
+                                                                                                               %   Es por esto que uso la tolerancia.\r
+                                       mBorde(i, j) = 256;                                     % Si encontró el borde, le asigna un color alto (256 es blanco)\r
+                               end % if abs(nElemento) <= nTolerancia\r
+                       end % if LARGO\r
+               else\r
+                       % Calcula el elemento actual aplicando la ecuacion de Laplace\r
+                       nElemento = X(i+1, j) + X(i, j-1) + X(i, j+1) + X(i-1, j) - 4 * X(i, j);\r
+                       if (abs(nElemento) <= nTolerancia)              % Para que cumpla con Laplace el elemento debe ser\r
+                                                                                                       %   igual a cero, pero como se trata de una funcion\r
+                                                                                                       %   discrete es muy comun que no de exactamente cero.\r
+                                                                                                       %   Es por esto que uso la tolerancia.\r
+                               mBorde(i, j) = 256;                                     % Si encontró el borde, le asigna un color alto (256 es blanco)\r
+                       end % if abs(nElemento) <= nTolerancia\r
+               end % if (sCorrect == 'S') ...\r
+       end % for j = 1:1:n\r
+end % for i = 1:1:m\r
+disp(' ');\r
+disp(' FINALIZO EL CALCULO DE LOS BORDES. Presione cualquier tecla para verlos ...'), pause\r
+\r
+% Crea una nueva figura y muestra el borde en ella\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+figure                                         \r
+image(mBorde), colormap(gray(256))\r
+\r
+% Borra todas las variables temporales que usa el programa\r
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
+clear sBorrar;\r
+clear sArchivo;\r
+clear nTolerancia;\r
+clear nElemento;\r
+clear sCorrect;\r
+clear m;\r
+clear n;\r
+clear i;\r
+clear j;\r
+\r
+% Mensaje de salida\r
+%%%%%%%%%%%%%%%%%%%%\r
+clc\r
+disp(' ');\r
+disp('  La matriz que contiene al borde se llama "nBorde".');\r
+disp(' ');\r
+disp('------------------------------------------------------------------------');\r
+disp(' ');\r
+disp('  Este programa fue desarrollado por Leandro Lucarella. PADRON: 77.891');\r
+disp('     para la Facultad de Ingeniería de la Universidad de Buenos Aires.');\r
+disp('     Catedra de Análisis Matemático II, curso 8.');\r
+disp(' ');\r
+disp('     Comentarios y/o sugerencias a: lluca@cnba.uba.ar       | (C) 1999');\r
+disp(' ');\r
+disp(' ');
\ No newline at end of file
diff --git a/f2imagen.m b/f2imagen.m
new file mode 100644 (file)
index 0000000..9131848
--- /dev/null
@@ -0,0 +1,14 @@
+%\r
+% f2imagen.m\r
+%\r
+% Función que transforma una matriz cualquiera en una imagen de la cantidad de colores\r
+%   especificada por uno de los argumentos.\r
+%\r
+\r
+function X = f2imagen(M, colores)\r
+% M es la matriz a transformar\r
+% colores es la cantidad de colores\r
+\r
+maximo = max(max(M));                                                  % Asigna el maximo valor de M\r
+minimo = min(min(M));                                                  % Asigna el minimo valor de M\r
+X = round(colores * M ./ (maximo - minimo));   % Calcula la nueva matriz\r
diff --git a/fun1.mat b/fun1.mat
new file mode 100644 (file)
index 0000000..3928e28
Binary files /dev/null and b/fun1.mat differ
diff --git a/fun1_img.mat b/fun1_img.mat
new file mode 100644 (file)
index 0000000..3a62e19
Binary files /dev/null and b/fun1_img.mat differ
diff --git a/informe.sxw b/informe.sxw
new file mode 100644 (file)
index 0000000..15325a3
Binary files /dev/null and b/informe.sxw differ