Skalieren von AR-Bildern basierend auf der Entfernung von der Kamera

Ich entwickle micheine Augmented Reality iPhone App.

Grundsätzlich sollten Bilder angezeigt werden, die geografischen Standorten zugeordnet sind, wenn Sie sie mit der Kamera betrachten. Jedes derartige Bild kann als eine Werbetafel verstanden werden, deren geografische Position und Überschrift (verstanden als ein Winkel zwischen ihrer Ebene und der Nordrichtungsachse) ist.

Ziel ist es, diese Werbetafeln mehr oder weniger als physische Objekte darzustellen. Sie sollten größer sein, wenn Sie sich in ihrer Nähe befinden, und kleiner, wenn Sie weiter entfernt sind. Sie sollten auch in der richtigen Perspektive angezeigt werden, wenn Sie nicht direkt vor ihnen stehen.

Ich denke, ich habe dieses Ziel mehr oder weniger erreicht.Indem ich den anfänglichen Kurs vom iPhone zu einem Bild messe, kann ich über den Drehwinkel der Bilder entscheiden, wie sie von der Kamera betrachtet werden (um sie in einer richtigen Perspektive zu sehen).

Wenn es jedoch darum geht, sie basierend auf der Entfernung zum Telefon zu skalieren, habe ich meinen Ansatz verfälscht. Ich ging davon aus, dass die maximale Sichtweite beispielsweise 200 m beträgt. Dann werden Werbetafeln, die 100 m vom Telefon entfernt sind, in 50% ihrer ursprünglichen Größe angezeigt. Das ist es. Eine lineare Skalierung basierend auf dem maximalen Abstand.

Was ich bei diesem Ansatz vermisst habe, ist die Größe der Werbetafeln (verstanden als physische Objekte). Die Art und Weise, wie sie auf dem Bildschirm angezeigt werden, hängt nur von ihrer Größe in Pixel ab. Dies bedeutet, dass die Auflösung der Anzeige ein Faktor ist, der entscheidet, wie Sie sie wahrnehmen. Ich gehe also davon aus, dass wenn Sie zwei Telefone mit denselben Bildschirmabmessungen und unterschiedlichen Auflösungen erhalten, dieselben Bilder auf beiden von unterschiedlicher Größe sind. Habe ich recht?

Dann ist meine Frage endlich Wie gehe ich vor, um Bilder so zu skalieren, dass sie in der AR-Ansicht gut aussehen?

Ich denke, ich sollte einige Kameraparameter berücksichtigen. Befindet sich ein 10 x 10 cm großes Objekt direkt vor der Kamera, kann es den gesamten Bildschirm bedecken. Aber wenn Sie es ein paar Meter weiter legen, wird es zu einem kleinen Detail. Wie kann man sich dann der Skalierung nähern? Wenn ich beschließe, meinen virtuellen Werbetafeln physische Abmessungen zuzuweisen, wie skaliere ich sie dann basierend auf dem Abstand von der Kamera?

Habe ich recht, dass ich jedem Bild physikalische Abmessungen in Metern zuweisen sollte (unabhängig von der Größe in Pixeln) und sie basierend auf den Abmessungen und einem kameraabhängigen Skalierungsfaktor anzeigen sollte?

Könnten Sie mir bitte dabei helfen? Hinweise werden hilfreich sein. Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage