3 de enero de 2011

PyrDown y Canny

En esta entrada voy a publicar dos codigos mas del libro de OpenCV, la primera usa la funcion PyrDown que reduce a la mitad el tamaño de la imagen usando un filtro que explican mas adelante en el libro por lo que no ahi que preocuparse si todavia no se entiende, al parecer este capitulo muestra una serie de cosas que se pueden hacer con OpenCV sin ahondar mucho en los metodos que estan detras de las funciones. La otra tranformacion es una funcion llamada Canny, la cual extrae los bordes de un imagen.

Resultado PyrDown:


Codigo PyrDown:


Mientras pasaba este codigo de C a Python me encontre con la instruccion assert. Primero que todo no sabia para que servia y segundo no sabia si esta instrucción existia en python. Despues de una rapida busqueda, entendi que la funcion assert sirve para evaluar una expresión, es decir, si la expresion que esta dentro del assert es verdadera no sigue ejecutando el codigo, y si la expresion resulta falsa entonces manda un mensaje de error. Basicamente es como una especie de if, sin embargo deje la instruccion para que el codigo sea lo mas parecido al original que se encuentra en el libro.

En realidad ese codigo es muy sencillo, simplemente hago una funcion llamada doPyrDown en la que se crea una imagen con la mitad del tamaño, luego llamo la funcion PyrDown, se la aplico a la imagen "entrada" y el resultado lo meto en la imagen que cree. Mientras hacia el codigo me pregunte porque crean una funcion para hacer el PyrDown en vez de hacerlo directamente con la función, luego me di cuenta que esto se hace por si se quiere realizar el PyrDown mas de una vez, solo se tiene que llamar la funcion, y no tenemos que hacer el mismo codigo muchas veces.


Resultado Canny:


Codigo Canny:



Este codigo es muy similar al anterior, simplemente creamos una funcion que contiene la instrucción Canny y se la aplicamos a una imagen. Como pueden ver esta funcion muestra los bordes de una imagen en escala de grises.

Como habia dicho antes, en este momento no es necesario entender muy bien para que sirven estas transformaciones, ya que mas adelante se van a ir explicando, lo que si es importante es entender a la perfeccion los codigos, porque sino se entienden estos que son sencillos va a ser mas dificil entender los codigos mas complejos.

Voy a dejar un ejemplo mas en el que le aplico el Canny a un video que obtengo de la camara web. Este ejemplo no esta en el libro pero quiero mostrar que estos filtros se pueden aplicar a cualquier imagen, hasta una sucesion de imagenes que es lo que es un video.

Resultado:


Codigo:

1 comentario: