Heyho!
Ich habe ein Bild von einer flachen Oberfläche (von oben und mit einem Winkel von 30 °) und ich möchte die x & y-Koordinaten eines bestimmten Pixels, aber in cm (mit dem Koordinatensystem in der Oberfläche).
Gibt es eine Methode, dies zu archivieren?
Ich benutze Python aber jede Hilfe ist willkommen! :)Berechnung der x- und y-Koordinaten in cm von den Pixelkoordinaten
Edit: Ich versuchte die Homographie-Methode von unten, aber ich schaffte es nicht leise, es zum Funktionieren zu bringen. Sie ist das, was ich getan habe:
#two sets of points I used
#src: corners + center of my 400px*460px image
#dst: coordinate system being outside the image
src = np.matrix(((1, 1, 1),(400, 1, 1),(1, 460, 1),(400, 460, 1),(200,230,1)))
dst= np.matrix(((31.6, 7, 1),(14.5, 7, 1),(28.4, 26.3, 1),(17, 26.3, 1),(22.6,18.6,1)))
#src: random points from the image of my 400px*460px image
#dst: coordinate system being in the actual image
src = np.matrix(((1, 1, 1),(400, 460, 1),(200,1,1), (100, 170, 1), (280, 320, 1),(300, 50, 1)))
dst= np.matrix(((0, 0, 1),(14.6, 19.3, 1),(17.1/2,0,1), (5.0, 9.2, 1), (11.65, 15.3, 1), (12.9, 2.9, 1)))
H = cv2.findHomography(src,dst,0)[0]
print (H)
for c in range(0,5):
x= c*100
y = 1
print(x,y,np.dot(H,np.array((x,y,1))))
Actual Photo of the setup
Der Platz der Fläche sichtbar auf dem ist (400px * 460PX) Bild. Die Kamera befindet sich in der schwarzen Box rechts. Die X & Y sind meine Pixelkoordinaten.
Ergebnisse mit beiden Zahlensätzen sind gut, solange Sie auf der X-Achse bleiben. Sobald ich die Y-Achse hinunterfahre, gehen die Zahlen falsch.
Dies ist ein Geometrieproblem. Sie müssen zwei Dinge wissen - die Projektionsmatrix der Kamera (kalkulierbar durch die Messung des Gesichtsfeldes) und die Transformationsmatrix der Kamera (ihre Position relativ zur Tabelle). – Eric
Alternativ können Sie auch eine OpenCV-Kamera-Kalibrierungsroutine verwenden und sich den Aufwand für die Messung sparen – Eric
Die Informationen, die Sie in Ihrer Frage angeben, sind wirklich nicht genug, um Ihr Problem zu lösen. Wenn Sie nichts über die intrinsischen Parameter Ihrer Kamera wissen, gibt es keine Chance, die richtige Lösung zu finden. Denken Sie nur daran, dass Ihre flache Oberfläche entweder eine sehr kleine Oberfläche sein könnte, die von sehr nah betrachtet wird, oder eine sehr große, die von weit her gesehen wird. – Sunreef