Schätzen der Entfernung des realen Objekts vom Foto

7

Ich bin mir nicht sicher, ob dies möglich ist, aber es sollte sein.

Ich habe derzeit ein Foto einer Kugel, deren Radius ich physisch gemessen habe. Wenn Sie die scheinbare Größe der Kugel aus dem Foto und alle internen Kameraparameter kennen, können Sie den Abstand zwischen Kamera und Kugel abschätzen?

Es gibt eine Gleichung, die bei der Linsenbildgebung häufiger verwendet wird und nützlich ist:

object_image_size = (real_object_size * object_focal_length) / object distance

Das Problem ist, dass meine object_image_size in Pixel angegeben ist und ich sie in ein reales Maß konvertieren muss, vorzugsweise die Größe, die tatsächlich auf dem Sensor angezeigt wurde.

Kronephon
quelle

Antworten:

3

Ich kann falsch verstehen, was Sie fragen, aber wenn Sie die Sensorgröße und die Anzahl der Pixel im Objekt kennen, können Sie die Objektgröße berechnen. Eine Canon 7D verfügt beispielsweise über einen APS-C-Sensor mit 22,3 x 14,9 mm und 5184 x 3456 Pixel. Das entspricht ~ 0,0043 mm / Pixel. Wenn Sie also ein Objekt mit einer Breite von 250 Pixel haben, wäre die Projektion des Objekts auf den Sensor 250 Pixel * 0,0043 mm / Pixel = 1,075 mm breit gewesen.

EDIT: Also nur zum Spaß habe ich es versucht. Ich nahm ein 300-mm-Lineal, stellte es 1 Meter von der Kamera entfernt auf und schoss es mit einem 50-mm-Objektiv auf einer Canon 7D. Laut dem Lineal in Photoshop war es 3734 Pixel breit. Das gibt mir die folgende Gleichung:

3734 * 0,0043 = (300 * 50) / 1000

oder

16.0562 = 15.0

Nun, es ist nah, aber nicht genau. (Über 7%.) Ich vermute, dass die Größe der Sensorstelle tatsächlich etwas kleiner als 0,0043 mm oder die Sensorgröße etwas größer als die angegebene Größe ist. In der Tat sagen die Spezifikationen für die Kamera 18MP effektive Größe, aber 19MP tatsächliche Sensorgröße. Ich bin mir also nicht sicher, was das bedeutet, aber ich vermute, es erklärt den Unterschied zwischen meinem tatsächlichen Ergebnis und dem berechneten Ergebnis. (Entweder das, oder ich habe die Länge in Photoshop falsch verstanden und sie sollte eigentlich 3488 Pixel statt 3734 sein.) Aber es hat Spaß gemacht, es zu versuchen!

2. BEARBEITUNG: Diese Frage im Photo Stack Exchange erklärt dies. Kameraobjektive sind oft etwas länger oder kürzer als behauptet, aber auf die nächste schöne Brennweite gerundet. Also (vorausgesetzt meine Berechnungen und Messungen waren korrekt) ist mein Objektiv tatsächlich ein ~ 53,5 mm Objektiv.

user1118321
quelle
Schätzt das die Entfernung des realen Objekts?
Joojaa
Ich bin mir nicht sicher. Ich habe versucht, die Gleichung zu interpretieren, die Sie aufgestellt haben. Aber ich werde es mit einem Lineal versuchen, wenn ich heute Abend nach Hause komme und die Ergebnisse hier posten.
user1118321
Genau das wollte ich, ein Konvertierungssystem. Eine direkte von der Sensorgröße ist nicht gut genug, da Kameras normalerweise einen Teil des empfangenen Bildes zuschneiden. Zum Glück haben die meisten Kameras eine sogenannte Pixelgröße (normalerweise in Mikrometern), was genau das dafür erforderliche Konvertierungsmaß ist!
Kronephon
Die Brennweite wird auch von Ihrem Kamerafokus beeinflusst. Während der Aufnahme variiert die Brennweite geringfügig, da auf diese Weise der Fokus durch Bewegen der Elemente erreicht wird. Aus diesem Grund verwenden Sie viele Messungen und einen Ransac auf dem Bild, um die tatsächlichen Werte besser abzuschätzen. Ihr effektiver Wert unterscheidet sich also nicht nur von der Spezifikation, sondern unterscheidet sich auch in jeder Kamera und in jeder Aufnahme. Auch Ihre Herrscher Kamera nicht perfekt ausgerichtet werden, und die camera.lense nicht perfekt sein Pinhole usw.
joojaa
Möglicherweise können Sie mehrere Experimente mit Ihrem Lineal durchführen, um die Parameter Ihrer Kamera zu kalibrieren. Oder verwenden Sie einfach Stichproben, um Parameter direkt durch Regression zu schätzen.
TheBusyTypist
3

Ja, theoretisch für die Kugel nein für andere Dinge im Bild. Wenn es möglich ist, die Situation zu verbessern, ist es möglich, alles zu messen, was Sie viel zuverlässiger verfolgen können. Erstens ist es erforderlich, den Maßstab eines Objekts zu kennen, das Sie erfolgreich verfolgen können, um einen Maßstab für das Bild zu erhalten, da die Kameras alle Skalierungsinformationen verloren haben. Diese Anforderung allein reicht jedoch nicht aus.

In der Praxis kennen Sie die anderen Einstellungen einer Kamera nicht (es sei denn, Sie kalibrieren zuerst mit der Stereogeometrie). Bei der Verfolgung der realen Kamera treten alle möglichen Probleme auf. Zum Beispiel ist ein echtes Kameraobjektiv nicht ideal. Durch Verfolgen von mehr als 2 Funktionen in der Szene können Sie die tatsächlichen Brennweiten und Kameraverzerrungen automatisch abschätzen. Noch wichtiger ist, dass Sie eine Fehlerschätzung für Ihre Daten erhalten können.

Eine Möglichkeit besteht darin, zwei Fotos aus verschiedenen Winkeln in einer Szene mit ausreichender Tiefenvariation zu haben (für ein stationäres Objekt ist dies recht einfach). Sie können dann Stereo-Geometrie verwenden, um die Tiefe zu lösen, in der viele solcher Tracker-Apps als Teil von Spezialeffekt-Paketen existieren, und das Erstellen eigener Apps kommt nicht ganz in Frage (Fun-Link, grundlegender Matrix-Song ). Der zweite Weg besteht darin, eine bekannte Ebene zu haben. Die Ebene kann gelöst werden, indem 4 Punkte und ihre relativen Positionen bekannt sind. In der Realität ist es besser, mehr Punkte für Fehler- und Linsenkorrekturschätzungen zu verwenden. Eine dritte Möglichkeit besteht darin, strukturiertes Licht (z. B. eine Wolke aus Laserlichtpunkten oder eine Linie) zu verwenden, um die Punktabstände zu triangulieren. Oder Sie könnten eine Lichtfeldkamera verwenden.

joojaa
quelle