[Algorithmus] Duales Fisheye zu äquirechteckigem Bild, 360-Grad-VR-Sucher/duales Fisheye zu äquirechteckigem Bild

1. Einleitung

Jeder weiß, dass VR 360-Grad-Panoramabilder sehen kann, das heißt, jedes Bild zeichnet eine 360-Grad-Perspektive auf. Wie erfasst die Branche solche Bilder? Derzeit kennen Blogger zwei Hauptmethoden:

  • A. Verwenden Sie mehrere normale Kameras. Jede Kamera nimmt Bilder in einem festen Winkel auf und fügt sie dann zusammen.
  • B. Verwenden Sie zwei Fischaugenkameras mit einem Betrachtungswinkel (FOV) >= 180 Grad und fügen Sie sie dann wie unten gezeigt zusammen

Wir geben diese Aufgabe explizit ein und aus:

  • Eingabe: Es wurden zwei Fischaugenbilder aufgenommen
  • Ausgabe: Ein gespleißtes rechteckiges Kartierungspanorama (Sie können später basierend auf diesem Panorama verschiedene interessante Bearbeitungen vornehmen)

Fügen Sie hier eine Bildbeschreibung ein

2.Meine Lösung

2.1 Demontage von Algorithmusmodulen

Ich habe zuerst online gegoogelt, wie man das macht: Ich habe eine ähnliche Funktion gefunden: https://moonagic.com/dualfisheye-to-equirectangular/,
aber der Effekt ist nicht besonders gut. Aufgrund meiner eigenen Erfahrung habe ich die Pipeline in drei Teile unterteilt:

2.1.1 Verzerrungskorrektur der Fischaugenkamera

Zweck: Die Erweiterung des Fischaugenbildes zu einem rechteckigen Bild erfordert eine Bildkorrektur oder Projektionstransformation. Fischaugenbilder verwenden normalerweise eine spezielle perspektivische Projektion und müssen daher in eine reguläre isometrische oder rechteckige Projektion umgewandelt werden, um ein rechteckiges Bild zu erhalten. Dieser Vorgang umfasst normalerweise die Berechnung der Position jedes Pixels im neuen Bild und das anschließende Kopieren der Pixel aus dem Fischaugenbild an die entsprechende Position im neuen Bild.

Methoden: Unsere Methode ist in zwei Schritte unterteilt. Schritt 1: Wir projizieren das ursprüngliche 2D-Fisheye-Bild auf eine 3D-Kugel. Schritt 2: Wir verwenden die sphärische Transmissionsprojektion. Wir definieren zunächst die Polarkoordinaten der Punkte auf der Kugel, berechnen dann die kartesischen Koordinaten dieser Punkte und verwenden die mathematische Formel der sphärischen Transmissionsprojektion, um die Koordinaten des Projektionspunkts zu berechnen

Fügen Sie hier eine Bildbeschreibung ein

2.1.2 Erkennung und Zuordnung von Merkmalspunkten

Zweck: Wir konvertieren zwei Fischaugenbilder in zwei rechteckige Bilder, die an den Rändern nicht ausgerichtet sind. Hier gehen wir davon aus, dass es an den Randpositionen der beiden Bilder eine Überlappung gibt, und müssen dann die Ausrichtungstransformationsbeziehung der beiden Bilder in der Überlappung finden, damit sich ihre Bilder im Überlappungsintervall vollständig überlappen können.

Methode: Unsere Methode ist weiterhin in zwei Schritte unterteilt. Der erste Schritt: Wir werden die Merkmalspunkte im Überlappungsintervall erkennen, um die beiden Bilder zu verbinden. Merkmalspunkte sind normalerweise Orte mit einzigartigen Strukturen oder Texturen im Bild, wie z. B. Ecken, Kanten, Flecken usw. Schritt 2: Wir verwenden die Feature-Deskriptoren der Feature-Punkte, um den Abgleich durchzuführen. Wir unterstützen die folgenden drei Methoden:

Erkennung von Merkmalspunkten Passend
Kugel NN
SIEBEN NN
SuperPoint Sekundenkleber
2.1.3 Korrekturausrichtung und Spleißen

Zweck: Der Prozess der Verschmelzung der beiden Bilder oben zu einem nahtlosen Ganzen.
Methode: Unsere Methode umfasst immer noch zwei Hauptschritte: Bildentzerrung und Bildzusammenfügung. Der erste Schritt: Die Bildkorrektur besteht darin, die oben erhaltenen Feature-Point-Matching-Informationen zu verwenden, um eine Transformationsmatrix (Homographiematrix) zu erhalten. Diese Transformation kann eine Translation, Drehung, Skalierung, affine Transformation oder perspektivische Transformation usw. sein, um die beiden Bilder unter demselben Koordinatensystem auszurichten. Schritt 2: In den meisten Fällen sind die Bilder im Überlappungsintervall nicht vollständig ausgerichtet. Wenn ein Schwellenwert verwendet wird, um die beiden Bilder direkt zu überlappen, kommt es am Verbindungspunkt zu Geisterbildern. Wir verwendeten eine optimale Nahtstrategie.

Fügen Sie hier eine Bildbeschreibung ein

2.2 Umgebungseinrichtung

Unser Code basiert nur auf Python3 + Numpy + OpenCV + Torch

INSTALL.sh

init(){
    if [[ `python -V` =~ "Python 3." ]] ;then
        echo "python version: " `python -V`
    else
        echo "python version need >=3.6"
        exit -2
    fi
    pip install -r ./requirements.txt
    pip install torch==1.11.0 torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu
}
init

3. Quellcode

Wir haben über 50 Exemplare über verschiedene Kanäle verkauft. Wir können eine komplette Pipeline für die Konvertierung von Fischaugenbildern in rechteckige Panoramen bereitstellen, und jedes Untermodul ist vollständig entkoppelt. Um es zu bekommen, gehen Sie bitte zu Bread and More .

Supongo que te gusta

Origin blog.csdn.net/hard_level/article/details/132764841
Recomendado
Clasificación