2 pontos por GN⁺ 2025-06-06 | 1 comentários | Compartilhar no WhatsApp
  • O iPhone 15 Pro salva imagens por padrão no formato HEIC, incluindo mapa de profundidade
  • O arquivo HEIC armazena várias imagens e uma grande quantidade de metadados em conjunto, e ao escolher JPEG, recursos como mapa de profundidade e HDR não são incluídos
  • Com o projeto open source HEIC Shenanigans, é possível extrair imagens e metadados de arquivos HEIC e convertê-los para o formato EXR
  • No processo de conversão, são usados vários padrões e ferramentas da indústria de cinema/TV, como OpenEXR, OpenImageIO e OpenColorIO
  • Como resultado, é possível separar e aproveitar em formato EXR as informações de HDR, SDR, Gain Map e Depth Map das fotos do iPhone 15 Pro

Contexto do suporte a mapa de profundidade no iPhone 15 Pro

  • Desde 2017, a Apple vem incluindo informações de mapa de profundidade nas imagens da câmera de seus iPhones usando scanner LiDAR, 3D Time-of-Flight e escaneamento por luz estruturada
  • Esses mapas de profundidade, metadados e várias versões da imagem são armazenados no formato HEIF (HEIC)
  • O HEIC é um formato eficiente para armazenamento de imagens e foi adotado como formato padrão de imagem do iPhone a partir de 2017
  • Ao usar o formato JPEG, não é possível utilizar recursos avançados como mapa de profundidade e HDR

Exemplo de verificação de mapa de profundidade em HEIC

  • Finn Jaeger, supervisor de VFX da produtora Replayboys, sediada em Hamburgo, Alemanha, compartilhou capturas de tela de múltiplos mapas de profundidade gerados no iPhone e o andamento do projeto
  • O projeto HEIC Shenanigans de Finn Jaeger fornece um script Python (374 linhas) que extrai imagens individuais e metadados do contêiner HEIC e os converte em arquivos EXR

Informações do ambiente de desenvolvimento

  • A workstation usada roda com CPU Ryzen 9 9950X de 16 núcleos, 96GB de RAM DDR5, SSD NVMe de 4TB, placa-mãe ASRock X870E Nova 90 e Ubuntu 24 LTS (WLS2) em um ambiente Windows 11 Pro
  • O Windows é o ambiente principal, incluindo o uso de uma Nvidia GTX 1080, e foi escolhido também por questões de compatibilidade com alguns softwares

Preparação das principais ferramentas e bibliotecas

  • É necessário instalar o ambiente Python 3.12.3, além de outras bibliotecas de CLI e de conversão/processamento de imagens
  • O exiftool tem papel importante no suporte a HEIC, e versões mais recentes podem incluir mais recursos e correções de bugs
  • O jc (JSON Convert) converte a saída de CLI em JSON, aumentando a utilidade em pipelines
  • O repositório HEIC Shenanigans é clonado e as dependências são instaladas em um ambiente virtual Python
  • As imagens EXR finais podem ser verificadas no visualizador DJV

Demo de conversão e imagens de exemplo

  • Foi usada uma amostra de imagem HEIC capturada com um iPhone 15 Pro em Mumbai, na Índia, por Joel Joseph, especialista na linha de produtos ArcGIS

Conversão de HEIC → EXR e workflow

  • A Academy Software Foundation lidera projetos open source e padrões usados em cinema/TV/pós-produção digital
  • Entre seus projetos, o OpenEXR é um formato de imagem de alta faixa dinâmica (HDR) desenvolvido sob liderança da ILM em 1999, tornado open source em 2003, e usado em efeitos visuais e renderização 3D

Etapas detalhadas da conversão para EXR

  • A imagem HEIC de entrada é convertida em arquivo EXR com o script heic_to_exr.py do heic_shenanigans
  • O resultado da conversão (EXR) tem 468MB e contém em um único arquivo várias informações de imagem e mapas

Uso de script com oiiotool

  • Extração do tamanho da imagem
  • Conversão de espaço de cor e gama da imagem sRGB de Linear P3 → ACEScg
  • Uso do arquivo de configuração do OpenColorIO (OCIO) para perfil de cor, conversões de color space etc.
  • Conversão do HDR Gain Map de Rec709 para Linear e expansão do canal Y → RGB
  • Extração do valor de headroom do Gain Map e aplicação de escala inversa
  • A imagem base HDR é gerada por operação de multiplicação com o Gain Map
  • Extração do canal Y do mapa de profundidade (Depth Map) e salvamento em formato EXR
  • Na etapa final, cada canal gerado (RGB, SDR, Gain Map e Depth Map) é adicionado como canal separado dentro do arquivo EXR

Composição dos canais dentro do EXR

  • O EXR armazena por canal as seguintes informações
    • RGB da imagem base HDR
    • Canal SDR (armazenado separadamente)
    • Gain Map
    • Depth Map
  • Se houver uma camada matte, ela também pode ser incluída adicionalmente

Uso e observações

  • Com esse processo, é possível separar e aproveitar em formato profissional (EXR) as informações compostas, como profundidade e HDR, das imagens capturadas no iPhone 15 Pro
  • Isso mostra o potencial de usar com eficiência imagens capturadas no iPhone em vários pipelines de dados, como machine learning, renderização 3D, cinema e VFX

1 comentários

 
GN⁺ 2025-06-06
Comentários do Hacker News
  • Como outros mencionaram, quero enfatizar que o LIDAR do iPhone tem resolução baixa demais para ser usado como principal fonte de dados de mapa de profundidade. Na prática, o iPhone usa cerca de quatro métodos de extração de profundidade, dependendo do modelo e da câmera em uso. Originalmente isso só era aplicado a fotos no modo retrato, mas os iPhones recentes também gravam mapas de profundidade em fotos normais.

    1. O primeiro método é estimar o mapa de profundidade por paralaxe, capturando simultaneamente com duas câmeras traseiras. O iPhone 7 Plus foi o primeiro a adotar isso, mas havia a limitação de ficar restrito à visão da lente de campo mais estreito
    2. Quando há apenas uma câmera, como no iPhone XR, ele usa os pixels de foco no sensor para estimar uma profundidade aproximada e a corrige com machine learning (artigo relacionado)
    3. Em aparelhos como o iPhone SE, que nem sequer têm pixels de foco, o mapa de profundidade é previsto apenas com machine learning, mas o resultado é o menos relacionado com a realidade. Dá até para enganar o sistema fotografando uma foto (artigo relacionado)
    4. Nas selfies de iPhones com Face ID, é usado o escaneamento 3D da câmera TrueDepth, caracterizado por baixa qualidade e aspecto borrado
      A separação de pessoas mostrada no artigo e as imagens auxiliares de reconhecimento de óculos, cabelo, pele etc. (portrait effect matte) são resultados de machine learning.
      Eu também já fiz um app de filtros criativos usando o mapa de profundidade do retrato e as imagens matte; ele não existe mais, mas foi uma experiência muito divertida. As ideias artísticas usando mapas de profundidade são praticamente infinitas.
    • Nos iPhones recentes, quando o aparelho reconhece um assunto (pessoa ou animal de estimação), ele grava automaticamente um mapa de profundidade mesmo no modo principal de foto. Já tive experiência desenvolvendo um app de filtros criativos com mapa de profundidade e portrait effect matte, então fiquei curioso para saber se dá para ver o nome desse app e algum vídeo relacionado.
      Aliás, já criei uma ferramenta utilitária chamada Matte Viewer, mas ela serve apenas para visualizar os mattes e o mapa de profundidade (app Matte Viewer)

    • Quero enfatizar que o LIDAR é um hardware otimizado não para gerar mapas de profundidade em resolução total, mas sim para foco automático (AF) e foco rápido em ambientes com pouca luz

    • O terceiro método é de 5 anos atrás, então recomendo consultar o open source mais recente sobre estimativa de profundidade com machine learning (ml-depth-pro)

    • Também fiquei curioso se o quarto método, o TrueDepth, pode ser usado em apps de segurança para detecção de liveness (distinguir uma pessoa real)

  • Artigo realmente interessante. É impressionante como esse tipo de dado de mapa de profundidade acaba sendo usado para implementar desfoque de fundo (profundidade de campo, o chamado faux bokeh).
    É fascinante poder ajustar depois da foto o foco e a área de profundidade, ou seja, a abertura, mas pessoalmente não gosto muito de bokeh artificial. Parece falso, a ponto de eu achar pior que um resultado de Photoshop.
    E também notei alguns erros de digitação no formato de arquivo ao longo do artigo (14 vezes HEIC, 3 vezes HIEC)

    • Só queria informar rapidamente que corrigi os erros de digitação no formato de arquivo, obrigado por apontar

    • Acho que o motivo de o bokeh artificial parecer ruim é que ele não reflete corretamente a óptica e a matemática da abertura, e do ponto de vista de produto foi implementado como uma aproximação suficiente para satisfazer 80% dos usuários. Parece que daria para fazer um app de câmera melhor aplicando a matemática correta da abertura, mas fico me perguntando se os consumidores perceberiam a diferença e realmente pagariam por isso

  • Mapas de profundidade e segmentação semântica (semantic map) já são divertidos só de olhar, e se você importar isso para apps como TouchDesigner, Blender ou Cinema 4D, dá para aplicar vários efeitos de profundidade às fotos.
    A própria Apple também usa esses dados no pós-processamento de fotos (correções etc.).
    Antes isso só era capturado no modo retrato, mas recentemente passou a ser gravado automaticamente também em fotos normais quando um assunto (pessoa, animal de estimação) é detectado.
    Eu também sou desenvolvedor de apps e ferramentas de fotografia, e o Matte Viewer que criei é focado em visualizar e exportar mapas de profundidade e imagens de portrait matte (informações sobre a ferramenta Heliographe, app Matte Viewer)

  • Espero o dia em que todos os smartphones passem a oferecer por padrão imagens 3D baseadas em Gaussian splatting, sem precisar de sensores caros. O custo computacional é alto, mas ainda me parece mais prático do que adicionar custo e peso extras com sensores adicionais

  • Posso estar deixando algo passar, mas fiquei me perguntando qual é exatamente a relação entre mapas de profundidade e o fato de o artigo dedicar um bom espaço a HDR gain map.
    Eu odeio o HDR display do iPhone (o ajuste excessivo de brilho automático), então removo manualmente o HDR gain map das minhas fotos.
    O HDR antigo era melhor nesse aspecto: juntava três fotos com exposições diferentes e corrigia apenas as áreas deficientes, sem embutir no resultado uma propriedade específica chamada “HDR”

    • Só acrescentando que dá para desligar o recurso “Aumentar brilho HDR da tela” nas configurações de Fotos do iPhone

    • Tive exatamente a mesma impressão lendo o artigo: a introdução sobre mapas de profundidade foi boa, mas da metade em diante o foco mudou para HDR gain map e a coisa ficou um pouco dispersa. No geral gostei, mas o fluxo da thread pareceu um pouco desorganizado

  • O LIDAR na verdade tem resolução bem menor do que o mapa de profundidade mostrado no artigo.
    O mapa de profundidade real é composto pela fusão dos dados do LIDAR com os dados da câmera

    • Eu também entendia que o LIDAR é usado para foco realmente preciso, e que o mapa de profundidade de verdade é calculado pela paralaxe entre múltiplas câmeras
  • Fiquei curioso se a Apple também aplica essa tecnologia ao recurso de “geração de adesivo” (segurar sobre o assunto na foto para extrair como sticker ou copiar para outra foto)

    • Esse recurso com certeza é puramente baseado em machine learning, porque funciona até com fotos que não foram tiradas com iPhone
  • Fiquei pensando se seria possível usar mapas de profundidade para gerar estereogramas ou SIRDS (single-image random dot stereograms). Tenho boas lembranças de fazer estereogramas a partir de imagens em tons de cinza no passado

    • Na prática, isso é suportado. Essa UI só existe no app Fotos do visionOS, mas se uma foto do álbum tiver mapa de profundidade ou resolução alta, ela pode ser convertida por ML em espaço 3D (Spatial Format).
      As informações de campo de visão são mapeadas a partir do EXIF para ajustar a escala no VR ao tamanho físico da cena original.
      Pessoalmente, só esse recurso já fez valer os US$ 4000 que gastei no Vision Pro. Ver em VR, no tamanho correto e em 3D, fotos que tirei antigamente com uma Nikon D7 desperta uma nostalgia muito profunda.
      Acho uma pena que a Apple não destaque isso como recurso principal do Vision Pro. É algo realmente impressionante
  • O Reality Composer para iOS só permite object capture em aparelhos com suporte a LIDAR, e em dispositivos sem LIDAR não há um recurso de backup com photogrammetry (reconstrução 3D composta). Compartilhando uma frustração que tive ao tentar trabalhar com 3D

    • Para trabalho de escaneamento 3D, o app Heges foi o que teve mais sucesso para mim. O LIDAR é eficaz para objetos grandes, como carros, enquanto a câmera de profundidade do Face ID é útil para objetos pequenos.
      Tentei fazer escaneamentos 3D pequenos com um scanner Creality Ferret SE (comprei no TikTok por cerca de US$ 100) e ele foi muito melhor do que eu esperava

    • O Polycam funciona como substituto usando photogrammetry em aparelhos sem suporte a LIDAR.
      Também já recebi recomendação do Canvas (precisa de LIDAR separado) e do Scaniverse (LIDAR opcional)

  • Toda vez que vejo o título, meu cérebro lê “death maps”, e isso tem um efeito estranhamente engraçado