detectar movimiento es muy fácil, seguir ese movimiento va a ser lo difícil.
Para detectar movimiento tan fácil como esto:
mover la cámara en la dirección que se desee. sabiendo que la cámara no esta en movimiento, tomas una imagen y obtienes todos sus pixeles. luego obtienes otra y la comparas pixel a pixel con la anterior, y das un rango de equivocación***, si sobrepasa ese rango es por que hay algo en movimiento, como eso se hace rápidamente en el pc, podrías tomar varias imágenes, así la que obtengas la comparas con la anterior. Osea si quieres tomar 4 por ejemplo seria algo asi:
anterior=obtener una imagen (1°)
actual=obtener otra imagen (2°)
compara(anterior, actual)
anterior=actual
actual = obtener otra imagen (3°)
compara(anterior, actual)
anterior=actual
actual= obtener otra imagen (4°)
compara(anterior, actual)
Después de eso mueves la cámara en otro angulo (le mandas las instrucciones al micro para que mueva la cámara) y haces lo mismo nuevamente, eso es muy fácil yo lo hice en java tiempo atrás y funciona muy bien, y eso que usaba la librería JMF que es muy lento y pesado en lo que es imagen (en realidad toda la librería).
De ahí es fácil detectar movimiento, seguirlo va a ser lo difícil, o quizás no tanto por que tendrías que ver que pixeles fueron los que sufrieron cambios y de ahí concluir que hacer, pero ya seria meterse bastante en la programación cosa innecesaria ya que existen soluciones mas fáciles para esto. Una de las librerías que existen y justamente en C, que es el lenguaje en el que quieres programar, es la openCV y la otra opción que conozco es MatLab que también posee buenas librerías para lo que es visión, pero esta ultima es de pago y por lo que dices para ti es mejor la OpenCV, yo personalmente no e trabajado con esta librería pero si e visto buenos trabajos que han realizado compañeros de estudio.
Te dejo unos videos sobre estas librerias y referido a lo que quieres.
OpenCV
MatLab
Saludos!!
*** con rango de equivocación me refiero a que aunque compares 2 imágenes tomadas muy rápidamente una de otra y sin que exista ningún movimiento, igual tendrás un error, que me parece que es del 10% mas o menos (si mal no recuerdo y que varia según la calidad de la imagen), cosa que puedes comprobarlo fácilmente haciendo una comparación y viendo el valor de equivocación que te dio, igual es bastante, pero yo pude llegar a detectar el movimiento de algo de 2 cm a unos 5 metros de distancia sin ningún problema. Así si te da un rango de equivocación sin movimiento de un 10% entonces le das un 20% de equivocación(solo como ejemplo) y si pasa ese 20, entonces existe movimiento.