Empezar con:
(1) Señales y sistemas (2a edición): Alan V. Oppenheim, Alan S. Willsky, con S. Hamid: 9780138147570: Amazon.com: Libros
y entonces:
(2) Procesamiento de señal e imagen bidimensional: Jae S. Lim: 9780139353222: Amazon.com: Libros
y entonces:
(3) Robot Vision (Ingeniería Eléctrica y Ciencias de la Computación del MIT): Berthold KP Horn: 9780262081597: Amazon.com: Libros
y luego cualquiera de estos:
Visión por computadora: un enfoque moderno (2a edición): David A. Forsyth, Jean Ponce: 9780136085928: Amazon.com: Libros
Visión por computadora: algoritmos y aplicaciones (textos en ciencias de la computación): Richard Szeliski: 9781848829343: Amazon.com: Libros
(o el kazillion otros libros que son más o menos lo mismo)
Y para lectura opcional:
(4) Vision Science: Photons to Phenomenology: 9780262161831: Medicine & Health Science Books @ Amazon.com
(5) Visión: una investigación computacional en la representación humana y el procesamiento de la información visual, David Marr, Tomaso A. Poggio, Shimon Ullman, eBook – Amazon.com
(y otros libros sobre temas como aprendizaje profundo, coincidencia de patrones, etc.)
Y por favor, haga esto último (o en paralelo), pero no solo haga esto:
Amazon.com: Aprendizaje de OpenCV: Visión por computadora con la biblioteca de OpenCV (9780596516130): Gary Bradski, Adrian Kaehler: Libros
Ahora que estás completamente aburrido. Escúchame.
Este es más o menos el camino de la ingeniería eléctrica y la ciencia de la visión hacia la visión por computadora. Un estudiante universitario que quiere aprender visión por computadora generalmente tomaría clases en esta línea. Estas cosas consisten básicamente en 5 cosas principales:
– teoría de procesamiento de señales e imágenes
– visión por computadora basada en la física (enfoques del primer principio)
– visión por computadora convencional (cómo hackear algoritmos juntos)
– percepción y visión biológica (ciencia de la visión)
– trabajo de laboratorio (opencv; cómo hackear código juntos)
Y la razón es porque para comprender realmente y poder construir algoritmos novedosos, debe comprender la teoría subyacente y el trabajo que se ha realizado antes.
Por ejemplo, este artículo
Modelos de energía espacio-temporal para la percepción del movimiento.
propone algo como esto (lo he modificado un poco para simplificar las cosas):
[matemáticas] h_1 (x, y, t) = sin ((u \ cdot x + v \ cdot y) \ cdot f_s + t \ cdot f_t + \ phi) [/ math]
[matemáticas] h_2 (x, y, t) = sin ((u \ cdot x + v \ cdot y) \ cdot f_s + t \ cdot f_t + \ frac {\ pi} {2} + \ phi) [/ math ]
[matemáticas] y (t) = [(i \ otimes h_1) (t)] ^ 2 + [(i \ otimes h_2) (t)] ^ 2 [/ matemáticas]
para entrada de video [matemática] i (x, y, t) [/ matemática] vector de unidad [matemática] (u, v) [/ matemática]. [math] y (t) [/ math] es el movimiento global extraído en la dirección de [math] (u, v) [/ math] a frecuencias temporales y espaciales [math] f_t [/ math] y [math] f_s [/ matemáticas], respectivamente.
Y podemos modificar nuestra h para obtener:
[matemáticas] g_j (x, y, t) = h_j (x, y, t) \ cdot n (\ mu, u, v, \ sigma_1, \ sigma_2) [/ matemáticas]
donde n (.) es gaussiano 2D.
Y voilá. Tenemos núcleos representativos para la primera capa de una red neuronal convolucional de procesamiento de video después del entrenamiento.
Ahora, ¿cómo podemos conciliar lo que acabamos de discutir con esto:
Método de Horn-Schunck
Eso es para que lo descubras después de leer esos libros. Solo quería ilustrar 1 línea de pensamiento en visión por computadora desde el modelo de energía muy simple desarrollado en los años 80 hasta la red neuronal convolucional muy caliente de la que todos hablan ahora. Todo esto comienza con:
Teorema de representación de Riesz
que es la afirmación matemática que dice que cada sistema lineal (en la práctica) puede representarse de manera única por:
[matemáticas] y (t) = (x \ otimes h) (t) = \ int x (\ tau) h (\ tau – t) d \ tau [/ matemáticas]
(1), (2), (3), (4) y (5) le darían todo lo que necesita para obtener justo después del teorema de representación para la detección de movimiento. Construir sobre eso al aprendizaje profundo es trivial.
Y ahora podemos implementar todo esto en OpenCV, pero no comience con OpenCV.
Y puede elegir casi cualquier otro tema en visión por computadora (con la excepción de quizás un puñado de métodos basados en gráficos y niveles):
– estereopsis
– coincidencia de formas
– detección de bordes
– HoG, detección de rostros, etc.
– y muchos otros
Casi toca la mayoría de las teorías en los libros.
Mi pensamiento personal es que la visión por computadora es una combinación de matemáticas (análisis real + funcional), física, procesamiento de señales, ciencias de la visión, ciencias de la computación e ingeniería de software. Dejar cualquiera de las piezas es privarte de algo muy profundo 🙂
Seamos realistas, cualquier estudiante de secundaria puede hacer esto:
src = imread (“mi-archivo-imagen.png”);
kernel = Mat :: ones (5,5, CV_32F) / (float) (5 * 5);
filter2D (src, dst, -1, kernel, Point (-1, -1), 0, BORDER_DEFAULT);
imshow (“mi imagen borrosa”, dst);
¿Dónde está la diversión en eso …