2016-07-12 15 views
1

Beispiel Target:
enter image description here
Quelle: zone.ni.comein relatives Gitters von Punkten von den absoluten Punkten in einem Bild

Aus einem Kalibrierungsziel wie das Bild oben, ich habe die Mitte jeder gefunden Kreis auf das Ziel. Ich habe die Mittelpunktskoordinaten jedes Kreismittelpunkts (Bsp. (583, 120)). Jetzt muss ich ein Gitter aus diesen Kreiszentren erstellen. So wäre der erste Kreismittelpunkt (0,0) und der Kreismittelpunkt rechts von dem ersten wäre (0,1) < - (row, col-Format für Python) und der Kreismittelpunkt unter dem ersten wäre sein (1,0). Das Problem dabei ist, dass das Kalibrierungsziel in jeder Richtung und in jedem Winkel geneigt sein kann, so dass die Mitte der Kreise nicht in den gleichen Reihen oder in den gleichen Spalten in den Bildern sein wird (z. B. kann der mittlere Kreis 1 sein (100,150) und Mittelkreis 2, obwohl direkt daneben (115, 200), so sind sie nicht in der gleichen Zeile im Bild). Das tatsächliche Kalibrierungsziel weist die Kreise auf, die gleich weit voneinander beabstandet sind, aber aufgrund des Winkels des Kalibrierungsziels relativ zu dem Sensor erscheinen sie nicht gleichmäßig beabstandet in dem Bild. Ich schreibe diesen Code in Python. Wenn jemand eine Idee darüber hat, wie man das macht (nicht auf der Suche nach jemandem, der Code schreibt, sende mir einfach die richtige Richtung), lass es mich wissen.

EDIT: Ich bin nicht auf der Suche nach einer affinen Transformation. Ich versuche, die Punktkorrespondenzen der Punkte im Bild zum Ziel in der realen Welt zu finden.

+0

Wenn Sie suchen Neigung in Bezug auf die korrigieren Kamera, Sie suchen nach der affinen Transformation ... – Aaron

+0

Ich bin auch ein großer Fan von Fourier-Transformationen, um regelmäßige Anordnungen von Objekten im Raum zu finden ... – Aaron

Antwort

1

verwenden Sie openCV? In jedem Fall ist das Thema, das Sie vielleicht untersuchen möchten, Affine Transforms Obwohl der Link Python OpenCv spezifisch ist, ist das Thema selbst nicht.

Sie können die Transformation mit nur 4 Punkten abschließen. Diese Punkte können durch Erfassen eines rechteckigen Begrenzungsrahmen erhalten werden, hier ist eine andere ähnliche SO OpenCV C++/Obj-C: Detecting a sheet of paper/Square Detection Frage seine in C++, aber wieder die Ideen sind ähnlich

hoffe, das hilft