Dobra, to po kawałku:
Wykresów i wyliczeń nie tworzę bo nie umiem, a Janusz w pierwszym poście zamieścił wszystkie wymagane i poprawnie.
Dla uproszczenia weźmy tylko średnią szarość.
Średnia szarość to taka, która leży pomiędzy czernią a bielą przy danym oświetleniu. 100% to biel, 0% to czerń. 50% (widzialne) to średnia szarość.
Tak się składa, że aby widzieć te 50%, to powierzchnia w tym kolorze musi odbijać 18% światła (biała odbije 100%, czarna nic) Nie istotne, czy to jest jakaś tam szara scena, piasek, asfalt, czy odbitka zdjęcia zawierająca powyższe - 50% szare odbija 18% światła, koniec, korpka.
Plik graficzny monochromatyczny 8 bitowy, zawierający informację o powyższej scenie będzie czarne fragmenty opisywał wartością 0, białe 255, a szare 128.
Pliku oczywiście zobaczyć nie możemy, ale możemy go wyświetlić lub wydrukować, zatem:
- sprawą monitora jest to, by wyświetlił tak, by to szare świeciło 18% pełnej jego mocy, 100% wyemituje reprezentując biel. Do tego służy gamma monitora, która jest w postaci funkcji wykładniczej. 0.5^(2.4) =~ 0.19 (to, że gammę dobiera się nieco inną wynika zapewne też z nieliniowych charakterystyk monitora)
- problemem drukarki za to jest, aby w miejscu gdzie w pliku była wartość 128 nałożyć tyle farby na papier, aby odbiła 18% światła.
Teraz matryca, w uproszczeniu, niechaj będzie 8 bitowa monochromatyczna.
Rejestruje liniowo w 8 bitach. Przyjmijmy, że mamy warunki pozwalające ją w pełni wykorzystać, czyli bez przepaleń i bez niedoświetleń. Tam gdzie było 100% światła zarejestruje jako swoje 100% czyli 255, tam gdzie 50% - jako 128, ale tam gdzie my widzieliśmy średnio szare, czyli 18% światła - matryca zapisze jedynie wartość 46.
A przypomnijmy sobie teraz, jaką wartość powinien zawierać 8 bitowy, monochromatyczny plik, żebyśmy widzieli 50% szarość?
O ile pamiętam, to było 128. 46 będzie dla nas znacznie ciemniejsze. Zatem dane z matrycy przekształcamy funkcją zbliżoną do logarytmu x^(1/gamma), czyli upychamy całość w przedziale [0,1] i mamy: 0.18^(1/2.5) =~0.5.
Już jasne?