2009-04-14 26 views
41

Solo estoy aprendiendo sobre visión artificial y C#. Parece que dos importantes bibliotecas de procesamiento de imágenes son OpenCV y AForge. ¿Cuáles son algunas de las diferencias de los dos?Diferencias entre AForge y OpenCV

Estoy haciendo un editor de imágenes básico en C# y mientras investigaba encontré artículos sobre ambos. Pero realmente no sé por qué elegiría uno sobre el otro. Me gustaría mejorar la aplicación para incluir funciones más avanzadas.

Gracias.

Respuesta

14

Estoy usando OpenCV para un proyecto en la escuela en este momento, y busqué la documentación de AForge y sus características parecen diferir. AForge tiene muchos filtros y es probablemente excelente para diferentes transformaciones y manipulación de imágenes. Pero parece carecer un poco en otras áreas. No pude encontrar ninguna operación de la matriz que fue una decepción, ya que es muy útil en la visión por computadora. Nuestro proyecto actual (reconstrucción de nubes de puntos tridimensionales a partir de una secuencia de imágenes) sería, por lo que pude ver en los documentos, algo imposible de hacer solo con AForge.

Combina AForge con una buena biblioteca de álgebra lineal y es posible que tengas algo realmente útil.

En cuanto a OpenCV, tiene un amplio conjunto de características pero es un poco difícil de programar.

3

Si desea mejorar su aplicación con funciones más y más avanzadas como las que dijo, yo iría por OpenCV, sin embargo, una parte de su éxito depende del hecho de que el puerto C# se actualiza activamente, lo que no debería No será muy difícil considerar los tres puertos. Creo que EmguCV parece ser uno de los mejores en este momento en términos de actualización, pero cuando lo miré, carece de documentación (pero probablemente puedas traducir el código de C++ a C# con algún conocimiento de C++). AForge parece mucho más fácil para mí y eso es lo que estoy usando en este momento. OpenCV también tiene soporte para archivos haarcascade.xml que puede usar que incluyen detección de rostros.

Por lo tanto, para la toma final: los dos le irán bien, OpenCV es más utilizado/compatible (aunque la mayoría de los usuarios usan C++), AForge es más fácil. Todo se reduce a lo que quieres hacer.

+3

[Acuerdo] (http://accord-net.origo.ethz.ch/), se extiende un marco AForge, es compatible con los archivos en cascada de XML Haar. Llena muchos vacíos en AForge, por lo que es una buena idea usar ambos. – smola

+1

@smmv: Accord parece haberse movido a la siguiente dirección: http://code.google.com/p/accord/ – Sabuncu

40

Bueno, ¿por qué no usar ambos;) ??

estoy usando (literalmente en C# ... lol) EMGUCV.NET (que es un OpenCV C# envoltorio) y AFORGE.NET al mismo tiempo:

AFORGE.NET más su "Procesamiento de laboratorio de imagen" tiene mucho sentido para las opciones de filtrado (detección de bordes, umbrales, etc.) y para facilitar la visualización de las funcionalidades.

OpenCV proporciona todo el resto como SIFT/SURF y otras rutinas de procesamiento de imágenes más sofisticadas.

Es por eso que utiliza .NET: basta con llevar todos los componentes que necesita juntas en una sola aplicación :)