Grundidee:
Wir nehmen vereinfachend an, dass die Ebene $B$ unverzerrt von der Webcam abgebildet wird (bis auf Drehung und Streckung). Das stimmt ziemlich gut, wenn die Kamera horizontal gerade aus schaut (d.h. nicht nach oben oder unten). Und die Kameralinse sollte verzerrungsfrei abbilden, was an den Bildrändern wohl eher nicht stimmt.
Gegebene Grössen: Räumlicher Punkt $K$, Bildkoordinaten von $O$, $S$ und $L_0$ (Bildkoordinaten der LED).
Gesuchte Grössen: Räumlicher Punkt $L$ auf der Ebene $B$. Damit ist die Parameterdarstellung der Geraden, auf der die LED liegt $\vec{OK}+t \cdot \vec{KL}$.
Umsetzung in Python: https://github.com/techlabksbg/xmastree/blob/main/other/spatial-recognition/main.py
Gegebene Grössen: Punkte $K_1$, $L_1$ und $K_2$, $L_2$.
Gesuchte Grössen: Punkt $P$, der am nächsten bei $K_1L_1$ und $K_2L_2$ liegt.
Umsetzung in Python: https://github.com/techlabksbg/xmastree/blob/main/other/spatial-recognition/compute.py
Gegebene Grössen: Raumkoordinaten $P$ einer LED, Zeit $t$ in Sekunden.
Gesuchte Grössen: Farbe von $P$ (in RGB oder HSV).