2 Punkte von GN⁺ 2025-06-06 | 1 Kommentare | Auf WhatsApp teilen
  • Das iPhone 15 Pro speichert standardmäßig Bilder im HEIC-Format, die eine Depth Map enthalten
  • In einer HEIC-Datei werden mehrere Bilder und umfangreiche Metadaten gemeinsam gespeichert; bei Auswahl von JPEG sind Depth Map, HDR usw. nicht enthalten
  • Mit dem Open-Source-Projekt HEIC Shenanigans lassen sich Bilder und Metadaten aus HEIC-Dateien extrahieren und in das EXR-Format umwandeln
  • Im Konvertierungsprozess werden verschiedene Standards und Tools aus der Film-/TV-Branche genutzt, darunter OpenEXR, OpenImageIO, OpenColorIO
  • Dadurch lassen sich die Informationen HDR, SDR, Gain Map, Depth Map von Fotos des iPhone 15 Pro getrennt im EXR-Format nutzen

Hintergrund der Depth-Map-Unterstützung im iPhone 15 Pro

  • Seit 2017 integriert Apple bei seinen iPhones mithilfe von LiDAR-Scannern, 3D Time-of-Flight und Structured-Light-Scanning Depth-Map-Informationen in Kamerabilder
  • Diese Depth Maps, Metadaten und mehrere Bildversionen werden im HEIF(HEIC)-Format gespeichert
  • HEIC ist ein effizientes Bildspeicherformat und wurde seit 2017 als Standard-Bildformat des iPhone übernommen
  • Beim Einsatz des JPEG-Formats stehen fortgeschrittene Funktionen wie Depth Map und HDR nicht zur Verfügung

Beispiel zur Überprüfung der Depth Map in HEIC

  • Finn Jaeger, VFX-Leiter der Hamburger Filmproduktionsfirma Replayboys, hat Screenshots von auf dem iPhone erzeugten mehreren Depth Maps sowie den Projektfortschritt geteilt
  • Sein Projekt HEIC Shenanigans stellt ein Python-Skript (374 Zeilen) bereit, das einzelne Bilder und Metadaten aus einem HEIC-Container extrahiert und in EXR-Dateien umwandelt

Informationen zur Entwicklungsumgebung

  • Die verwendete Workstation lief mit Ryzen 9 9950X 16-Core-CPU, 96 GB DDR5-RAM, 4 TB NVMe-SSD, ASRock X870E Nova 90 Mainboard und Ubuntu 24 LTS (WLS2) auf Windows 11 Pro
  • Wegen der Nutzung einer Nvidia GTX 1080 ist Windows die Hauptumgebung und wurde teils aus Gründen der Software-Kompatibilität gewählt

Vorbereitung wichtiger Tools und Bibliotheken

  • Erforderlich sind eine Python-3.12.3-Umgebung sowie weitere CLI-, Bildkonvertierungs- und Bildverarbeitungsbibliotheken
  • exiftool spielt eine wichtige Rolle für die HEIC-Unterstützung; mit einer aktuellen Version sind mehr Funktionen und Bugfixes möglich
  • jc (JSON Convert) wandelt CLI-Ausgaben in JSON um und erhöht so die Nutzbarkeit in Pipelines
  • Das Repository von HEIC Shenanigans wird geklont und die Abhängigkeiten in einer Python-Virtual-Environment installiert
  • Die finalen EXR-Bilder lassen sich im Viewer DJV prüfen

Konvertierungsdemo und Beispielbilder

  • Verwendet wird ein HEIC-Beispielbild, das Joel Joseph, Spezialist für die ArcGIS-Produktfamilie, in Mumbai, Indien, mit einem iPhone 15 Pro aufgenommen hat

HEIC → EXR-Konvertierung und Workflow

  • Die Academy Software Foundation treibt Open-Source-Projekte und Standards voran, die in Film, TV und digitaler Postproduktion eingesetzt werden
  • Unter ihren Projekten ist OpenEXR ein von ILM 1999 entwickeltes High-Dynamic-Range-(HDR)-Bildformat, das 2003 Open Source wurde und unter anderem in visuellen Effekten und 3D-Rendering verwendet wird

Konkrete Schritte der EXR-Konvertierung

  • Mit dem Skript heic_to_exr.py aus heic_shenanigans wird ein eingegebenes HEIC-Bild in eine EXR-Datei konvertiert
  • Das Konvertierungsergebnis (EXR) ist 468 MB groß und enthält verschiedene Bild- und Map-Informationen in einer einzigen Datei

Einsatz des oiiotool-Skripts

  • Bildgröße extrahieren
  • Farbraum und Gamma des sRGB-Bildes von Linear P3 → ACEScg umwandeln
  • Mithilfe der OpenColorIO(OCIO)-Konfigurationsdatei Farbprofile und Farbraumkonvertierungen durchführen
  • HDR Gain Map von Rec709 nach Linear umwandeln und den Y-Kanal zu RGB erweitern
  • Den Headroom-Wert der Gain Map extrahieren und die inverse Skalierung anwenden
  • Das HDR-Basisbild per Multiplikation mit der Gain Map erzeugen
  • Den Y-Kanal der Depth Map extrahieren und im EXR-Format speichern
  • Im letzten Schritt die erzeugten Kanäle (RGB, SDR, Gain Map, Depth Map) als separate Kanäle innerhalb der EXR-Datei hinzufügen

Kanalaufbau innerhalb der EXR-Datei

  • In der EXR-Datei werden die folgenden Informationen kanalweise gespeichert
    • RGB des HDR-Basisbildes
    • SDR-Kanal (separat gespeichert)
    • Gain Map
    • Depth Map
  • Falls eine Matte-Ebene vorhanden ist, kann sie zusätzlich enthalten sein

Nutzung und Hinweise

  • Durch diesen Prozess lassen sich die komplexen Informationen wie Depth und HDR von mit dem iPhone 15 Pro aufgenommenen Bildern in ein professionelles Format (EXR) auftrennen und nutzen
  • Das zeigt das Potenzial, mit dem iPhone aufgenommene Bilder effizient in verschiedenen Datenpipelines für Machine Learning, 3D-Rendering, Film und VFX einzusetzen

1 Kommentare

 
GN⁺ 2025-06-06
Hacker-News-Kommentare
  • Ich möchte betonen, wie auch andere bereits erwähnt haben, dass das LIDAR des iPhone eine zu geringe Auflösung hat, um als primäre Datenquelle für Tiefenkarten zu dienen. Tatsächlich verwendet das iPhone je nach Modell und eingesetzter Kamera etwa vier verschiedene Verfahren zur Erzeugung von Tiefendaten. Ursprünglich galt das nur für Fotos im Porträtmodus, aber neuere iPhones speichern Tiefenkarten auch bei normalen Fotos.

    1. Das erste Verfahren besteht darin, mit zwei rückseitigen Kameras gleichzeitig aufzunehmen und die Tiefenkarte aus der Parallaxe zu schätzen. Es wurde zuerst im iPhone 7 Plus eingesetzt und hat die Einschränkung, dass es auf die Ansicht des Objektivs mit engerem Bildwinkel beschränkt ist.
    2. Wenn es nur eine Kamera gibt, wie beim iPhone XR, werden Fokus-Pixel auf dem Sensor genutzt, um eine grobe Tiefe zu erfassen, die dann per Machine Learning korrigiert wird (passender Artikel).
    3. Bei Geräten wie dem iPhone SE ohne solche Fokus-Pixel wird die Tiefenkarte nur per Machine Learning vorhergesagt, was die am wenigsten realitätsnahe Methode ist. Man kann sie sogar täuschen, indem man ein Foto eines Fotos macht (passender Artikel).
    4. Selfies auf iPhones mit Face ID verwenden den 3D-Scan der TrueDepth-Kamera, der sich durch geringe Qualität und Unschärfe auszeichnet.
      Die im Artikel erwähnten Hilfsbilder zur Personensegmentierung und Erkennung von Brillen, Haaren, Haut usw. (Portrait Effects Matte) sind Ergebnisse von Machine Learning.
      Ich selbst habe mit den Tiefenkarten und Matte-Bildern des Porträtmodus einmal eine kreative Filter-App gebaut. Sie existiert inzwischen nicht mehr, aber es war eine wirklich spannende Erfahrung. Künstlerische Ideen mit Tiefenkarten sind praktisch grenzenlos.
    • Auf neueren iPhones wird inzwischen automatisch auch im normalen Fotomodus eine Tiefenkarte gespeichert, wenn ein Motiv (Mensch oder Haustier) erkannt wird. Ich habe früher ebenfalls eine kreative Filter-App mit Tiefenkarten und Portrait Effects Matte entwickelt und würde gern wissen, ob man den Namen dieser App und zugehörige Videos noch irgendwo sehen kann.
      Zur Einordnung: Ich habe einmal ein Utility-Tool namens Matte Viewer gebaut, das nur zum Anzeigen von Mattes und Tiefenkarten dient (Matte Viewer App).

    • Ich möchte betonen, dass LIDAR eher für Autofokus (AF) und schnelles Fokussieren bei wenig Licht optimiert ist als für die Erzeugung von Tiefenkarten in voller Auflösung.

    • Die dritte Methode ist eine Geschichte von vor fünf Jahren; als aktuelle Open-Source-Referenz für ML-basierte Tiefenschätzung ist eher ml-depth-pro zu empfehlen.

    • Ich frage mich, ob die vierte TrueDepth-Methode in Sicherheits-Apps auch zur Liveness-Erkennung eingesetzt werden kann.

  • Wirklich ein sehr interessanter Artikel. Beeindruckend, dass diese Tiefenkartendaten letztlich dazu verwendet werden, Hintergrundunschärfe (Schärfentiefe, also sogenanntes faux bokeh) zu erzeugen.
    Dass man selbst nach der Aufnahme noch Fokus und Tiefenbereich, also die Blende, nachträglich anpassen kann, ist ziemlich faszinierend, aber künstliches Bokeh gefällt mir persönlich nicht besonders. Es wirkt unecht und für mich sogar schlechter als ein Photoshop-Ergebnis.
    Außerdem sind mir im Artikel einige Tippfehler beim Dateiformat aufgefallen (14-mal HEIC, 3-mal HIEC).

    • Ich wollte nur kurz Bescheid geben, dass ich den Hinweis auf die Tippfehler im Dateiformat übernommen und korrigiert habe.

    • Ich denke, künstliches Bokeh wirkt deshalb unbeholfen, weil es die Optik und die Mathematik der Blende nicht exakt abbildet und aus Produktsicht nur als Näherung implementiert wurde, die für 80 % der Nutzer gut genug ist. Mit der richtigen Blendenmathematik ließe sich vermutlich eine bessere Kamera-App bauen, aber ich frage mich, ob Verbraucher den Unterschied überhaupt bemerken und dafür extra bezahlen würden.

  • Tiefenkarten und semantische Segmentierungskarten machen schon beim bloßen Anschauen Spaß, und wenn man sie in Apps wie TouchDesigner, Blender oder Cinema 4D importiert, kann man Fotos mit verschiedensten Tiefeneffekten versehen.
    Apple selbst nutzt diese Daten ebenfalls für die Nachbearbeitung von Fotos.
    Früher wurden sie nur im Porträtmodus erfasst, inzwischen aber auch automatisch bei normalen Aufnahmen, wenn Motive wie Menschen oder Haustiere erkannt werden.
    Ich bin ebenfalls Entwickler von Foto-Apps und Tools, und mein Matte Viewer ist speziell dafür gedacht, Tiefenkarten und Portrait-Matte-Bilder anzusehen und zu exportieren (Heliographe-Tool-Infos, Matte Viewer App).

  • Ich hoffe, dass irgendwann alle Smartphones standardmäßig 3D-Bilder auf Basis von Gaussian splatting unterstützen werden, auch ohne teure Sensoren. Der Rechenaufwand ist zwar hoch, aber es erscheint mir praktischer, als zusätzliche Sensorkosten und mehr Gewicht in Kauf zu nehmen.

  • Vielleicht habe ich etwas übersehen, aber ich frage mich, was die lange Diskussion über HDR-Gain-Maps im Artikel eigentlich mit Tiefenkarten zu tun hat.
    Ich mag das HDR-Display des iPhone nicht, weil es die Helligkeit automatisch übermäßig anpasst, und entferne daher bei meinen Fotos die HDR-Gain-Map manuell.
    Früheres HDR war besser: Dabei wurden drei Fotos mit unterschiedlicher Belichtung kombiniert und nur unzureichende Bereiche korrigiert, ohne dem Ergebnis eine konkrete Eigenschaft namens „HDR“ mitzugeben.

    • Zur Info: In den Fotoeinstellungen des iPhone kann man die Funktion „HDR-Helligkeit des Displays verstärken“ deaktivieren.

    • Ich hatte beim Lesen des Artikels denselben Gedanken: Die Übersicht zu Tiefenkarten war gut, aber ab der Mitte wurde HDR-Gain-Map zum Hauptthema, wodurch der Inhalt etwas zerfasert wirkte. Insgesamt gut, aber der Faden des Threads fühlte sich etwas unruhig an.

  • LIDAR hat tatsächlich eine viel geringere Auflösung als die im Artikel gezeigten Tiefenkarten.
    Die eigentliche Tiefenkarte wird aus LIDAR- und Kameradaten zusammengesetzt.

    • Ich verstehe es ebenfalls so, dass LIDAR für den präzisen Fokus verwendet wird und die eigentliche Tiefenkarte aus der Parallaxe mehrerer Kameras berechnet wird.
  • Ich frage mich, ob Apple diese Technik auch für die Funktion zur Sticker-Erstellung nutzt, also wenn man ein Motiv in einem Foto gedrückt hält, um einen Sticker zu extrahieren oder in ein anderes Foto zu kopieren.

    • Diese Funktion basiert ganz klar rein auf Machine Learning, denn sie funktioniert auch bei Fotos, die nicht mit einem iPhone aufgenommen wurden.
  • Ich frage mich, ob man mit Tiefenkarten Stereogramme oder SIRDS (Single Image Random Dot Stereograms) erzeugen kann. Ich erinnere mich noch daran, früher Stereogramme aus Graustufenbildern gemacht zu haben.

    • Das wird tatsächlich unterstützt. Diese UI gibt es zwar nur in der VisionOS-Fotos-App, aber wenn ein Bild im Album eine Tiefenkarte hat oder hochauflösend genug ist, kann es per ML in einen 3D-Raum (Spatial Format) umgewandelt werden.
      Über EXIF-Informationen wird das Sichtfeld gemappt, damit in VR die Skalierung der physischen Größe der ursprünglichen Szene entspricht.
      Für mich allein war diese Funktion schon Grund genug, 4000 Dollar für die Vision Pro auszugeben. Fotos, die ich früher mit einer Nikon D7 aufgenommen habe, in VR in korrekter Größe und 3D zu sehen, löst bei mir eine sehr tiefe Nostalgie aus.
      Schade, dass Apple das nicht als Kernfunktion der Vision Pro hervorhebt. Das ist wirklich eine großartige Funktion.
  • Reality Composer für iOS ermöglicht Object Capture nur auf Geräten mit LIDAR, und auf Geräten ohne LIDAR gibt es kein Photogrammetry-Fallback. Ich wollte einmal 3D-Arbeit damit machen und fand das enttäuschend.

    • Für 3D-Scanning war die Heges-App bei mir am erfolgreichsten. LIDAR eignet sich gut für große Objekte wie Autos, und die Face-ID-Tiefenkamera ist nützlich für kleinere Objekte.
      Ich habe mit einem Creality Ferret SE-Scanner (für etwa 100 Dollar über TikTok gekauft) kleine 3D-Scans ausprobiert, und das Ergebnis war besser als erwartet.

    • Polycam funktioniert auf Geräten ohne LIDAR ersatzweise per Photogrammetry.
      Mir wurden außerdem Canvas (erfordert separates LIDAR) und Scaniverse (LIDAR optional) empfohlen.

  • Jedes Mal, wenn ich den Titel sehe, lese ich in meinem Kopf versehentlich „death maps“, und das hat irgendwie einen seltsamen Unterhaltungswert.