Software de cámara Sky con detección de movimiento y detección de cambio de color

Estoy buscando un software de cámara del cielo con detección de movimiento (para meteoritos y otros objetos). La cámara está conectada a la computadora (mediante un cable USB) y el software debe mirar la vista de la cámara y tener las siguientes características:

  • Detección de movimiento:
    • Cuando se detecta un movimiento, almacene un video que contenga el movimiento.
    • La cámara mira todo el cielo, por lo que el video almacenado solo debe mostrar el área que contiene el objeto en movimiento.
    • No debe ser demasiado sensible. A medida que la Tierra se mueve, las estrellas se mueven continuamente en el cielo y este movimiento no debe almacenarse.
  • Detección de colores cambiantes (para luz polar y similares):
    • Al igual que para la detección de movimiento, cuando detecta un cambio, debe almacenar un video cuando detecta un cambio de color y ese video solo debe mostrar el área que contiene el cambio de color.

Se prefiere el software gratuito, pero el software de hasta 100 USD está bien.

Respuestas (1)

Si bien no conozco personalmente ningún software especializado específico que satisfaga sus necesidades, creo que debería echar un vistazo a OpenCV y ver qué se le ocurre.

  • Gratis (tanto gratis como FLOSS)
  • Multiplataforma: Windows, Linux, Android y Mac OS
  • Múltiples lenguajes de programación (interfaces C++, C, Python, Java y MATLAB), para que pueda usar lo que le resulte cómodo o lo que pueda permitirse (NB, Python y Java son gratuitos, GNU tiene compiladores C++ y C gratuitos).
  • Algoritmos de detección de movimiento incorporados (incluida la posibilidad de establecer umbrales).
  • Clase VideoWriter para guardar tus resultados
  • Comunidad de usuarios activa (sospecho que incluye algunos astrónomos estudiantes/profesionales)

Ejemplo de detección de movimiento en OpenCV en python

Este ejemplo vino del blog de Matthias Stein .

import cv2

def diffImg(t0, t1, t2):
  d1 = cv2.absdiff(t2, t1)
  d2 = cv2.absdiff(t1, t0)
  return cv2.bitwise_and(d1, d2)

cam = cv2.VideoCapture(0)

winName = "Movement Indicator"
cv2.namedWindow(winName, cv2.CV_WINDOW_AUTOSIZE)

# Read three images first:
t_minus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)

while True:
  cv2.imshow( winName, diffImg(t_minus, t, t_plus) )

  # Read next image
  t_minus = t
  t = t_plus
  t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)

  key = cv2.waitKey(10)
  if key == 27:
    cv2.destroyWindow(winName)
    break

print "Goodbye"