Está en la página 1de 5

Visin computacional

Schaeer / ITS / FIME / UANL

Herramientas

Semana 2

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

Imgenes digitales
Resolucin (cantida de pixeles)
Cambio de resolucin por combinacin 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
Reduccin de ruido, acentuacin de bordes, etc.
Medianos, promedios, mximos etc. dentro de vecindades
Vamos a probar estos en Gimp e implementar algunos en
Python con PIL y numpy

Imgenes en blanco y negro


Muchos filtros y procesos de reconocimiento u otro
tipo de anlisis se pueden realizar mejor con
imgenes en formato binario, an cuando el
resultado final ser otra vez mostrado utilizando los
colores originales
Eliminacin de ruido sal y pimienta

Procesamiento de video

Otros trucos

Al contar con imagen de video, es frecuentemente til


combinar una secuencia de imgenes consecutivas
en una sola imagen para realizar de anlisis

Procesar una copia y luego realizar una operacin


entre la original y la procesada

Promedio, mediano, mximo, mnimo


A base de los cambios que haya
Etctera

Convolucin discreta en 2D
F (x, y) = f (x, y) g(x, y) =

XX
i

f (i, j)g(x

i, y

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

Un filtro Gaussiano
j)

La funcin f representa a nuestra imagen y la funcin g una mscara de


convolucin
La mscara tiene una dimensin k k donde por lo general k es mucho
menor a la resolucin de la imagen; k = 3 es comn

1 / 16

La pequea mscara se desliza por toda la imagen a procesar


Por lo general la mscara se invierte, h(x, y) = g(-x, -y)

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

XX
i

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

Consideraciones

Secuencial o paralelo

Para deshacernos de ruido, debemos analizar la distribucin de


los niveles dentro de una vecindad e identificar si aquella no
tiene una forma ideal

En procesamiento secuencial, por lo general tenemos una sola


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

Para saber cortar partes y usar la mediana de la parte que se nos hace representativa

En procesamiento paralelo, por lo general se crea una nueva


imagen a partir del resultado del procesamiento, por lo cual se
podra repartir la imagen original en pedazos que se procesen
independientemente (con algo de interseccin entre pedazos
adjacentes, dependiendo del tamao de la mscara)
Esto se puede realizar simultneamente para cada pedazo;
por eso el nombre, an cuando en realidad no se tiene ms
que un ncleo

Carga computacional

Distorciones

La aplicacin de filtros tal cual toma mucho


tiempo si la imagen es grande

Si la idea es medir por ejemplo tamaos 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

Los computlogos nos esforzamos mucho en


buscar alternativas que produzcan resultados
visuales similares pero con menor cantidad de
pasos de cmputo

En este tipo de aplicaciones es importante disear los


filtros de tal forma que la caracterstica que se busca
medir cambie lo mnimo posible

Umbrales
Analizando la distribucin/varianza/otra estadstica 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 estn afuera
del rango que se considera relevante
Por ejemplo, oscuros a negro y claros a blanco
O simplemente excluirlos de anlisis 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

Deteccin de bordes
Captulo 4 del libro de texto
Determinar gradientes locales de intensidad dentro
de mscaras de convolucin adecuadas
Tcnicas dominantes
Acoplamiento a una plantilla (TM)
Gradiente diferencial (DG)

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

Semana 3

Fundamentos tericos

Mscaras tpicas de deteccin de bordes: DG

Se busca identificar cambios en las direcciones x & y


g = max(gi) donde i [1, n]

Roberts:

n es tpicamente 8 o 12 (sobre una mscara)


Mximo dentro de la vecindad (no incluye la direccin)
TM: g = (gx + gy)1/2

Sobel:

Alternativas computacionalmente ms livianas


g = |gx| + |gy|
g = max(|gx| + |gy|)
DG: = arctan(gy/gx)

Prewitt:

Vectorial

Mscaras tpicas de deteccin de bordes: TM


=0

Prewitt:

Kirsch:

Robinson 3-level:

Robinson 5-level:

2
4

2
4

1
1
1
3
3
3

1
2
1
3
0
3

1
1
1

0
0
0

1
2
1

0
0
0

= 45
3

1
1 5
1
3

5
5 5
5

3
1
1 5
1
3
1
2 5
1

2
4

2
4

1
1
1
3
3
3

1
2
1
5
0
3

1
1
1

1
2
1

0
1
2

1
0
1

4
4

1
1 5
1

5
5 5
3

3
1
1 5
1
3
2
1 5
0

0
1

1
0

1
2
1

0
0
0

1
1
1

0
0
0

Rx 0 =

Sx = 4

Px = 4

,
3
1
2 5,
1

3
1
1 5,
1

Ry 0 =

1
0

0
1

1
0
1

2
0
2

1
0
1

1
0
1

Sy = 4

Py = 4

3
1
0 5
1

3
1
0 5
1

Tarea 1: deteccin de bordes


Implementen en Python, usando numpy, una rutina que detecte los
bordes en una imgen 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 contnuos los
bordes (a inspeccin visual humana).
No se usa ninguna subrutina prehecha para visin (no anden
googleando), sino todo se hace apartir de operaciones matriciales
bsicas y aritmtica tal cual.
En el blog va el cdigo comentado y tres pares de imgenes (original
y procesada) de diferentes tamaos, junto con el tiempo de ejecucin
de su rutina para cada imgen de prueba, promediado sobre 30
repeticiones de la ejecucin.
Publicado antes de entrar a clase la semana siguiente.