Trabalho de Cores Correção de imagens de quadros do Portinari
Trabalho de Cores
Correção de imagens de quadros do Portinari
Descrição do problema
• Os quadros do Projeto Portinari foram fotografados e digitalizados
sob condições desconhecidas e a única referência confiável sobre as
cores das imagens é a presença de um padrão de cores Kodak Q-14
em grande parte das imagens digitalizadas.
• O Padrão Q-14 possui as seguintes amostras de cor:
– 19 tons de cinza
– 16 tons coloridos
• Do padrão de cores Q-14 podemos obter:
– Os valores RGB de cada uma das amostras de cor por medição direta
nas imagens
– Os valores colorimétricos XYZ ou Lab a partir de medidas espectrais
diretas de outros padrões Kodak Q-14
Descrição do problema
• Dada uma amostra de n cores na forma:
• Descobrir os valores XYZ ou Lab correspondentes a todos os pixels da
imagem
• Converter os valores XYZ ou Lab de todos os pixels para valores RGB
em algum espaço de cor padrão; como o sRGB, ProPhotoRGB ou
AdobeRGB; para gerar uma imagem “bem comportada” para que
possa ser editada ou impressa adequadamente
ni
ZYXbgr iiiAssociadoiii
1
),,(),,(
Mapeamento de RGB em XYZ/Lab
• As operações de mapeamento entre os valores RGB em
XYZ/Lab seguem a arquitetura do ICC (International Color
Consortium) [1] usada nos perfis de cor
• A sequência de operações é:
1. Aplicação de uma “Tone Response Curve” em cada um dos
canais R, G e B isoladamente
2. Transformação do RGB resultante da etapa anterior em Lab
através de uma matriz 3x3
– A matriz 3x3 converte para XYZ e depois as equações de XYZ para
Lab são usadas
3. Correção dos valores Lab através de uma função discreta de
interpolação Lab -> Lab
Tone Response Curve
• O objetivo da Tone Reponse Curve é acertar mapemanto de cada canal R, G e B nos valores de luminância corretos
• Isso é feito através de 3 splines cúbicas que corrigem os valores R, G e B para que fiquem proporcionais as coordenadas Y dos valores XYZ
• Essas 3 splines são construídas a partir dos 19 tons de cinza do padrão Q-14
• As splines são:
),,(' 11 rYYrrspliner nn
),,(' 11 gYYggsplineg nn
),,(' 11 bYYbbsplineb nn
Tone Response Curve
• Os valores Y das splines são suavisados por um filtro de Savitzky-Golay [2] para obtenção de transições de tons mais suaves nas fotografias
• Após a aplicação das “Tone Response Curves”, os tons neutros das imagens estão mapeados corretamente. Isto é, os tons de cinza da imagem tem a propriedade:
• O mapeamento correto dos tons de cinza é a correção mais importante a ser feita de uma imagem e usualmente é a primeira etapa em muitos workflows de processamento de imagens
''' bgr
Mapeamento linear
• O mapeamento linear obtém uma transformação linear entre os valores r’,g’ e b’ e os valores XYZ
• Visando preservar o balanceamento dos tons de cinza obtido no “Tone Response Curve”, foi empregado o método “White-Point preserving Least Squares Regression” [3] que faz um mapeamento linear dos valores RGB em XYZ que mantém os tons de cinza neutros
• Este método é uma variação da regressão de mínimos quadrados que atende a seguinte restrição:
• Onde Xw, Yw, Zw são as coordenadas do white-point da imagem
)1,1,1(),,( www ZYX
Mapeamento linear
• O mapeamento linear é construído da seguinte forma:
• Os valores Lab de referência são obtidos pelas equações normais de conversão de XYZ de referência para Lab [4]:
'
'
'
b
g
r
M
Z
Y
X
WPPLS
RGB
RGB
RGB
)(_ RGBLabXYZ XYZfrgbLab
Interpolação discreta
• A interpolação discreta é feita a partir de funções radiais [5], que
possuem a seguinte forma geral:
• Onde ||x|| é a norma euclidiana de x, xi são os valores discretos e
conhecidos de x e um exemplo de função radial é:
• Onde α é uma constante
)()(1
n
iii xxcxf
22)( xx
ki Rxx ,
Interpolação discreta
• Como temos que fazer um mapeamento do R3 no R3, na forma:
• Precisamos de 3 funções radiais:
entradaentrada baLbaL ),,(),,(
)__(1
n
iipixelicorrigido rgblabrgbLabclL
)__(1
n
iipixelicorrigido rgblabrgblabcaa
)__(1
n
iipixelicorrigido rgblabrgblabcbb
Função radial
• Os coeficientes ci de cada uma das 3 interpolações são obtidos da
seguinte forma:
• Seja Vc um vetor formado pelos coeficientes ci e os vetores VL Va Vb
formado pelas coordenadas L, a e b dos valores Lab de referência
do RGB do target:
n
cbcacl
c
c
V 1
,,
n
L
refL
refL
V
_
_ 1
n
a
refa
refa
V
_
_ 1
n
b
refb
refb
V
_
_ 1
)_,_,_(_ iiii refarefarefLrefLab
Função Radial
• Seja MR a matriz obtida pela aplicação da função radial nas distâncias euclidianas entre todas as n coordenadas Lab obtidas a partir dos valores RGB do padrão Q-14:
)()()(
)()(
)()()(
21
2212
12111
nnnn
n
R
lablablablablablab
lablablablab
lablablablablablab
M
Função Radial
• Podemos dizer que:
• Com isso:
cbcaclRbaL VMV ,,,,
baLRcbcacl VMV ,,1
,,
Geração da imagem RGB corrigida
• A partir dos valores Lab corrigidos, os valores XYZ corrigidos são obtidos:
• A partir dos valores XYZ corrigidos, os valores RGB do espaço Prophoto
são gerados, segundo a sua especificação [6] (anteriormente conhecido
como ROMM RGB):
)( corrigidoXYZLabcorrigido LabfXYZ
corrigido
corrigido
corrigido
ophoto
corrigido
corrigido
corrigido
Z
Y
X
M
B
G
R
Pr'
'
'
8.1'
8.1'
8.1'
)(
)(
)(
corrigido
corrigido
corrigido
corrigido
corrigido
corrigido
B
G
R
B
G
R
Geração da imagem RGB corrigida
• O espaço Prophoto RGB foi escolhido por causa do seu grande
gamut, visando evitar ao máximo clipping de cores durante o
mapeamento XYZ para RGB final.
• Em função do grande gamut e para evitar posterização nas
imagens, o programa gerou imagens em 16 bits/pixel.
Testes com câmeras digitais
• Visando testar o procedimento de correção em um ambiente controlado, foi gerada uma imagem a partir de uma câmera digital contendo além do Target Q-14 da Kodak, o target ColorChecker SG da GretagMacbeth
• O Colorchecker SG foi especialmente desenvolvido para a medição de câmeras digitais e possui 140 cores cujos valores Lab são conhecidos
• O Colorchecker SG será usado para avaliar a precisão do procedimento de correção de cores
Antes de depois
• As imagens antes e depois do processamento:
Antes Depois
Medidas do teste
• Foi avaliado o erro em cada uma das 140 amostras de cor do Colochecher SG
• Também foi avaliado a neutralidade das cores dos tons de cinza
• A fórmula do cálculo do erro é:
222 )()()( imagemrefimagemrefimagemref bbaaLLE
Resultados do teste
Imagem Erro médio Erro máximo
Original 10.6 45.3
Mapeamento
Linear5.52 34.5
Mapeamento
Linear + Radial5.82 31.4
• Resultado do teste nas 140 amostras
Comentários
• O erro médio diminuiu a metade nos dois mapeamentos
• O erro médio estando abaixo de 6 Delta-E é considerado aceitado pela indústria de reprodução gráfica
• Embora o mapeamento radial apresente um erro médio um pouco superior ao mapeamento linear, o mapeamento radial apresenta um melhor mapeamento nos tons neutros
Referências
[1] International Color Consortium, “Image technology colour management — Architecture, profile format, and data structure”, http://www.color.org/ICC1v42_2006-05.pdf
[2] Press, William H. et al., “Numerical Recipes in C”, second edition, Cambridge University Press
[3] Finlayson, Graham et al., “Constrained least-squares regression in color spaces”, Journal of Electronic Imaging 6(4), Outubro de 1997
[4] http://www.brucelindbloom.com/index
[5] Qiao, Yue et al., “Developing a Computational Radial Basis Function (RBF) Architecture for Nonlinear Scattered Color Data, 22nd International Conference on Digital Printing Technology, Society for Imaging Science and Technology, 2006
[6] http://www.color.org/rommrgb.pdf