Afgelopen jaar ben ik begonnen om, met behulp van een camera, een 3d model van de verlichting in mijn kerstboom te maken. De lampjes in de kerstboom zijn per stuk aanstuurbaar en ik wil graag een model hebben, waarvan voor elk lampje een x, y, z coördinaat bekend is. De image processing heb ik vrij ver klaar. De algoritmes die ik daarvoor bedacht heb staat op https://gathering.tweakers.net/forum/li ... es/2153702
Het resultaat van de image processing ziet er als volgt uit :
In het centrum van de boom loopt een blauwe lijn
Y = m * X + c.
m en c zijn met een least-squares fit bepaald en lijkt vrij aardig door het centrum van de boom te lopen.
Bovenstaande afbeeldingen zijn met dezelfde camera gemaakt, waarbij de camera met een onbekende hoek om de boom geroteerd is. Te zien is dat een flink aantal leds in beide afbeeldingen aanwezig zijn. Leds hebben allemaal een uniek Id en in beide afbeelding is dit hetzelfde. M.A.W, led 60 in afbeelding A is ook led 60 in afbeelding B
Aanwezig is de volgende informatie:
In elke afbeelding:
- De center lijn. Voor deze geld X = 0, Y = 0
- Voor elke led positie I, J in de afbeelding.
In de afbeeldingen zijn positie I, J van de led geen coördinaten, maak representeren deze hoeken. Een camera heeft een lens en de lichtstralen die op het middelste pixel vallen komen recht van voren. Hoe verder een pixel naar buiten zit, hoe groter de hoek van de lichtstraal.
Vraag : Hoe kan van elke led de X, Y, Z coördinaat bepaald worden?
Ik wil graag voor elke led die in beide afbeeldingen zit een (x, y, z) coördinaat bepalen.
Voor beide camera's een x, y, z coördinaat voor de positie van de camera.
Omdat het assenstelsel in principe niet gedefinieerd is, kan alles relatief van elkaar bepaald worden.
- Het centrum van de boom loopt door (0, 0, 0)
- Een camera mag vrij gekozen worden (1, 0, 0)
Dit zou het stelsel fixed maken, waarin alle coördinaten bepaald moeten zijn.
Graag zou ik hulp hebben hoe nu verder. Kwa oplossing hoop ik op een matrix uit te komen, welke met een least sqaures of ander algoritme op kan lossing.
Leds hebben allemaal een eigen positie Lx
Voor elke led X kunnen 2 lijnen gedefinieerd worden:
C1 -> Lx
C2 -> Lx
Voor lijn C1 -> L1 en C1 -> L2 is de hoek die deze lijnen in punt C1 maken bekend. Dit is L1(I, J) - L2(I, J)
Per toegevoegde led aan de matrix komen er 3 onbekende bij Lx(x, y, z), maar elke lijn heeft 2 snijpunten, wat zou betekenen dat er 4 vergelijking op te stellen zijn. Bij meer vergelijkingen dan onbekende is dit probleem oplosbaar.