Calibración de 4 puntos (homografía manual)¶
Procedimiento mínimo para alinear cámara↔proyector sobre una superficie plana: capturar 4 correspondencias entre puntos proyectados conocidos y su posición vista por la cámara, y calcular una homografía con
cv2.findHomography. Es el método que usa el holomat y el camino más rápido a una mesa SAR funcional (Fase 2 del roadmap mvp manualidades).
Contexto¶
Resuelve, para el caso plano, la calibracion camara proyector sin el aparato completo de gray code. Documenta paso a paso lo que el código real del Holomat hace, para que sea reproducible.
Contenido¶
Idea¶
Una homografía 3×3 basta para mapear dos planos. Si la superficie de trabajo es plana, 4 correspondencias (mínimo) entre el plano del proyector y el plano de la cámara definen el mapeo completo.
Procedimiento (estilo Holomat)¶
- Proyectar 4 target points en coordenadas de proyector conocidas, p.ej. cerca de las esquinas del área útil. La pantalla del Holomat es 1920×1200.
- Capturar la posición vista por la cámara de cada punto. El Holomat lo hace con el dedo: el usuario apoya el índice sobre cada punto proyectado y se registra el landmark 8 de mediapipe en píxeles de cámara, confirmando con Enter. (Alternativa más precisa: detectar automáticamente un marcador/cruz proyectado en la imagen de la cámara, sin dedo.)
- Calcular la homografía:
donde
calibration_points_npson las posiciones en cámara ytarget_points_nplas de proyector. - Usar en runtime: transformar cualquier punto de cámara a coordenadas de proyector:
Qué da y qué NO da¶
- Da: dibujar en el proyector sobre un punto que la cámara ve (UI, resaltar un objeto, líneas ancladas a la mesa).
- NO da por sí sola: medición en mm reales. La homografía cámara→proyector no conoce la escala física. Para medir hace falta además fijar escala con referencia A4 o ArUco, y conviene quitar la distorsión del lente antes.
- Precisión: limitada por la repetibilidad de la captura (con el dedo + MediaPipe hay ruido de varios px). Usar marcadores proyectados detectados automáticamente, o más de 4 puntos (findHomography con RANSAC), mejora el ajuste.
Mejoras recomendadas sobre el método Holomat¶
- Capturar >4 puntos (grilla 3×3) y dejar que
findHomographyuse RANSAC → menos sensible a un click malo. - Undistort la imagen de cámara primero (calibracion intrinseca camara) para que la homografía no tenga que absorber la distorsión del lente.
- Detección automática del punto proyectado (centroide de un blob brillante) en vez del dedo → repetibilidad sub-pixel.
Relaciones¶
- Caso simple de: calibracion camara proyector
- Usa: registro geometrico homografia, opencv, mediapipe (en el Holomat)
- Implementado por: holomat
- Complementar con: medicion por vision referencia escala (para escala métrica)
- Paso del: roadmap mvp manualidades (Fase 2)
Citas / evidencia¶
M, _ = cv2.findHomography(calibration_points_np, target_points_np)—hand_calibartion.py, holomattransformed_coords = cv2.perspectiveTransform(np.array([landmark_coords]), self.M)[0]—camera_manager.py, holomat
Abierto / gaps¶
- Medir la precisión de la homografía con captura por dedo vs. detección automática de marcador proyectado.