Tone mapping

Tone Mapping - egy olyan technikát felhasználni, hogy a kép a nagy dinamikatartományú (HDR), amely nem ábrázolható a számítógép képernyőjén, egy szűkebb körének [0; 1].

Ha csak trim szín ezeket a határokat, akkor nagyon valószínű, hogy nem lesz beszerezhető betudni képet, ezért ki kell választani egy adott tartományban átalakítására. Ez úgy valósítható meg, az átlag számításához a kép fényerejét, a hisztogram vagy azáltal, hogy a felhasználói input, stb Szintén a számítógépes grafika lehetővé teszi a fényerő az előző keret, és a fényerő, amit használnak, hogy „virtuális szem” játékos.

Nézzük meg részletesebben, hogy milyen módon Tone Mapping.

1) konvertálása színt (RGB) a fényerőt (fényerősség).
Az XYZ szín modell, Y a fényerő-érték tehát
Lw = Y = M21 * R + M22 * G + M23 * B,
ahol M22, M22, M23 - line 3x3 mátrix transzformációs RGB színtérben -> XYZ, specifikus egy speciális megjelenítő eszköz. Az sRGB színteret, amelyek megfelelnek a monitorok többsége „otthon” használatára,
Lw = Y = 0.212671 * R + 0,71560 * G + 0,072169 * B,
Gyakran használják
Lw = 0,27 * R + 0,67 * G + 0,06 B.

2) kiszámítása az átlagos fénysűrűség értékeket (Laverage).
N - pontok száma a képen
W (x, y) - az érték a „világ» HDR fényerősség pont x, y

a) átlagolt logaritmikus.
Laverage = exp (1 / n * összege 1. N (ln (epszilon + Lw (x, y)))
epszilon - egy kis értéket, hogy elkerülje a szingularitás a ponton LN (0)
b) átlagolás.
Laverage = összege 1. N (Lw (x, y)) / N,

3) átalakítása egy HDR kijelző dinamikus tartomány [0..1] - LD (x, y).
L (x. Y) = (a / Laverage) * Lw (x, y),
reskeyl Lw (x, y) képest az átlagos fénysűrűség értékeket,
egy - együttható, amely lehetővé teszi vezérlő kompressziós HDR karakter tartományban, jellemzően - 0,18

RGB (x, y) = nRGB (x, y) * Lw (x, y) - RGB pixel értéke
nRGB (x, y) = RGB (x, y) / Lw (x, y) - normalizált RGB érték
dRGB (x, y) - RGB értéket kap a dinamikus tartomány [0. 1]

konverziós funkciók:
a) LD (x, y) = L (x, y) / (1 + L (x, y))
majd:
dRGB (x, y) = nRGB (x, y) * LD (x, y) = (nRGB (x, y) * Lw (x, y)) * (a / Laverage) / (1 + L (x, y)) =
= RGB (x, y) * (A / Laverage) * (1 / (1 + L (x, y))

b) LD (x, y) = L (x, y) * (1 + L (x, y) / Lwhite ^ 2) / (1 + L (x, y))
Lwhite - maximális fényerőt, ami megjelenik a fehér színű, a felső határ a dinamikai tartomány a monitort.
majd:
dRGB (x, y) = (nRGB (x, y) * Lw (x, y)) * (A / Laverage) * ((1 + L (x, y) / Lwhite ^ 2) / (1 + L ( x, y)) =
RGB (x, y) * (A / Laverage) * ((1 + L (x, y) / Lwhite ^ 2) / (1 + L (x, y))

Egy példa a tone mapping shader megtalálható a DirectX SDK példa HDR világítás és NVidia SDK.

Mi a Tone Mapping?

Kapcsolódó cikkek