¿Cómo se pueden desarrollar habilidades de procesamiento de imágenes y programación de visión por computadora?

Learning OpenCV de Gary Bradski (Learning OpenCV: Computer Vision con la biblioteca de OpenCV: Gary Bradski, Adrian Kaehler: 9780596516130: Amazon.com: Libros) es un buen libro para principiantes.

Personalmente, no creo que se necesiten habilidades de programación específicas para la visión por computadora y el procesamiento de imágenes. Intente aprender MATLAB (muy útil para crear prototipos de soluciones de visión por computadora antes de la implementación real). Además, obtener algunos conocimientos básicos de Python sería útil en algunos casos. Una vez que se sienta cómodo con la teoría, la implementación debería ser bastante sencilla.

Algunos blogs de visión por computadora que leo (basados ​​en ideas y teorías en lugar de programación):

  • Blog de Tombone: La filosofía del reconocimiento computacional de objetos, la comprensión de escenas, el aprendizaje automático y las reflexiones sobre el futuro de la visión por computadora por Tomasz Malisiewicz.
  • El blog Serious Computer Vision: ideas aleatorias y debates sobre Computer Vision.
  • Ceguera informática: el blog de investigación de Roman Shapovalov en la Universidad Estatal de Moscú.

Lea el material del curso que ETH Zurich tiene en línea, y si no tiene suficientes habilidades matemáticas, necesita repasarlas (especialmente álgebra lineal y geometría 2D / 3D / proyectiva / epipolar).

OpenCV está lejos de ser perfecto si desea hacer algo serio (lea: algo más que una aplicación que detecta un marcador plano y proyecta un modelo 3D prefabricado en él) o algo en dispositivos móviles, que tiene recursos muy limitados. Aunque aún puede usarlo si no desea reescribir cosas básicas como detectores de características o conversiones de imágenes.

Además, todo el mundo usa C ++ o Matlab, dependiendo de si está usando código abierto o código de los documentos (sí, sobre los documentos, tendrá que leer mucho), por lo que debe conocer al menos uno de ellos, si no ambos, y necesita comprender la complejidad y optimización del código porque estos son algoritmos que consumen muchos recursos.

Los libros famosos son “Geometría de vista múltiple en visión por computadora” de Hartley o “Algoritmos y aplicaciones de visión por computadora” de Szeliski (trabaja para Microsoft Research y ha escrito muchos buenos artículos).

No te olvides de revisar los cursos y trabajos de Marc Pollefeys, es una especie de dragón en este campo, profesor de ETH y también colabora con Google.

Si desea mostrar cosas en video, como en AR, también necesitará conocer la programación de gráficos, como OpenGL (el mejor lugar para comenzar) o Metal para iOS.

Dependiendo de la rama de visión por computadora que desee usar (SLAM, estéreo denso, etc.), tendrá que leer varios documentos, recuerde que este es un campo de investigación en la actualidad.

Por último, pero no menos importante, te recomiendo que tengas uno o más amigos que trabajen en el campo, para que puedas hacerles muchas preguntas, y no tendrás que molestar a los investigadores de todo el mundo por correo electrónico como lo hice yo (bueno, al menos Menos).

Se necesita mucha paciencia, pero lo lograrás 🙂

OpenCV es una gran oportunidad para desarrollar programas de procesamiento de imágenes y visión por computadora. Es de código abierto, lo que significa que es gratuito y tiene una gran comunidad de soporte; es realmente rápido, ya que es una biblioteca C / C +; es flexible porque tiene enlaces y envoltorios para muchos lenguajes distintos de C y C ++. El desarrollador de OpenCV debe poseer algunas habilidades muy importantes para ser un verdadero maestro. Uno de ellos es una buena comprensión de los algoritmos de aprendizaje automático, ya que el desarrollo de OpenCV usa muchos de ellos, por lo que será beneficioso para un desarrollador conocerlos.

Vería los videos de Joachim Horneggers disponibles en iTunes. Son gratuitos y cubren una amplia gama de temas. Además, compre y alquile tantos libros como pueda pagar. Se requiere álgebra lineal, y MATLAB u octava es una buena manera de aprender eso. Hay una variedad de libros para eso.

Debe ser competente con la noción de cálculo de matlab y matriz, ya que todos los prototipos están hechos. Después de la creación de prototipos, debe ser bueno en un lenguaje más de bajo nivel como C o python (desarrollo más rápido pero ejecución más lenta). Opencv es otra habilidad que necesitas dominar. Por supuesto, debe conocer los conceptos recientes de CV de antemano.

Para aprender todo, te sugiero que practiques en un proyecto de juguete con el que te puedas divertir.