domingomery / patrones

Curso Reconocimiento de Patrones - UC - Chile
https://domingomery.ing.puc.cl/teaching/patrones/
143 stars 39 forks source link

Preguntas y Respuestas de la Clase 03 (Martes 17/03/20) #8

Closed domingomery closed 4 years ago

domingomery commented 4 years ago

Dejar aquí las preguntas que tengan sobre la clase de hoy (ver video). Les pido que se sientan muy libres no sólo en preguntar sino que también en responder (aquellas personas que crean tener la respuesta , por favor háganlo y así me ayudan a responder más rápido, yo reviso luego).

fprebolledo commented 4 years ago

Hola! una consulta, la formula de los momentos, dice i,j perteneciente a R, R es la región que queremos ("el arroz"), sin contar el fondo?

domingomery commented 4 years ago

Hola! una consulta, la formula de los momentos, dice i,j perteneciente a R, R es la región que queremos ("el arroz"), sin contar el fondo?

correcto, es la región que está en color gris (ver la slide donde está la segmentación del arroz, donde R (gris) es la region, l (blanco) es el borde, y el fondo es negro).

domingomery commented 4 years ago

Pregunta de "asimonv" Profesor, podría explicar un poco qué es lo que hacen las líneas del case 1?:

patrones/clases/Cap02_Extraccion_de_Caracteristicas/matlab/PAT02_HuMoments.m Line 15 in 8790cef case 1 En verdad mi duda es cómo (en términos de código) se segmenta cada R cuando pregunta qué número es?

Respuesta Este case lo que hace es segmentar cada uno de los números, esto es asilar los números 1,2,3 y ponerlos en la pantalla, y así mismo se le pregunta al usuario qué número es, esto es lo que se conoce cómo supervisión (un experto humano dice a qué clase pertenece carácter). La segmentación se hace con la función bwlabel

la ejecución de esta parte del código se muestra en el video de la clase en el minuto 41:15

vmanriq commented 4 years ago

Hola profe !, tengo una consulta con respecto a los descriptores de Fourier. Mi duda es que si tengo dos imágenes iguales, pero una de estas rotadas, deberían tener los mismos descriptores F_1, F_2,..., F_L-1 ?

domingomery commented 4 years ago

Hola profe !, tengo una consulta con respecto a los descriptores de Fourier. Mi duda es que si tengo dos imágenes iguales, pero una de estas rotadas, deberían tener los mismos descriptores F_1, F_2,..., F_L-1 ?

Sí, los Descriptores de Fourier son invariantes a la rotación. La explicación es la siguiente: Al rotar un objeto, la representación (x,y) del contorno del objeto se desplaza. La transformada de Fourier de una función desplazada cambia su fase (y no su módulo) en relación a la función original. Como los Descriptores de Fourier se refieren al modulo de la transformada de Fourier (y no a su fase), los descriptores de Fourier son invariantes a la rotación.... pero los descriptores de Fourier son invariantes al cambio de escala. Para hacerlos invariantes al cambio de escala, antes de sacar los Descriptores de Fourier debes cambiar el tamaño del objeto (de tal forma que todos los objetos a evaluar tengan el mismo tamaño).

vmanriq commented 4 years ago

Hola profe, tenia una duda con respecto al calculo de la transformada inversa de Furier, cuando se utilizan tan solo m componentes. Mi duda va centrada en el código de la clase ya que no se por que además de utilizar los m componentes en la linea 35 después en la linea 36 le agrega otros descriptores en otras ubicaciones

 35 Ff(1:m) = F(1:m);
 36 Ff(n-m+2:n) = F(n-m+2:n);
37  f = ifft(Ff);

Es el código que se encuentra en https://github.com/domingomery/patrones/blob/master/clases/Cap02_Extraccion_de_Caracteristicas/matlab/PAT02_FourierDescriptors.m Gracias !!

domingomery commented 4 years ago

Hola profe, tenia una duda con respecto al calculo de la transformada inversa de Furier, cuando se utilizan tan solo m componentes. Mi duda va centrada en el código de la clase ya que no se por que además de utilizar los m componentes en la linea 35 después en la linea 36 le agrega otros descriptores en otras ubicaciones

 35 Ff(1:m) = F(1:m);
 36 Ff(n-m+2:n) = F(n-m+2:n);
37  f = ifft(Ff);

Es el código que se encuentra en https://github.com/domingomery/patrones/blob/master/clases/Cap02_Extraccion_de_Caracteristicas/matlab/PAT02_FourierDescriptors.m Gracias !!

Hola vmanriq, esto hay que hacerlo porque la DFT debe ser simétrica, si no lo es, la transformada inversa no reconstruye correctamente. Saludos

ewaugh2 commented 4 years ago

Hola profe, tengo una duda acerca del cálculo de los descriptores de fourier. En el ejemplo dibujado que dió en clases se pasaba de una figura (el borde del objeto en la imagen) a un histograma que representaba los descriptores de fourier. No se mucho de la transformada de fourier mas allá de que pasa funciones con dominio en el tiempo a funciones con dominio en la frecuencia, entonces no entiendo como los números complejos que resultan de aplicar dicha transformada a una secuencia de números complejos (x + i*y) se pueden colocar en un histograma para compararse con otros. 1.- ¿Se debe realizar una operación específica a cada numero complejo de la secuencia resultante? ¿obtener el módulo quizás? 2.- Y en tal caso, ¿como se puede obtener la transformada inversa si se pierde información al hacer módulo del complejo?

Perdón si la pregunta es muy básica pero en internet solo encuentro soluciones que usan librerías que calculan los descriptores automáticamente. Gracias.

domingomery commented 4 years ago

Hola profe, tengo una duda acerca del cálculo de los descriptores de fourier. En el ejemplo dibujado que dió en clases se pasaba de una figura (el borde del objeto en la imagen) a un histograma que representaba los descriptores de fourier. No se mucho de la transformada de fourier mas allá de que pasa funciones con dominio en el tiempo a funciones con dominio en la frecuencia, entonces no entiendo como los números complejos que resultan de aplicar dicha transformada a una secuencia de números complejos (x + i*y) se pueden colocar en un histograma para compararse con otros. 1.- ¿Se debe realizar una operación específica a cada numero complejo de la secuencia resultante? ¿obtener el módulo quizás?

Así es, los descriptores de Fourier corresponden al módulo de la transformada discreta de Foruier.

2.- Y en tal caso, ¿como se puede obtener la transformada inversa si se pierde información al hacer módulo del complejo?

Buen punto: en el ejemplo visto en clase, la transformada inversa se utiliza solo en la visualización de un resultado (para explicar mejor el concepto de la información que contiene la transformada discreta de Foruier de las coordenadas del borde). Para este efecto, en la transformada inversa se usa el número complejo de la transformada discreta de Fourier, no el módulo.

Perdón si la pregunta es muy básica pero en internet solo encuentro soluciones que usan librerías que calculan los descriptores automáticamente. Gracias.

Super! y gracias por la pregunta

Domingo