Wie können wir angesichts der Größe eines bekannten Objekts im Bild die Größe anderer Objekte im selben Bild berechnen?

Die Frage betrachtet ein sehr spezifisches Szenario, in dem wir ein Bild mit, sagen wir, zwei rechteckigen Objekten haben. Wir kennen Breite und Höhe eines Objekts. Wie können wir die Abmessungen des anderen Objekts berechnen?

Nehmen wir an, dass die der Kamera entsprechende Ebene (dh die Ausrichtung, in der das Bild angeklickt wird) nicht parallel zur Oberfläche der Bildobjekte ist.

Idealerweise plane ich so etwas zu bauen: https://www.youtube.com/watch?v=jmoPCN2NM78

Ich habe eine Intuition, trigonometrische Formeln zu verwenden, um die Projektion des Bildes auf die Oberfläche parallel zur Kamera zu berechnen. Aber ich konnte zu keiner konkreten und überzeugenden Schlussfolgerung kommen.

Jede Art von Hilfe bei der Bereitstellung der Formeln, Forschungsarbeiten oder detaillierte Informationen darüber, wie ich dies erreichen kann, wird von Herzen geschätzt.

Wird mehr als ein Foto gemacht (aus verschiedenen Positionen, damit man Photogrammetrie machen kann)? Bekommst du Reichweiteninformationen? Verwenden Sie strukturierte 3D-Beleuchtung ? Sie müssen einiges mehr darüber sagen, welche Daten Sie genau nehmen, weil Sie irgendwie Reichweiteninformationen ableiten müssen, damit diese Art von Idee funktioniert.
Okay. Also werde ich nur ein Foto haben, nicht mehr als eins. Ich habe wahrscheinlich keine Daten als solche, da es sich um den gleichen Fall handelt, als würde man beispielsweise ein Foto von einem Mobiltelefon machen. Und ich verwende keine strukturierte 3D-Beleuchtung. Ich mache mir nur Sorgen um zwei Dimensionen (Höhe und Breite). Ich habe auch keine kugelförmigen Objekte. Ich denke, der von mir bereitgestellte Link kann Ihnen helfen, die Problemstellung besser zu verstehen.
Sie wollen das Gegenteil dessen, was Künstler tun, wenn sie korrekte Proportionen wollen eprints.fortlewis.edu/27/1/…

Antworten (1)

Diese Art von Problemen sind in der Computergrafik sehr häufig. Was ich erklären werde, funktioniert nur, wenn die zu messende Entfernung und Ihr Referenzobjekt auf derselben Ebene liegen (z. B. ein Blatt Papier auf dem zu messenden Tisch).
Wenn Sie wüssten, wie diese Ebene im Bild liegt, also wie die Punkte der Ebene auf Punkte im Bild abgebildet werden, dann wäre es einfach. Glücklicherweise hat diese Aufgabe hier bereits eine gute Antwort ! Wenden wir dies auf die Messung des Abstands zweier Punkte im Bild an. Nehmen Sie als Beispiel diesen Screenshot aus Ihrem Video:

Der Tisch

Die Ecken des Blattes Papier sind P 1 = ( 496 , 255 ) , P 2 = ( 607 , 224 ) , P 3 = ( 508 , 171 ) , Und P 4 = ( 405 , 194 ) und die Ecken des Tisches sind Q 1 = ( 7 , 244 ) , Q 2 = ( 654 , 389 ) , Q 3 = ( 860 , 47 ) , Und Q 4 = ( 511 , 23 ) (alles in Pixel). Die Ecken eines DIN A3 Papiers sind e 1 = ( 0 , 0 ) , e 2 = ( 0,3 , 0 ) , e 3 = ( 0,3 , 0,42 ) , Und e 4 = ( 0 , 0,42 ) (alles in m).
Konstruieren Sie nun die Transformationsmatrizen gemäß der Referenz . Für uns ist das „Zielbild“ das Blatt Papier und das „Quellbild“ das vorgegebene der Tabelle. Die Transformationsmatrizen sind:

A = ( 400.027 530.049 377.977 134.686 172.899 212.787 0,806505 0,873228 0,933278 ) ,
B = ( 0. 0,3 0. 0. 0. 0,42 1. 1. 1. ) ,
Und  C = B A 1 = ( 0,00218481 0,00325931 1,62797 0,00145442 0,00520777 0,148304 0.0000581739 0,00284785 1.74436 ) .
Die Matrix C transformiert von Pixelkoordinaten in "Blattpapier"-Koordinaten. Beachten Sie, dass wir homogene Koordinaten verwenden . Um die Tischecken in Blattkoordinaten umzuwandeln, wenden wir zuerst an C : C ( Q 1 , 1 ) = ( 1.03252 , 0,768499 , 1.23704 ) , C ( Q 2 , 1 ) = ( 0,0915473 , 0,927641 , 1.61234 ) , C ( Q 3 , 1 ) = ( 1.47321 , 0,553807 , 0,62639 ) , Und C ( Q 4 , 1 ) = ( 0,788933 , 1.18639 , 0,578344 ) . Und dann führen Sie die Dehomogenisierung durch, um zu erhalten Q 1 = ( 0,834672 , 0,621241 ) , Q 2 = ( 0,0567792 , 0,575339 ) , Q 3 = ( 2.35191 , 0,884125 ) , Und Q 4 = ( 1.36412 , 2.05135 ) . Daraus können wir direkt die Entfernungen (in m) errechnen und finden D ( Q 1 , Q 2 ) = 1.43 (sollte sein 1.53 ), D ( Q 2 , Q 3 ) = 2.82 (sollte sein 2.73 ), D ( Q 3 , Q 4 ) = 1.53 (sollte sein 1.53 ), Und D ( Q 4 , Q 1 ) = 2.62 (sollte sein 2.73 ). Diese Werte sind nicht perfekt. Mögliche Gründe sind, dass ich die Punkte im Bild nicht genau genug ausgewählt habe. Aber wie schon im Video erwähnt, ist es entscheidend, dass Sie die Referenzpunkte so genau wie möglich wählen. Wenn Sie mit diesen Werten herumspielen, zeigt sich, dass sie einen großen Einfluss auf das Endergebnis haben. Auch diese Methode berücksichtigt keine Linsenverzerrung.