Se le llama registro al proceso de trasformación entre varios conjuntos de datos que permiten "encajar" o superponer patrones similares. Quizá el proceso más conocido sea la creación automática de fotos panorámicas a partir de varias fotos independientes. En esta entrada haremos un ejemplo más sencillo. Observen estas dos fotografías de un mismo objeto (uno de mis libros favoritos) tomadas en ángulos diferentes:
Lo que haremos sera colocar la imagen de la izquierda con la misma orientación y escala que la imagen de la derecha. Tomaremos de referencia las características comunes entre ambas imágenes (el libro principalmente). ¿Cómo encontramos estos puntos? En 2004 David Lowe publicó un algoritmo llamado SIFT (Scale-Invariant Feature Transform) que permite encontrar puntos clave invariantes a las rotaciones y, en buena medida, a los cambios de iluminación. Los puntos clave con mejor correspondencia entre ambas imágenes se ven así:
Este algoritmo está patentado y no aparece en la instalación estándar de OpenCV. Deben seguir las instrucciones que puse en mi entrada anterior para poderlo utilizar. El código que escribí es una modificación para SIFT del código que pueden encontrar acá. Lo he reducido y comentado para mejor claridad:
La imagen final registrada es esta:
Mostrando entradas con la etiqueta OpenCV. Mostrar todas las entradas
Mostrando entradas con la etiqueta OpenCV. Mostrar todas las entradas
domingo, 22 de septiembre de 2019
sábado, 21 de septiembre de 2019
Instalar OpenCV-Python con SIFT y SURF habilitados
Quiero ahorrarles algunas horas y frustración con esto. Estas notas están hechas para Linux (uso Debian) pero posiblemente funcione también en Windows (no lo garantizo). Voy asumir que ya tienen instalado Anaconda... Primero tienen que crear un nuevo entorno virtual (esto es por seguridad y no dañar su entorno principal de Python por si algo malo ocurre). Para crear un nuevo entorno:
$ conda create --name mi_entorno_OpenCV -y
Pueden nombrar su entrono como quieran pero es buena idea ponerle un nombre que haga referencia a su modulo. Si trabajan con IA seguramente necesitarán un nuevo para Tensorflow. Ahora, si es la primera vez que crean un entorno virtual tendrán que configurar su terminal para permitir que conda administre los entornos virtuales:
$ conda init bash
Si no usan bash debe poner la shell que utilicen. Bien, una vez que hayan hecho esto pueden activar su entorno con:
$ conda activate mi_entorno_OpenCV
Notarán que habra cambiado la etiqueta antes del promp y deberá aparecer el nombre de su entorno. Deberán instalar ahora matplotlib (su nuevo entorno solo tendrá numpy y scipy [si no, deberán instalarlos también]):
$ conda install -c conda-forge matplotlib
Spyder tampoco estará instalado en su nuevo entorno así que deberan instalarlo también:
$ conda install -c anaconda spyder
Recomiendo leer Managing enviroments de la documentación de conda. Ahora si, para instalar una versión de OpenCV que permita utilizar los algoritmos SIFT y SURF deberán instalar específicamente esta:
$ pip install opencv-contrib-python==3.4.2.16
Listo. Terminada la instalación pueden hacer una prueba con los códigos de ejemplo de la documentación de OpenCV. Recuerden que deben mandar a llamar a Spyder desde la terminal con el entorno virtual que crearon para OpenCV. para salir del entorno utilicen:
$ conda deactivate
En la próxima entrada pondré un ejemplo utilizando el algoritmo SIFT.
$ conda create --name mi_entorno_OpenCV -y
Pueden nombrar su entrono como quieran pero es buena idea ponerle un nombre que haga referencia a su modulo. Si trabajan con IA seguramente necesitarán un nuevo para Tensorflow. Ahora, si es la primera vez que crean un entorno virtual tendrán que configurar su terminal para permitir que conda administre los entornos virtuales:
$ conda init bash
Si no usan bash debe poner la shell que utilicen. Bien, una vez que hayan hecho esto pueden activar su entorno con:
$ conda activate mi_entorno_OpenCV
Notarán que habra cambiado la etiqueta antes del promp y deberá aparecer el nombre de su entorno. Deberán instalar ahora matplotlib (su nuevo entorno solo tendrá numpy y scipy [si no, deberán instalarlos también]):
$ conda install -c conda-forge matplotlib
Spyder tampoco estará instalado en su nuevo entorno así que deberan instalarlo también:
$ conda install -c anaconda spyder
Recomiendo leer Managing enviroments de la documentación de conda. Ahora si, para instalar una versión de OpenCV que permita utilizar los algoritmos SIFT y SURF deberán instalar específicamente esta:
$ pip install opencv-contrib-python==3.4.2.16
Listo. Terminada la instalación pueden hacer una prueba con los códigos de ejemplo de la documentación de OpenCV. Recuerden que deben mandar a llamar a Spyder desde la terminal con el entorno virtual que crearon para OpenCV. para salir del entorno utilicen:
$ conda deactivate
En la próxima entrada pondré un ejemplo utilizando el algoritmo SIFT.
sábado, 20 de febrero de 2016
OpenCV en Python
Instalación de Anaconda en Linux:
Descargar instalador aquí y ejecutar con:
$ bash nombredelinstallador.sh
Instalación de OpenCV usando conda (en la terminal):
$ conda install opencv
Abrir Spyder:
$ spyder
Ejemplo. Cargar una imagen y mostrarla con matplotlib:
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('eco.jpg',0) #Cargar imagen
plt.imshow(img,cmap = 'gray') # Mostrar imagen
plt.xticks([]), plt.yticks([]) #Ocultar numeración en ejes
plt.title('Umberto Eco (1932-2016)')
Descargar instalador aquí y ejecutar con:
$ bash nombredelinstallador.sh
Instalación de OpenCV usando conda (en la terminal):
$ conda install opencv
Abrir Spyder:
$ spyder
Ejemplo. Cargar una imagen y mostrarla con matplotlib:
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('eco.jpg',0) #Cargar imagen
plt.imshow(img,cmap = 'gray') # Mostrar imagen
plt.xticks([]), plt.yticks([]) #Ocultar numeración en ejes
plt.title('Umberto Eco (1932-2016)')
Suscribirse a:
Entradas (Atom)



