Archivo

Entradas Etiquetadas ‘opencv’

Image processing with CUDA (Comparison with CPU, MMX, SSE & OpenCV)

Miércoles, 15 de agosto de 2012 Sin comentarios

CUDA Logo

En esta entrada se presenta un ejemplo de como realizar procesamiento de imágenes con CUDA, y se compara el rendimiento de una aplicación sencilla para invertir los colores de una imagen, implementada con las siguientes tecnologías y/o librerías:

  • Instrucciones aritméticas con CPU.
  • Librería OpenCV.
  • Instrucciones aritméticas usando tecnología SIMD (MMX y SSE).
  • CUDA C runtime.
  • NPP (Nvidia Performance Primitives). [librería proporcionada con el toolkit de CUDA]

Leer más…

GD Star Rating
loading...
Share
Categories: Programación Tags: , , , , , , , ,

OpenCV 2.X: Reading/Writing from/in markup languages (XML, YAML)

Viernes, 19 de agosto de 2011 Sin comentarios

La nueva interfaz de escritura y lectura en ficheros de lenguajes de marcas introducida en OpenCV desde la versión 2.0 nos permite muchas posibilidades. En este post explico como trabajar con la nueva clase FileStorage de OpenCV con dos sencillos ejemplos. Leer más…

GD Star Rating
loading...
Share

Review of OpenCV 2 Computer Vision Application Programming Cookbook

Miércoles, 29 de junio de 2011 1 comentario

Acabo de terminar de leerme el libro “OpenCV 2 Computer Vision Application Programming Cookbook” y quería compartir con todos un análisis personal del mismo. Leer más…

GD Star Rating
loading...
Share

OpenCV 2 Book

Domingo, 12 de junio de 2011 Sin comentarios

Hola! Me estoy leyendo el nuevo libro de OpenCV 2 publicado por Packt Publishing titulado OpenCV 2 Computer Vision Application Programming Cookbook. Podéis descargaros un capítulo de muestra muy interesante relacionado con la transformación de imágenes con operaciones morfológicas a través de este enlace. Una de las características más interesantes de este libro es que a lo largo del documento este usa la nueva interfaz de C++ introducida en la versión 2.0 de OpenCV. En algunos días/semanas escribiré una revisión del libro en este blog ;) .

Hi! I am reading the new OpenCV 2 book published by Packt Publishing titled OpenCV 2 Computer Vision Application Programming Cookbook. You can download a very interesting sample chapter of this book related with image transformations with morphological operations from this link. One of the more interesting feature of this book is that through the entire document it uses the new C++ interface introduced in the version 2.0 of OpenCV.  In few days/weeks I will write a review of the book in this blog ;) .

 

GD Star Rating
loading...
Share

Paralelismo: ¿OpenMP o Intel TBB?

Lunes, 6 de diciembre de 2010 Sin comentarios

Desde hace cosa de un año siempre que puedo paralelizar alguno de los programas que escribo lo hago de forma sencilla con OpenMP. OpenMP es un estándar que en la actualidad implementan la mayoría de compiladores (gcc, vc, etc.), mediante el cual podemos paralelizar fácilmente un bucle introduciendo ¡una línea de código!. Entonces, ¿a que viene este post? ¿por qué dudo entre un estándar o la librería de intel TBB que aunque tenga una versión abierta no es un estándar?. Este dilema se me planteó en el momento que vi que la gente que desarrolla las OpenCV han decidido cambiar el uso de OpenMP por las Intel TBB, aunque tenía mis dudas de porque había sucedido esto … ya que en sus orígenes las OpenCV fueron escritas por gente de Intel.

Pues bien, la misma gente de Intel en una Wiki de las TBB advierten que no tiene porque el uso de una librería sustituir a la otra, y que pueden ser perfectamente complementarias. Podemos usar TBB en una parte de la aplicación mientras usamos OpenMP en otra. Las OpenMP son fáciles de usar, son un estándar , están soportadas por la mayoría de compiladores y explotan bien el paralelismo. Sin embargo están muy orientadas a bucles o no están dirigidas para el paralelismo a nivel de algoritmos o estructuras de datos. Cuando OpenMP se ajuste bien a nuestro código deberíamos usarlo sin más.

Por otra parte hay que fijarse en el entorno de desarrollo. Si el código está escrito en C++, es probable que TBB se ajuste mejor. TBB encaja especialmente en el código que está altamente orientado a objetos, y hace un uso extenso de plantillas y tipos de datos definidos. Si el código está escrito en C o FORTRAN, OpenMP puede que sea una mejor solución que TBB por su estilo de codificación estructurado. TBB y los hilos nativos no requieren de un soporte específico por parte del compilador mientras que OpenMP si, por lo que OpenMP requiere que compiles con un compilador que reconozca los #pragmas de OpenMP.

Conclusión personal

Si llevas mucho tiempo usando OpenMP, lo estás usando en tus librerías y/o programas  y ya tienes cierto dominio de sus directivas y funcionamiento no tienes porque cambiar a TBB. Sin embargo, si estás empezando a introducir paralelismo en tu código, y este está altamente orientado a objetos sería recomendable empezar a usar directamente TBB. Estoy convencido que aprendiendo a usar TBB no habrá mucho problema en después usar OpenMP, ya que en principio es bastante más sencillo de usar.

Más información aquí (aunque en inglés).

Read the Intel Wiki.

GD Star Rating
loading...
Share