Schaeffer / ITS / FIME / UANL - Elisa Schaeffer · Carga computacional •La aplicación de...

5
Visión computacional Schaeer / ITS / FIME / UANL Herramientas Semana 2 http://img.1mobile.com/web/screenshot/d/d/b62679276af69f9f0bc51436faf9fd82.png Imágenes digitales Resolución (cantida de pixeles) Cambio de resolución por combinación o muestreo Colores (escala de grises, indizado, RGB, CMYK, etc.) Cantidad de bits por canal, presencia de un canal para opacidad, etc. Procesos de filtrado Reducción de ruido, acentuación de bordes, etc. Medianos, promedios, máximos etc. dentro de vecindades Vamos a probar estos en Gimp e implementar algunos en Python con PIL y numpy Imágenes en blanco y negro Muchos filtros y procesos de reconocimiento u otro tipo de análisis se pueden realizar mejor con imágenes en formato binario, aún cuando el resultado final será otra vez mostrado utilizando los colores originales Eliminación de ruido “sal y pimienta”

Transcript of Schaeffer / ITS / FIME / UANL - Elisa Schaeffer · Carga computacional •La aplicación de...

Page 1: Schaeffer / ITS / FIME / UANL - Elisa Schaeffer · Carga computacional •La aplicación de filtros tal cual toma mucho tiempo si la imagen es grande •Los computólogos nos esforzamos

Visión computacionalSchaeffer / ITS / FIME / UANL

Herramientas Semana 2

http://img.1mobile.com/web/screenshot/d/d/b62679276af69f9f0bc51436faf9fd82.png

Imágenes digitales• Resolución (cantida de pixeles)

• Cambio de resolución por combinación o muestreo• Colores (escala de grises, indizado, RGB, CMYK, etc.)

• Cantidad de bits por canal, presencia de un canal para opacidad, etc.

• Procesos de filtrado• Reducción de ruido, acentuación de bordes, etc.

• Medianos, promedios, máximos etc. dentro de vecindades• Vamos a probar estos en Gimp e implementar algunos en

Python con PIL y numpy

Imágenes en blanco y negro

• Muchos filtros y procesos de reconocimiento u otro tipo de análisis se pueden realizar mejor con imágenes en formato binario, aún cuando el resultado final será otra vez mostrado utilizando los colores originales

• Eliminación de ruido “sal y pimienta”

Page 2: Schaeffer / ITS / FIME / UANL - Elisa Schaeffer · Carga computacional •La aplicación de filtros tal cual toma mucho tiempo si la imagen es grande •Los computólogos nos esforzamos

Procesamiento de video

• Al contar con imagen de video, es frecuentemente útil combinar una secuencia de imágenes consecutivas en una sola imagen para realizar de análisis

• Promedio, mediano, máximo, mínimo

• A base de los cambios que haya

• Etcétera

Otros trucos

• Procesar una copia y luego realizar una operación entre la original y la procesada• Sharpen-unsharpen• Calcular una copia difusa y restando el resultado de la original• El objetivo es que sea menos difusa la imagen así obtenida que la original

• Probamos con numpy & PIL

Convolución discreta en 2D

• La función f representa a nuestra imagen y la función g una máscara de convolución

• La máscara tiene una dimensión k × k donde por lo general k es mucho menor a la resolución de la imagen; k = 3 es común

• La pequeña máscara se “desliza” por toda la imagen a procesar

• Por lo general la máscara se invierte, h(x, y) = g(-x, -y)

F (x, y) = f(x, y) ⇤ g(x, y) =X

i

X

j

f(i, j)g(x� i, y � j)

F (x, y) = f(x, y) ⇤ g(x, y) =X

i

X

j

f(x+ i, y + j)h(i, j)

Un filtro Gaussiano

1 2 1

2 4 2

1 2 1

1 / 16

Page 3: Schaeffer / ITS / FIME / UANL - Elisa Schaeffer · Carga computacional •La aplicación de filtros tal cual toma mucho tiempo si la imagen es grande •Los computólogos nos esforzamos

Consideraciones• Para deshacernos de ruido, debemos analizar la distribución de

los niveles dentro de una vecindad e identificar si aquella no tiene una forma “ideal”• Para saber cortar partes y usar la mediana de la parte que se nos hace representativa

Secuencial o paralelo• En procesamiento secuencial, por lo general tenemos una sola

copia de la imagen y esa copia se va modificando mientras el procesamiento avanza

• En procesamiento paralelo, por lo general se crea una nueva imagen a partir del resultado del procesamiento, por lo cual se podría repartir la imagen original en pedazos que se procesen independientemente (con algo de intersección entre pedazos adjacentes, dependiendo del tamaño de la máscara)

• Esto se puede realizar simultáneamente para cada pedazo; por eso el nombre, aún cuando en realidad no se tiene más que un núcleo

Carga computacional• La aplicación de filtros tal cual toma mucho tiempo si la imagen es grande

• Los computólogos nos esforzamos mucho en buscar alternativas que produzcan resultados visuales similares pero con menor cantidad de pasos de cómputo

Distorciones• Si la idea es medir por ejemplo tamaños o distancias o

luminosidades a partir de una imagen, es importante tomar en cuenta que los filtros aplicados para mejorar la legibilidad de la imagen misma pueden distorcionar estas medidas de forma significativa

• En este tipo de aplicaciones es importante diseñar los filtros de tal forma que la característica que se busca medir cambie lo mínimo posible

Page 4: Schaeffer / ITS / FIME / UANL - Elisa Schaeffer · Carga computacional •La aplicación de filtros tal cual toma mucho tiempo si la imagen es grande •Los computólogos nos esforzamos

Umbrales• Analizando la distribución/varianza/otra estadística de un aspecto

como por ejemplo la luminosidad de una imagen, podemos ver si tiene “minijorobas” para aplicar un umbral (inferior o superior o las dos cosas) para eliminar por completo los pixeles que estén afuera del rango que se considera relevante• Por ejemplo, oscuros a negro y claros a blanco

• O simplemente excluirlos de análisis posterior• Por lo general los umbrales se deben ajustar de forma adaptativa,

calculando sus valores a partir de cada imagen que se proceso, no intentando fijarlos de forma global

• Suele salir mejor cuando se aplica localmente, no globalmente• Ejemplo en la diapositiva siguiente

Figura 4.9 del libro

Análisis de bordes Semana 3

http://1.bp.blogspot.com/_OPrPFqk0OIE/TM_HHztUp1I/AAAAAAAAAGk/jyko2VDsPZg/s1600/edge+detect.png

Detección de bordes• Capítulo 4 del libro de texto

• Determinar gradientes locales de intensidad dentro de máscaras de convolución adecuadas

• Técnicas dominantes

• Acoplamiento a una plantilla (TM)

• Gradiente diferencial (DG)

Page 5: Schaeffer / ITS / FIME / UANL - Elisa Schaeffer · Carga computacional •La aplicación de filtros tal cual toma mucho tiempo si la imagen es grande •Los computólogos nos esforzamos

Fundamentos teóricos

• Se busca identificar cambios en las direcciones x & y• g = max(gi) donde i ∈ [1, n]

• n es típicamente 8 o 12 (sobre una máscara)• Máximo dentro de la vecindad (no incluye la dirección)

• TM: g = (gx + gy)1/2

• Alternativas computacionalmente más livianas• g = |gx| + |gy| • g = max(|gx| + |gy|)

• DG: θ = arctan(gy/gx)• Vectorial

Máscaras típicas de detección de bordes: DG

Roberts: Rx

0=

0 1

�1 0

�, R

y

0=

1 0

0 �1

Sobel: Sx

=

2

4�1 0 1

�2 0 2

�1 0 1

3

5, Sy

=

2

41 2 1

0 0 0

�1 �2 �1

3

5

Prewitt: Px

=

2

4�1 0 1

�1 0 1

�1 0 1

3

5, Py

=

2

41 1 1

0 0 0

�1 �1 �1

3

5

Máscaras típicas de detección de bordes: TM

✓ = 0

� ✓ = 45

Prewitt:

2

4�1 1 1

�1 �2 1

�1 1 1

3

5

2

41 1 1

�1 �2 1

�1 �1 1

3

5

Kirsch:

2

4�3 �3 5

�3 0 5

�3 �3 5

3

5

2

4�3 5 5

�3 0 5

�3 �3 �3

3

5

Robinson 3-level:

2

4�1 0 1

�1 0 1

�1 0 1

3

5

2

41 1 1

�1 �2 1

�1 �1 1

3

5

Robinson 5-level:

2

4�1 0 1

�2 0 2

�1 0 1

3

5

2

40 1 2

�1 0 1

�2 �1 0

3

5

Tarea 1: detección de bordes• Implementen en Python, usando numpy, una rutina que detecte los

bordes en una imágen dada y que ponga todos los pixeles que no son borde a negro y los de borde los ponga en blanco.

• Se ocupa usar filtros y/o umbrales para que salgan contínuos los bordes (a inspección visual humana).

• No se usa ninguna subrutina prehecha para visión (no anden googleando), sino todo se hace apartir de operaciones matriciales básicas y aritmética tal cual.

• En el blog va el código comentado y tres pares de imágenes (original y procesada) de diferentes tamaños, junto con el tiempo de ejecución de su rutina para cada imágen de prueba, promediado sobre 30 repeticiones de la ejecución.

• Publicado antes de entrar a clase la semana siguiente.