Trabalho de Cores Correção de imagens de quadros do Portinari.
Transcript of 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