Dėmelės, MTF, kontrastas ir smulkios detalės

Pradesiu nuo ten kur baigiau ankstesnį įrašą:
Taškinio šaltinio suformuotos dėmelės dydis priklausomai nuo šaltinio atstumo iki lęšio (paspaudus didinasi)
Peržiūrėkim visas kreives iš eilės:
  1. Žalia kreivė sako, kad objekto esančio atstumu, lygiu ketvirtadaliui atstumo iki fokusavimo taško (0.25*focused), paviršiaus taškai bus "piešiami" sensoriuje ~15 celių (pikselių) dydžio vaizdo dėmelėmis.
  2. Mėlyna kreivė sako, kad objekto esančio atstumu, lygiu du trečdaliai atstumo iki fokusavimo taško (0.66*focused), paviršiaus taškai bus "piešiami" sensoriuje ~2 celių (pikselių) dydžio vaizdo dėmelėmis, t.y. maždaug septynis kart mažesnėmis negu paminėtomis 1-me punkte.
  3. Magenta kreivė sako, kad sufokusuoto objekto (focused), paviršiaus taškai bus "piešiami" sensoriuje 1 celės (pikselio) dydžio vaizdo dėmelėmis. 
  4. Šviesiai mėlyna kreivė sako, kad objekto esančio du kart toliau už fokusavimo tašką (2*focused), paviršiaus taškai bus "piešiami" sensoriuje ~2 celių (pikselių) dydžio vaizdo dėmelėmis, t.y. praktiškai taip pat, kaip ir 2-me punkte paminėtu atveju.
  5. Ruda kreivė sako, kad objekto esančio dešimt kart toliau už fokusavimo tašką (10*focused), paviršiaus taškai bus "piešiami" sensoriuje ~5 celių (pikselių) dydžio vaizdo dėmelėmis, arba 2.5 didesnėmis, kaip ir 4-me punkte paminėtu atveju.
Ir kas iš to, paklausite? Sąvoka "piešiančios dėmelės" - skamba beveik kaip "piešimas teptukais" - yra netgi labai tinkama tam paaiškinti: kuo didesnė dėmelė ("teptukas"), tuo sudėtingiau išgauti smulkias detales - visi kas piešėte vaikystėje teptukais manau dar pamenate. Klausimas tik kaip pamatuoti: kiek tų detalių gausime su "piešdami" konkretaus dydžio dėmele?

Šiaip jau parašyti programėlę, kuri suvidurkintų tam tikro vaizdelio taškus, nėra labai sudėtinga. Iš eilės vidurkinamų taškų skaičius imituotų dėmelės, piešiančios atvaizdo vieną pikselį, dydį. Sunkiau yra pamatuoti, tai kiek gi detalių tokiu būdu gaunam. Beieškodamas atsakymo aptikau puslapį apie Modulation Transfer Function arba dar sutrumpintai vadinamą MTF. Kas tyrinėjo objektyvų veidrodiniams fotoaparatams charakteristikas manau tikrai susidūrė su šia santrupa - šios funkcijos matavimai naudojami įvertinti kokią skiriamąją gebą gali užtikrinti optika.

MTF mechanizmus paaiškinanti matematika nėra labai paprasta, tad net nebandysiu į ją gilintis šiame įraše. Bet pačią MTF reikšmę paskaičiuoti tam tikrais atvejais pasirodo nėra jau taip ir sunku: imam tam tikro dydžio (erdvinio dažnio) detales ir jų kontrastą daliname iš stambiausių (žemiausio dažnio) detalių kontrasto ir paverčiam į procentus. Gaunam detales atitinkančio erdvinio dažnio MTF reikšmę. Smulkesnės detalės turi aukštesnį erdvinį (angl.: spatial) dažnį - jų daugiau ir jos kartojasi dažniau - negu stambios detalės. Kai detalės nyksta sakom "vaizdas liejasi" - šios smulkiosios detalės nyksta ir pilkėja, susiliedamos su aplinka. Arba galima būtų pasakyt, kad smulkių detalių kontrastas mažėja. Įdomu yra tai, kad yra išskirta pora MTF ribinių reikšmių:
  • 50% riba kai pradedamas pastebėti vaizdo aštrumo trūkumas;
  • 9% riba kuri apsprendžia galimybę atskirti du objektus Rayleigh kriterijaus prasme.
Pastarosios ribos apibrėžimas iš esmės sako, kad jeigu tam tikro dydžio detalių kontrastas nukrenta žemiau 9% nuo didžiausio viso vaizdo kontrasto, tai nebelieka galimybės jas iš išskirti. Bingo - tiksliai tai, ko man ir reikėjo!

Taigi, vėl simuliacija: sintezuoju vaizdą, kuriame būtų tiek stambių, tiek smulkių detalių. Vaizdo pikselius praleidžiam per sumavimo-vidurkinimo algoritmą ir gaunam vaizdo "projekciją". Simuliacijai pasirinkau matyt klasikinį taikinį: besikeičiančio periodo sinusoidę atitinčią ryškumo "liniuotę". Sinusoidės periodas nuo krašto iki centro pasikeičia 100 (šimtą) kartų - centre jis yra maždaug šimtą kart trumpesnis, negu kraštuose. Tai tuo pačiu reiškia ir tai, kad centre yra 100 kart smulkesnės detalės negu kraštuose. Detalumas nuo stambių detalių iki smulkių keičiasi pagal eksponentinį dėsnį - kuo arčiau centro, tuo greičiau detalės smulkėja. Pradinis vaizdas yra 50000 TŠŠ pločio ir projektuojamas-spaudžiamas taškų vidurkinimo pagalba "nuotraukoje" iki 1200px.  O kad būtų lengviau susigaudyti, kokie efektai gaunasi, šalia pridėjau su tuo pačiu vaizdeliu susietų, bet kažkokiu kitokiu būdu apdorotų juostų - štai visa legenda:
Diagramos legenda (spausti norint matyti normaliu dydžiu)
Taigi diagramoje yra dvi  iš pirmo žvilgsnio beveik identiškos zonos. Viršutinė atitinka vaizdo vidurkinimo simuliacijos palyginimą su 50% MTF reikšme, o apatinė - su 9% MTF reikšme.
Kiekvienoje zonoje yra (iš viršaus žemyn):
  • MTF vertę atitinkanti pilka juostelė-indikatorius, parodanti nuo kur iki kur nuotraukoje kontrastas yra žemesnis už atitinkamą MTF ribinę reikšmę.
  • Juosta atitinkanti pradinį vaizdą su fiksuotu matuojamą MTF reikšmę atitinkančiu kontrastu. Šioje juostoje vienodai yra neryškios tiek stambios, tiek smulkios detalės.
  • Dėmelės dydį atitinkanti pradinio vaizdo projekcija - "nuotrauka".
  • Didžiausio kontrasto vaizdas palyginimui, kai vidurkinimo dėmelės dydis lygus vienai celei.

O štai ir pati diagrama animuotame pavidale:
Paspaudus atsidarys animuotas GIF iliustruojantis dėmelės dydžio įtaką detalumui
Pastebėjimai:
  1. Ties 50% MTF riba aiškiai matomas prastesnis "nuotraukos" negu "originalo" kontrastas.
  2. Ties 9% MTF riba "nuotrauka" išsilieja ir toliau tonai apsiverčia: šviesios zonos tampa tamsiomi, o tamsios - šviesiomis. Tai labai gerai matosi lyginant su etaloniniu didžiausio kontrasto vaizdeliu.Atsivertę mano įkyriai minimos knygelės 44 puslapį rasite, kaip šis efektas atrodo paprastame analoginiame kadre. Ten pat rasite ir šio efekto paaiškinamą per pradinio vaizdo ir projekcinės dėmelės sąsūką (angl. k.: convolution). Tos "apverstos" juostelės matomos už detalių išnykimo ribos yra ne tikrųjų detalių, esančių tame taške, atvaizdas, bet šalia esančių juostų atspindžiai - tai logiškai seka iš sąsūkos apibrėžimo.
Šiuo konkrečiu atveju gavau štai tokį dėmelės dydžio ryšį su vaizde įžiūrimų smulkiausių (MTF ~9%) ir stambiausių (MTF 100%) detalių santykiu:
Dėmelės dydisfmax/fminCiklo ilgisMin. detalė
1 px1002.2 px1 px
2 px902.4 px1 px
3 px663.3 px2 px
5 px405.5 px3 px
7 px297.6 px4 px
9 px2210.0 px5 px
11 px1812.2 px6 px
15 px1415.7 px8 px
21 px1022.0 px11 px
čia fmax/fmin yra santykis tarp išskiriamų smulkiausių detalių ir stambiausių detalių pasikartojimo dažnių (pats dažnis yra atvirkščiai proporcingas detalių dydžiui); ciklo ilgis - sinusoidės periodo ilgis MTF 9% ribos taške; min. detalė - mažiausios nuotraukoje išskiriamos detalės dydis (apytiksliai pusės ciklo dydžio).

Lentelėje galima įžiūrėti dėsningumą, kurį norėdamas išsiaiškinti ir pradėjau rašyti šį įrašą: nuotraukoje išskiriamos detalės yra ne mažesnės kaip pusės TŠŠ formuojamos dėmelės dydžio. Ir tai su sąlyga, kad su detale kontrastuojančios aplinkos dydis yra ne mažesnis, kaip pati detalė.

Dabar tereikia sudėti į vieną loginę visumą minimalios objekto detalės sąvoką iš ankstesnio įrašo bei čia išsiaiškintą TŠŠ dėmelės diktuojamą minimalios detalės dydį nuotraukoje ir galėsiu pradėt nagrinėti kas kaip ir kodėl gaunasi fokusuotai arba ne.

0 comments: