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:
( ri , g i , bi )  
  ( X i , Yi , Z i )
Associado
i  1 n 
•
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
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
–
3.
A matriz 3x3 converte para XYZ e depois as equações de XYZ para
Lab são usadas
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:
r '  spline ( r1  rn , Y1  Y n , r )
g '  spline ( g 1  g n , Y1  Y n , g )
b '  spline ( b1  b n , Y1  Y n , b )
Tone Response Curve
•
•
Os valores Y das splines são suavisados por um filtro de SavitzkyGolay [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:
r '  g '  b'
•
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
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:
(X
•
w
, Y w , Z w )  (1,1,1)
Onde Xw, Yw, Zw são as coordenadas do white-point da imagem
Mapeamento linear
•
O mapeamento linear é construído da seguinte forma:
 X RGB

Y
 RGB
 Z RGB
•


 M W PPLS


r ' 
 
g'
 
 b ' 
Os valores Lab de referência são obtidos pelas equações normais de
conversão de XYZ de referência para Lab [4]:
Lab _ rgb  f XYZ  Lab ( XYZ
RGB
)
Interpolação discreta
•
A interpolação discreta é feita a partir de funções radiais [5], que
possuem a seguinte forma geral:
n
f ( x) 
 c(
i
x  xi )
x , xi  R
k
i 1
•
Onde ||x|| é a norma euclidiana de x, xi são os valores discretos e
conhecidos de x e um exemplo de função radial é:
 ( x) 
•
Onde α é uma constante
x 
2
2
Interpolação discreta
•
Como temos que fazer um mapeamento do R3 no R3, na forma:
( L , a , b ) entrada  ( L , a , b ) entrada
•
Precisamos de 3 funções radiais:
n
L corrigido 
 cl  ( Lab
_ rgb
 ca  ( lab
_ rgb
pixel
 lab _ rgb i )
 cb  ( lab
_ rgb
pixel
 lab _ rgb i )
i
pixel
 lab _ rgb i )
i 1
n
a corrigido 
i
i 1
n
b corrigido 
i
i 1
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:
Lab _ ref i  ( L _ ref i , a _ ref i , a _ ref i )
V cl , ca , cb
 L _ ref 1 
 c1 


 
VL 

 


 
 L _ ref n 
 c n 
 a _ ref 1 


Va 



 a _ ref n 
 b _ ref 1 


Vb 



 b _ ref n 
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:
MR
  ( lab 1  lab 1 )  ( lab 1  lab 2 )   ( lab 1  lab n

 ( lab 2  lab 1 )  ( lab 2  lab 2 )








 ( lab n  lab 1 )  ( lab 2  lab n )   ( lab n  lab n
)




) 
Função Radial
• Podemos dizer que:
V L , a ,b  M
R
 V cl , ca , cb
• Com isso:
V cl , ca , cb  M
1
R
 V L , a ,b
Geração da imagem RGB corrigida
•
A partir dos valores Lab corrigidos, os valores XYZ corrigidos são obtidos:
XYZ
•
corrigido
 f Lab  XYZ ( Lab corrigido )
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):
R
 '
 G corrigido
B'
 corrigido
'
corrigido


 M


Pr ophoto
 X corrigido

Y corrigido

 Z corrigido





R corrigido  ( R corrigido )
1 .8
G corrigido  ( G corrigido )
1 .8
B corrigido  ( B corrigido )
1 .8
'
'
'
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 é:
E 
( L ref  L imagem )  ( a ref  a imagem )  ( b ref  bimagem )
2
2
2
Resultados do teste
• Resultado do teste nas 140 amostras
Imagem
Erro médio
Erro máximo
Original
10.6
45.3
Mapeamento
Linear
5.52
34.5
Mapeamento
Linear + Radial
5.82
31.4
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
Download

cores_portinari - PUC-Rio