cars segmentation

El software libre en el área de procesamiento digital de imágenes. Pequeña introducción a OpenCV.

people trackingLa primera pregunta que ustedes se harán que es el procesamiento digital de imágenes (PDI) y para que sirve, entonces tratare de dar la respuesta lo mas simple que pueda:

Según Wikipedia, el procesamiento digital de imágenes es el conjunto de técnicas que se aplican a las imágenes digitales con el objetivo de mejorar la calidad o facilitar la búsqueda de información.


OFFTOPIC: Antes de seguir quiero pedir disculpas a la comunidad pues hace un tiempo largo que no publico nada, ni siquiera comento los post, lo que paso es que han habido cambios grandes en mi vida, gracias a Dios todos para bien, a los cuales me he tenido que adaptar y por eso he estado ausente. Pero bueno ya estoy aquí, así que seguimos con el post.

Gracias a estas técnicas de PDI existen programas como Adobe Photoshop, Gimp, Sony Vega, Kedenlive, Kino, OpenShot, Adobe Premiere, Pinacle Studio y un largo etc y muchos se preguntaran, ¿Y que hacen los editores de vídeo ahí?, bueno la respuesta es simple, recuerden que el vídeo digital esta compuesto por un conjunto de imágenes que se muestran a muy alta velocidad lo cual nos da la sensación de que están en movimiento, pero al fin y al cabo son imágenes y estas se pueden editar.

En los programas anteriormente mencionados lo que hacemos es usar manualmente estas herramientas de PDI para fines generales, generalmente relacionados con el área artística (quitar granitos de la cara, eliminar ojos rojos, afinar la nariz) o social (editar vídeos familiares, de amigos).

Pero si queremos por ejemplo automatizar algún proceso entonces esos programa no nos servirían, por ejemplo:

  • Detectar movimiento en una sala con cámaras de vigilancia.
  • Guardar el número de matricula (chapa en cubano) de los carros que pasan por una avenida o una foto del carro.
  • Detectar si en cámara hay un rostro para guardar una foto.
  • Detectar un tumor en una mamografía.
  • Comprobación biométrica de iris, huellas dactilares, y muchas otras aplicaciones.
  • Detectar la dirección de la mirada para distintos fines, generalmente para el diagnóstico médico

 

Para poder hacer estas cosas y muchas otras más, tenemos que hacer programas de computadoras que utilicen las técnicas de PDI de manera que podamos automatizar estos procesos dándole a la PC cierta inteligencia para que haga el trabajo. Para hacer esto podemos usar cualquier lenguaje de programación para implementar estas técnicas de PDI pero tenemos que tener en cuenta que estos algoritmos consumen muchos recursos por lo que se recomienda que sean implementadas en lenguajes como C y C++ que dan muy buenos resultados.

Como en el mundo de la programación generalmente tenemos bibliotecas listas con muchas cosas implementadas, este tema no se queda atrás y existes varias librerías para estos fines, de todas a mi modo de ver la mas destacada es OpenCV.

logo OpenCVOpenCV una biblioteca de visión artificial (PDI es una rama de la visión artificial) originalmente desarrollada por Intel, con licencia BSD es multiplataforma, existiendo versiones para GNU/Linux, Mac OS X y Windows. Contiene más de 500 funciones que abarcan una gran gama de áreas en el proceso de visión, como reconocimiento de objetos (reconocimiento facial), calibración de cámaras, visión estérea y visión robótica, esta programada en C y C++ optimizados.

Este es un tema que estoy trabajando hace un tiempo y he querido compartirlo con ustedes, es un poco extenso así que voy a dividirlo en varios artículos. En esta primera parte me he extendido un poco en “la parte teórica” pero es necesario para en los próximos post saber de que va el tema.

En próximas publicaciones veremos OpenCV en detalles, como utilizarlo y como integrar Python con OpenCV y hasta les voy a comentar de un proyecto que quiero iniciar usando estas técnicas.

¿Te resultó interesante? Compártelo ...



bosito7

Publicado por bosito7

http://gutl.jovenclub.cu » Forma parte de GUTL desde el 19 diciembre, 2012. Soy un investigador apasionado de Machine Learning / Deep Learning. Me encanta aplicar Inteligencia Artificial en áreas que mejoran significativamente la calidad de vida del ser humano, como la salud y la agricultura. Amante de GNU/Linux y el Software Libre en general.

Este artículo tiene 5 comentarios

    • Se puede usar, tengo que buscar en la documentación a ver si existe alguna funcion que ya este lista, en python se que existen qrcode y qrtools que son librerias para este fin que usan PIL (python image library) que es otra libreria de procesamiento de imagenes en python de la cual pieso hablar mas adelante en otro post.

  1. men me interesa mucho sobre este tema ya que estoy trabajando en un proyecto en colaboracion con una clinica y es necesario trabajar con algoritmos de clasificacion de objetos para detectar el movimiento de los pacientes, usamos el kinect para realizar las capturas del paciente y hasta ahora las clasificaciones que hemos hecho han sido un poco rudimentarias (a mano) y tambien con una biblioteca para python llamada scikearn, que es muy buena pero no es lo que quiero, si puedes aborda mas sobre el tema que es de lo mas interesante, y sobre todo en python, thanks

    • Hola que bueno que hayas encontrado el tema interesante, mas adelante pienso hablar de como trabajar con el Kitnet y similares como el Xtion de ASUS, y detección de objetos usando OpenCV y tambien como hacer algunas cosas a mano, todo usando Python. Antes de que termine esta semana quiero hacer otro articulo de este tema. Salu2

      • Hola, se que este articulo es algo viejo, no obstante me puedes contactar , estoy en un proyecto creado por mi que trabajamos con OpenCV , vinculado a java, python, y principalmente a VisualStudio con c++.

Los comentarios están cerrados.