Blog / Engenharia

As cores são reais? Colorização por IA só de croma

· atualizado em 24 de agosto com o estudo do detector em 115 fotos · dados: implementação, registro de decisão, bancada de laboratório

A preocupação mais comum com a colorização por IA é que o modelo esteja repintando a fotografia: que o rosto da vovó agora seja em parte uma invenção. Neste pipeline isso é descartado por construção, não por promessa: o colorizador[1] só tem permissão para contribuir com cor, nunca com detalhe. Esta nota explica o mecanismo; depois (novidade nesta revisão) avalia as 40 linhas de aritmética que decidem quando a colorização roda, em 115 fotografias rotuladas: digitalizações reais em preto e branco, uma impressão real em albumina de 1867, três famílias de cópias com viragem química, cor real e cor sinteticamente desbotada. O detector é perfeito em toda família monocromática, 88% em cor real, e em cor desbotada desaba para 8%, por um motivo que nenhum limiar consegue corrigir: cor suficientemente desbotada é monocromática, matematicamente.

115fotos rotuladas avaliadasdigitalizações reais + 3 famílias sintéticas de tom
100%em toda família monocromáticaP&B, sépia, selênio, cianotipia: 66/66
88%em cor realos 3 erros são cenas de um só matiz
8%em cor desbotadae a matemática diz por quê

Cada número desta nota foi medido no código do pipeline de produção: os mesmos modelos, a mesma matemática. Registros brutos por imagem: e4_mono.json.

1 · O mecanismo: a luminância é intocável

Toda imagem se separa em luminância (a estrutura em preto e branco: bordas, textura, rostos, luz) e croma (a cor assentada sobre ela). Nós colorimos no espaço CIELAB, que torna a separação explícita: a fotografia mantém o próprio canal L, bit a bit, e o modelo contribui só com os dois canais de cor (a e b). Recombine e você obtém a foto original vestindo cor estimada. Se o modelo de cor estiver num dia ruim, a falha é um tom errado, nunca um rosto mudado, uma borda deslocada ou textura inventada.

Digitalizaçãofoto P&B
Canal Lestrutura: passa direto
Canais a·bcor: do modelo
Resultadomesmo detalhe, cor nova
Figura 1. A separação dos canais. O modelo nunca vê um caminho pelo qual pudesse alterar a estrutura: a luminância flui sem modificação.
Digitalização em preto e branco de uma chapa de vidro de 1862 com três homens junto a uma tenda militarAntesA mesma fotografia restaurada e colorida: uniformes em azul, grama e lona em tons naturaisDepois
Figura 2. A colorização como parte de uma restauração completa: uma digitalização de chapa de vidro de 1862 e o resultado da ferramenta deste site. A cor é estimada; o detalhe é da própria fotografia. Agosto de 2026.

2 · Quando ela roda? A matemática de “isto é sépia?”

A colorização roda automaticamente só quando a foto é medida como monocromática, e o sépia é o que torna isso nada óbvio. O teste ingênuo (r ≈ g ≈ b em toda parte) pega o preto e branco neutro e nada mais. Mas uma cópia em sépia é enfaticamente cromática: cada pixel carrega cor. O que a torna monocromática é que toda a sua cor aponta na mesma direção: a química faz a viragem de uma cópia com um único composto, então o matiz é constante enquanto o croma escala com a densidade. A direção, não a magnitude, é a impressão digital.

Então o detector amostra até 20.000 pixels no espaço Lab e guarda três estatísticas: a fração cromática (parcela de pixels com croma acima de um piso de ruído de 2 unidades), o croma médio C̄ e a interessante, a concentração de matiz, que é o comprimento resultante médio dos vetores unitários de matiz, direto da estatística direcional[2]:

R̄ = ‖ Σi ui ‖ / n,   ui = (ai, bi) / Ci(1)

R̄ vive em [0, 1]: exatamente 1 significa que todo pixel cromático concorda no matiz (um tom perfeito); perto de 0 significa que os matizes se cancelam ao redor do círculo (pele discutindo com céu: uma fotografia colorida). A regra de produção tem duas cláusulas:

monocromática ⇔ chromaticFraction < 0.05  ∨  ( R̄ > 0.92 ∧ C̄ < 22 )(2)

3 · A avaliação com 115 fotos

Seis versões da mesma foto de um papagaio: cor original, preto e branco neutro, sépia, cianotipia, meio desbotada e muito desbotada
Figura 3. Uma cena Kodak pelos geradores do corpus. Concentração de matiz R̄ medida, da esquerda para a direita: 0.65 (cor original), 0.00 (P&B neutro), 1.00 (sépia), 1.00 (cianotipia), 0.86 (desbotamento 50%), 0.96 (desbotamento 82%). Repare no último número: o desbotamento eleva R̄, e esse é todo o problema da Seção 4.
Gruponcorretastaxa
Real B&W scans55100%
Real albumen print (1867)11100%
Synthetic neutral grayscale66100%
Sepia tints (×3 strengths)1818100%
Selenium tints1818100%
Cyanotype tints1818100%
Real color photos252288%
Faded color (synthetic)2428%

Toda família monocromática classifica perfeitamente, incluindo a única cópia genuína do século XIX, que cai em R̄ = 0.946, C̄ = 8.0, confortavelmente dentro da região. O gráfico de dispersão mostra o corpus inteiro de uma vez, com a região de decisão sombreada:

monocromática (verdade)cor realcor desbotada
0102230405000.250.50.750.921concentração de matiz R̄croma médio C̄classificada monocromática
Figura 4. O plano de decisão: concentração de matiz R̄ contra croma médio C̄, um ponto por foto (o P&B neutro se empilha na origem; as famílias de tom formam a coluna densa em R̄ ≈ 1). A caixa sombreada é a cláusula dois da Eq. 2. Três fotos coloridas reais (azul) invadem: um riacho na floresta, um jato na pista, um barco atracado, cenas que genuinamente são de um só matiz. E o conjunto desbotado (dourado) marcha firmemente para dentro da caixa à medida que o desbotamento empurra R̄ rumo a 1.

Os três falsos positivos de cor real merecem ser nomeados, porque não são ruído; são fotografias de cenas monocromáticas: o riacho na floresta da Kodak (R̄ 0.93), o jato estacionado (R̄ 0.96), um barco ao anoitecer. A estatística está fazendo seu trabalho; essas cenas realmente concentram seu matiz. A falha é semântica, não matemática, e é precisamente por isso que o tratamento Colorir é um interruptor visível e desmarcável, e não uma decisão silenciosa.

4 · A região onde nenhum limiar consegue vencer

Agora os pontos dourados. Desbote uma foto colorida e duas coisas acontecem ao mesmo tempo: C̄ encolhe (os corantes estão morrendo) e R̄ sobe: o que sobrevive ao desbotamento não é uma amostra justa dos matizes originais, mas o resíduo mais a dominante da cópia, e uma dominante é por definição direcional. Com 50% de desbotamento nosso corpus tem média R̄ ≈ 0.95; com 82%, R̄ ≈ 0.98 com C̄ ≈ 9. Compare com a Eq. 2: essa é a assinatura de um tom. Uma foto colorida muito desbotada não chegou perto da classe sépia; ela entrou nela.

0.60.70.80.90.80.840.880.920.960.98limiar de R̄acurácia no corpusprodução
Figura 5. Acurácia no corpus à medida que o limiar de R̄ varre (corte de croma fixo em 22). A acurácia sobe até 0.98, mas de 0.96 para cima o ganho é comprado ejetando a única impressão genuína em albumina (R̄ = 0.946) da classe monocromática: o único falso negativo da varredura. Os tons sintéticos pontuam R̄ ≥ 0.998; a química real do século XIX vagueia. Ajustar para 0.98 seria sobreajustar ao nosso próprio gerador.

Então o limiar é uma escolha de valores vestida de número. Empurre R̄ para 0.98 e a pontuação no corpus sobe dez pontos, enquanto o classificador silenciosamente começa a falhar exatamente nos artefatos para os quais o recurso existe: cópias reais com viragem, cuja química centenária vagueia no matiz muito mais do que qualquer tom sintético. A produção fica em 0.92 para manter margem para a química real, aceita a região desbotada como genuinamente ambígua e pergunta a você, porque uma foto que perdeu 82% da sua cor bem pode ser uma que o dono queira recolorir. A tabela acima chama essas 22 fotos de “erradas”; seus donos talvez chamassem metade delas de “por favor, sim”.

5 · O que a colorização honestamente é

Uma estimativa. O modelo viu fotografias suficientes para saber que a grama é verde e que os casacos de lã da década de 1860 costumam ser azul-escuros, mas não tem como saber que o vestido da sua avó era vermelho, não verde. Onde uma cor é historicamente conhecível a estimativa costuma ser convincente; onde não é, o modelo escolhe algo plausível. É por isso que o enquadramento honesto é “cor natural, adicionada” em vez de “as cores originais, recuperadas”, e por isso que existe a opção de manter uma foto em preto e branco. A estrutura (os rostos, a luz, o momento) é sempre da própria fotografia, pelo mecanismo da Seção 1. O mesmo truque no espaço Lab roda ao contrário na nossa renderização de rostos, em que o modelo de rostos contribui só com a luminância e a fotografia mantém seu croma.

6 · Limitações

  • Uma única cópia real com viragem. O Herschel em albumina ancora o argumento do realismo, mas é uma amostra única; um corpus datado de ferrótipos, albuminas e cianotipias é o próximo passo óbvio.
  • O desbotamento sintético é gentil com o detector. O desbotamento cromogênico real é seletivo por corante (o ciano morre primeiro; por isso as cópias dos anos 70 ficam avermelhadas), o que empurra R̄ para cima ainda mais depressa do que o nosso modelo uniforme.
  • Viés de amostragem, por projeto: detalhes coloridos minúsculos (um único broche vermelho num retrato em sépia) podem se esconder abaixo do radar da fração cromática. O viés é deliberadamente a favor de preservar tons.

Referências

  1. Antic, J. (2019). DeOldify: A Deep Learning based project for colorizing and restoring old images. Open-source software. github.com
  2. Mardia, K. V., & Jupp, P. E. (2000). Directional Statistics. Wiley. (The mean resultant length R̄ behind our hue-concentration statistic.) onlinelibrary.wiley.com
  3. Kodak Lossless True Color Image Suite: 24 uncompressed 768×512 PhotoCD reference images, the classic image-quality test set. r0k.us
  4. Cameron, J. M. (1867). Portrait of Sir John Herschel, a real albumen print with genuine chemical toning. Public domain, via Wikimedia Commons. commons.wikimedia.org
  5. Lange, D. (1936). “Migrant Mother” (Destitute pea pickers in California), Farm Security Administration. Public domain, via Wikimedia Commons. commons.wikimedia.org
  6. ONNX Runtime: the inference engine both our server (CPU) and in-browser (WebGPU/WASM) engines run on. onnxruntime.ai