Seniau minėjau, kad RGB matrica neteisingai perduoda pustonius. Kiek pasiknaisiojes internete radau terminą “gamma correction” kuri naudojama manau visuose displėjuose. Vikipedija davė didelį straipsnį ir net baisuoklišką formulę kaip skaičiuojama gama (γ):
Tačiau man reikėjo paskaičiuoti ne pačią gamą, bet korekcinę lentelę. Po trumpos paieškos radau šį algoritmą:
brightness = (255# * ((x / 255#) ^ (1# / gama))) + 0.5
Parašiau trumpą programėlę ROM reikšmių lentelės generavimui, o lentelė vėliau įrašoma į FPGA. Va jums ekrano fotkė. (kažkaip patiko fotkinti ekraną o ne spausti print screen 🙂 )
Toliau bus keletas matricos nuotraukų su įvairiom gamma reikšmėm. Man labiausiai patiko reikšmės tarp γ=2 ir γ=3. Primenu, kad tiesinė priklausomybė (γ=1) jau išbandyta ankščiau ir rezultatas buvo blogas.
Spauskit ant nuorodos:
Gamos (γ) variacijos:
γ=0.5
γ=1.0
γ=2.0
γ=2.5
γ=4.0
γ=5.0
Yay, suveike!
Daug kur naudojama gama 2.2
Blemba tu superinis, žavi mane tavo sumanumas.. Apsigimei buti elektroniku, niekur nedingsi, liux
Yep, dinaminis diapazonas prastokas.
Galvočiau apie 2.2 reikšmę ir gal netiesiškai kvantuoti iki 6 bitų prieš Gamma korekciją – turėsi daugiau erdvės tamsiems pustoniams.
Dinaminis diapazonas kiek pamažintas ir dėl mano kaltės. Dabar naudoju 64 lygius kiekvienai spalvai, nes jei bandyti daugiau, tai pradeda matytis mirgėjimas.
Gal realybėje kiek geresnis vaizdelis, nes fotoaparatas kiek supanikuoja kai fotkina tiek daug šviečiančių diodų.
Puiku. Matyti progresas 😉