• No results found

”mother wave“)

2.5 Jednopixelov´ a kamera

Metoda CASSI samozˇrejmˇe nen´ı jedin´ym pˇr´ıstupem, jak prov´adˇet komprimovan´e sn´ım´an´ı. Dalˇs´ı v´yznamnou metodou je sn´ım´an´ı pomoc´ı takzvan´e jednopixelov´e ka-mery.

Pˇri t´eto metodˇe je sc´ena zaznamen´av´an na detektor o jednom pixelu skrz mˇen´ıc´ı se n´ahodnou masku (respektive pseudon´ahodnou masku, protoˇze podm´ınkou pro rekonstrukci obrazu je naˇse znalost jednotliv´ych masek), kter´a propouˇst´ı jen ˇc´ast z´aˇren´ı (viz obr´azek 2.6). Detektor takto postupnˇe zaznamen´av´a celkovou intenzitu obrazu pro nˇekolik tˇechto masek a my jsme n´aslednˇe schopni ze znalosti tˇechto inten-zit a toho, jak vypadaj´ı pˇr´ısluˇsn´e masky, pomoc´ı r˚uzn´ych algoritm˚u rekonstruovat p˚uvodn´ı obraz.[16,17]

Jednou z moˇznost´ı jak ˇreˇsit tento pˇr´ıstup je napˇr´ıklad zaˇr´ızen´ı DMD (Digital micro-mirror device), kde se nach´az´ı mnoˇzstv´ı mal´ych zrc´atek, kter´e mohou b´yt nastaveny do dvou poloh, bud’ odr´aˇz´ı svˇetlo na detektor nebo ne. D´ıky tomu n´am vznik´a maska, kterou m˚uˇzeme pomˇernˇe rychle mˇenit a snadno zaznamen´avat, v jak´em m´ıstˇe svˇetlo propouˇst´ı a v jak´em ne.

Obecnˇe je v´yhodou jednopixelov´ych kamer jejich cena, oproti CASSI zde m´ame detektor o jednom pixelu, kter´y bude vˇetˇsinou levnˇejˇs´ı a snazˇs´ı na v´yrobu, neˇz ploˇsn´y 2D detektor pouˇz´ıvan´y u CASSI. Naopak nev´yhodou je rychlost, se kterou jsme schopni sn´ımat. Na rozd´ıl od CASSI, kde celou sc´enu zaznamen´av´ame jedn´ım mˇeˇren´ım, zde jich mus´ıme prov´est vˇetˇs´ı mnoˇzstv´ı. Z´aroveˇn vˇsak st´ale prov´ad´ıme m´enˇe mˇeˇren´ı, neˇz kdybychom pouˇz´ıvali klasick´e postupy a mˇeˇrili sc´enu pixel po pi-xelu. Napˇr´ıklad podle publikace [17] je moˇzn´e barevnou sc´enu o rozmˇerech 256×256 pixel˚u (celkovˇe 65536 pixel˚u) rekonstruovat pomoc´ı 6500 mˇeˇren´ı jednopixelovou ka-merou.[16,17]

Obr´azek 2.6: Konstrukce syst´emu pro sn´ım´an´ı jedopixelovou kamerou - jako n´ahodnou masku je moˇzn´e vyuˇz´ıt napˇr´ıklad soustavu zrc´atek (pˇrevzato z [18])

2.6 CMOS komprimovan´ e sn´ım´ an´ı

Dalˇs´ım pˇr´ıkladem, jak aplikovat komprimovan´e sn´ım´an´ı, je napˇr´ıklad metoda vyuˇz´ıvaj´ıc´ı matici CMOS sn´ımaˇc˚u. Konstrukce t´eto metody je n´asleduj´ıc´ı (viz obr´azek 2.7 pˇrevzat´y z [19]), v ploˇse je um´ıstˇeno N × N pasivn´ıch (tvoˇreny pouze fotodiodou) CMOS sn´ımaˇc˚u, kde kaˇzd´y je propojen se sv´ym sousedem klopn´ym obvodem (po-sledn´ı je pak propojen opˇet s prvn´ım) schopn´ym uchov´avat 1 bit informace, ˇc´ımˇz cel´a s´ıt’ tvoˇr´ı jednoduch´y posuvn´y registr. Pokud tedy na prvn´ı sn´ımaˇc pˇrivedeme informaci, cel´a sekvence uloˇzen´a v posuvn´em registru se posune o jednu pozici (ve skuteˇcnosti se vˇsak cel´a sekvence pouze

”toˇc´ı“ dokola, protoˇze do prvn´ıho pixelu pos´ıl´ame informaci z toho posledn´ıho). [19]

Pˇred samotn´ym mˇeˇren´ım je do posuvn´eho registru uloˇzena pseudon´ahodn´a sekvence, kter´a je n´am zn´am´a. N´aslednˇe probˇehne prvn´ı mˇeˇren´ı, kde kaˇzd´y CMOS senzor vy-bud´ı urˇcit´y elektrick´y proud v z´avislosti na intenzitˇe svˇetla, kter´a na nˇeho dopad´a.

Znam´enko tohoto proudu je upraveno podle bitu, kter´y je v t´e chv´ıli na klopn´em obvodu pˇr´ısluˇs´ıc´ıho dan´emu pixelu. N´aslednˇe je proud veden pomoc´ı vodiv´eho dr´atu spojuj´ıc´ıho jednotliv´e sloupeˇcky pixel˚u do zesilovaˇce. V´ystup zesilovaˇce je n´aslednˇe pˇreveden na digit´aln´ı hodnotu, seˇcten s ostatn´ımi v´ystupy zesilovaˇc˚u pˇr´ısluˇs´ıc´ıch ostatn´ım sloupeˇck˚um a tato hodnota je uloˇzena. V dalˇs´ım kroku je pak posunuta informace z posledn´ıho klopn´eho obvodu na prvn´ı a cel´a sekvence uloˇzen´a v registru se tak posune a sn´ım´an´ı m˚uˇze probˇehnout znovu.[19]

Sn´ım´an´ı vˇsak neprob´ıh´a po kaˇzd´em posunut´ı, ale pouze v n´ahodn´ych (respektive pseudon´ahodn´ych) momentech. V´ysledky z jednotliv´ych mˇeˇren´ı se ukl´adaj´ı a pot´e, co probˇehne N2 posunut´ı registru (N2 je poˇcet naˇsich senzor˚u) a cel´y syst´em se tedy dostane do v´ychoz´ıho stavu, m˚uˇze probˇehnout rekonstrukce obrazu. Cel´y proces je

Obr´azek 2.7: Konstrukce soustavy na sn´ım´an´ı pomoc´ı CMOS komprimovan´eho sn´ım´an´ı (pˇrevzato z [19])

v podstatˇe analogi´ı k jednopixelov´e kameˇre, avˇsak zde odpadaj´ı nˇekter´e probl´emy spojen´e s optikou jako je napˇr´ıklad r˚uzn´a odrazivost kaˇzd´eho zrcadla, spr´avn´a fo-kusace paprsk˚u a podobnˇe. Podle publikace [19] staˇc´ı u t´eto metody na velmi pˇresnou rekonstrukci obrazu N2/3 mˇeˇren´ı.[19]

3 Hyperspektr´ aln´ı detekˇ cn´ı syst´ em

3.1 Z´ akladn´ı popis

Hyperspektr´aln´ı detekˇcn´ı syst´em viditeln´eho spektra, zkr´acenˇe HDES-VIS (d´ale jen HDES), je soustava vyuˇz´ıvaj´ıc´ı metodu CASSI, na kter´e jsem prov´adˇel vˇsechna mˇeˇren´ı. V tuto chv´ıli se jedn´a zat´ım o nedokonˇcen´y projekt ve v´yzkumn´em centru TOPTEC.

Pro sn´ım´an´ı i rekonstrukci obrazu je zde pouˇz´ıv´an software MATLAB.

3.1.1 Optick´ a soustava

Pˇri v´yrobˇe soustavy bylo c´ıleno pˇredevˇs´ım na dostupnost jednotliv´ych ˇcoˇcek a tud´ıˇz i jejich cenu. Vˇetˇsinu pouˇzit´ych optick´ych element˚u lze tedy bˇeˇznˇe zakoupit.[20]

Konstrukci optick´e soustavy lze rozdˇelit do dvou ˇc´ast´ı a to ˇc´asti vstupn´ı nach´azej´ıc´ı se pˇred maskou pro modulaci sign´alu a ˇc´asti disperzn´ı nach´azej´ıc´ı se za modulaˇcn´ı maskou (viz obr´azek 3.1).

Vstupn´ı ˇc´ast se v p˚uvodn´ım n´avrhu skl´adala ze syst´emu pˇeti ˇcoˇcek s jednou mo-dulaˇcn´ı maskou. Moment´alnˇe se vˇsak vyuˇz´ıv´a dvou masek a nam´ısto syst´emu pˇeti ˇcoˇcek jako vstupn´ı ˇc´asti pouˇz´ıv´ame dvˇe konvexn´ı ˇcoˇcky, pˇred kter´ymi se nach´az´ı nastaviteln´a ˇstˇerbina se st´ın´ıtkem a difuzor. ˇCoˇcky jsou um´ıstˇeny tˇesnˇe nad sebe a to z toho d˚uvodu, ˇze vyuˇz´ıv´ame dvou modulaˇcn´ıch masek, takt´eˇz um´ıstˇen´ych nad sebe, a vyˇzadujeme, aby skrz obˇe masky proch´azel stejn´y obraz. Ke spr´avn´emu zob-razen´ı obou obraz˚u tak´e pˇrisp´ıv´a ˇstˇerbina, kter´a mus´ı m´ıt spr´avnou velikost, jinak bychom vidˇeli bud’ pˇrekr´yvaj´ıc´ı se obrazy (v pˇr´ıpadˇe, ˇze by byla pˇr´ıliˇs velk´a) nebo dva ˇc´asteˇcn´e obrazy (za pˇredpokladu, ˇze by byla ˇstˇerbina pˇr´ıliˇs mal´a). Pˇred ˇstˇerbinu je tak´e moˇzn´e um´ıstit difuzor, kter´y vyuˇz´ıv´ame pˇri pr´aci s laserem.

Za dvojˇcoˇckou, co nejbl´ıˇze k disperzn´ı ˇc´asti soustavy, je takt´eˇz um´ıstˇen kolektor (anglicky

”field lens“), coˇz je konvexn´ı spojn´a ˇcoˇcka, kter´a zajiˇst’uje, aby paprsky, kter´e vych´az´ı z dvojˇcoˇcky pod pˇr´ıliˇs velk´ym ´uhlem, dopadaly na masku, potaˇzmo na detektor.

Druhou ˇc´ast soustavy tvoˇr´ı disperzn´ı ˇc´ast (viz obr´azek 3.1 a tabulka 3.1), kde je zachycen´y obraz, kter´y proˇsel skrz modulaˇcn´ı masku, pomoc´ı difrakˇcn´ı mˇr´ıˇzky rozm´ıtnut na detektor obdobnˇe jako je uk´az´ano na obr´azku 2.4. Mimo difrakˇcn´ı mˇr´ıˇzky je zde tak´e optick´y hranol, kter´y vˇsak neslouˇz´ı prim´arnˇe pro rozklad spek-tra, ale pro zalomen´ı paprsk˚u tak, aby byly v ide´aln´ım pˇr´ıpadˇe opˇet rovnobˇeˇzn´e

Obr´azek 3.1: Disperzn´ı ˇc´ast optick´e soustavy (L - ˇcoˇcka, D - optick´y dublet, P -hranol, G - difrakˇcn´ı mˇr´ıˇzka, M - modulaˇcn´ı maska) - pˇrevzato z [20]

Tabulka 3.1: Seznam optick´ych element˚u v disperzn´ı ˇc´asti optick´e soustavy (L -ˇcoˇcka, P - hranol, G - difrakˇcn´ı mˇr´ıˇzka, D - dublet),

”Inf“ znamen´a nekoneˇcn´y polomˇer, tud´ıˇz rovn´y povrch (pˇrevzato z [20])

s optickou osou. Stejnˇe jako u vstupn´ı ˇc´asti i zde byl kladen d˚uraz na dostupnost a relativnˇe n´ızkou cenu vˇsech optick´ych element˚u a mimo hranol a ˇcoˇcku L2, kter´e byly vytvoˇreny na zak´azku, je zbytek optick´ych element˚u bˇeˇznˇe dostupn´ych. Na v´ystupu t´eto ˇc´asti je pak detektor kamery.

3.1.2 Detektor

Jak jiˇz bylo zm´ınˇeno v´yˇse, v aktu´aln´ı sestavˇe vyuˇz´ıv´ame dvou obraz˚u nad sebou, coˇz sice znamen´a, ˇze zaznamen´av´ame vˇetˇs´ı mnoˇzstv´ı dat, nicm´enˇe st´ale se pohybujeme ˇr´adovˇe v mnohem menˇs´ıch ˇc´ıslech, neˇz kdybychom nevyuˇz´ıvali komprimovan´eho sn´ım´an´ı a sn´ımali sc´enu pixel po pixelu. V´yhoda dvou obraz˚u n´am tedy v´yraznˇe zlepˇsuje samotnou rekonstrukci za cenu nepatrn´eho zpomalen´ı cel´eho procesu re-konstrukce.

D´ale tak´e u obou obraz˚u zaznamen´av´ame mimo prvn´ıho ˇr´adu difrakce tak´e nult´y

Obr´azek 3.2: Uk´azka vstupn´ıch dat z detektoru - v lev´e ˇc´asti je vidˇet spektr´alnˇe rozm´ıtnut´y prvn´ı ˇr´ad a v prav´e ˇc´asti je vidˇet nult´y ˇr´ad

ˇr´ad, kter´y v z´asadˇe vizu´alnˇe odpov´ıd´a sc´enˇe, kterou sn´ım´ame, coˇz n´am opˇet posky-tuje jistou v´yhodu pˇri rekonstrukci.

Jako detektor pouˇz´ıv´ame kameru Manta G-507B od v´yrobce Allied Vision o rozliˇsen´ı 2464 × 2056, kter´a vyuˇz´ıv´a CMOS senzory o velikosti 3,45 µm × 3,45 µm [21]. Sa-motn´e propojen´ı kamery s poˇc´ıtaˇcem je zajiˇstˇeno softwarem Matlab.

Jak vypadaj´ı vstupn´ı data, kter´a zaznamen´ame pomoc´ı tohoto detektoru, je moˇzn´e vidˇet na obr´azku3.2.

3.1.3 Modulaˇ cn´ı maska

V HDESu je vyuˇz´ıv´ano dvou masek o velikosti 64×64 pixel˚u, kter´e byly vytvoˇreny pomoc´ı fotolitografie nanesen´ım tenk´e chromov´e vrstvy na sklenˇen´y podklad. Masky jsou um´ıstˇeny nad sebe a jejich pˇredlohou byla n´ahodn´a bin´arn´ı matice 64×64, kde polovina pixel˚u jsou nuly a zbytek jedniˇcky. Obˇe masky jsou navz´ajem komple-ment´arn´ı, coˇz znamen´a, ˇze vrchn´ı maska je positivem t´eto matice a spodn´ı maska je jej´ım negativem (tzn. tam kde v p˚uvodn´ı matici byly jedniˇcky jsou pro spodn´ı masku nuly a opaˇcnˇe). Matici modulaˇcn´ı masky pro vrchn´ı ˇc´ast obrazu je moˇzn´e vidˇet na obr´azku3.3. Rozmˇery kaˇzd´e z masek jsou pˇribliˇznˇe 13,55 mm × 13,55 mm, coˇz znamen´a, ˇze jeden pixel takov´eto masky m´a rozmˇery 0,21 mm × 0,21 mm. [20]

Vyuˇzit´ı masek, kter´e jsou navz´ajem positivem a negativem m´a velkou v´yhodu pˇri samotn´e rekonstrukci. U nult´eho ˇr´adu m˚uˇzeme t´eto skuteˇcnosti vyuˇz´ıt tak, ˇze oba obrazy seˇcteme, ˇc´ımˇz dostaneme matici plnou jedniˇcek, coˇz je p˚uvodn´ı obraz, jak bychom ho vidˇeli, kdybychom seˇcetli vˇsechny spektra (v naˇsem pˇr´ıpadˇe, kdy pracu-jeme s viditeln´ym svˇetlem, bychom tak dostali obraz, kter´y ve skuteˇcnosti vid´ıme).

Naopak u prvn´ıho ˇr´adu se vyplat´ı oba obrazy odeˇc´ıst, protoˇze tak pro danou vlnovou d´elku ˇc´asteˇcnˇe eliminujeme vliv ostatn´ıch vlnov´ych d´elek.

Obr´azek 3.3: Modulaˇcn´ı maska pro vrchn´ı ˇc´ast obrazu - b´ıl´a m´ısta pˇredstavuj´ı pixely, kter´e propouˇst´ı svˇetlo, tmav´a pak ty pixely, kter´e jsou nepr˚uhledn´e

3.1.4 Difrakˇ cn´ı mˇ r´ıˇ zka

K rozdˇelen´ı spektra vyuˇz´ıv´ame, jak jiˇz bylo ˇreˇceno, difrakˇcn´ı mˇr´ıˇzku. V naˇsem pˇr´ıpadˇe je pouˇzita mˇr´ıˇzka Thorlabs 500 nm blaze z borosilik´atov´eho skla, kter´a m´a 300 vryp˚u na milimetr. V´yhodou vyuˇzit´ı mˇr´ıˇzky oproti hranolu jako disperzn´ıho elementu je pˇredevˇs´ım rovnomˇern´e rozloˇzen´ı spektra na detektoru. Jde tedy o to, ˇze v pˇr´ıpadˇe disperzn´ıho spektra (tedy pˇri pouˇzit´ı hranolu) je vzd´alenost mezi bodem reprezentuj´ıc´ım vlnovou d´elku kupˇr´ıkladu 500 nm a druh´ym bodem pˇredstavuj´ıc´ım 600 nm rozd´ıln´a neˇz vzd´alenost mezi body 600 nm a 700 nm. Naopak u difrakˇcn´ıho spektra (tedy pˇri pouˇzit´ı difrakˇcn´ı mˇr´ıˇzky) budou tyto vzd´alenosti vˇzdy stejn´e v cel´em spektru. V´yhodou je tedy jednoduˇsˇs´ı kalibrace, nebot’ v´ıme, ˇze pozice jed-notliv´ych ˇc´ast´ı spektra na detektoru je pˇr´ımo ´umˇern´a jejich vlnov´e d´elce.

Nev´yhodou oproti hranolu vˇsak je rozd´ıln´a propustnost svˇetla na rozd´ıln´ych vl-nov´ych d´elk´ach.

3.1.5 Zpracov´ an´ı vstupn´ıch dat

Neˇz zapoˇcne samotn´a rekonstrukce, je nutn´e vstupn´ı data z´ıskan´a z kamery nejprve zpracovat, to znamen´a oˇrezat a zmenˇsit. Oˇrez´an´ı se prov´ad´ı tak, ˇze z matice surov´ych dat, kterou je moˇzn´e vidˇet napˇr´ıklad na obr´azku3.2, postupnˇe v Matlabu vyjmeme submatice odpov´ıdaj´ıc´ı jednotliv´ym ˇr´ad˚um. Souˇradnice submatic jsou pro vˇsechny mˇeˇren´ı stejn´e a z´ısk´avaj´ı se pˇri kalibraci soustavy. Ve v´ysledku tedy z´ısk´ame ˇctyˇri matice, kde dvˇe odpov´ıdaj´ı prvn´ım ˇr´ad˚um a dvˇe odpov´ıdaj´ı nult´ym ˇr´ad˚um. Velikosti jednotliv´ych matic se mohou po kaˇzd´em zkalibrov´an´ı liˇsit o nˇekolik pixel˚u, nicm´enˇe velikost matice nult´eho ˇr´adu se pohybuje pˇribliˇznˇe kolem 520×530 pixel˚u kamery a velikost matice prvn´ıho ˇr´adu kolem 1520×520 pixel˚u kamery.

N´asledn´e zmenˇsen´ı matic nult´ych ˇr´ad˚u na n´ami poˇzadovanou velikost 64×64 pixel˚u a matic prvn´ıch ˇr´adu na velikost 185×64 pixel˚u (velikost prvn´ıho ˇr´adu v horizont´aln´ı ose se m˚uˇze liˇsit v z´avislosti na kalibraci) je prov´adˇeno pomoc´ı funkce

”shrinking“.

Tato funkce pracuje obdobnˇe jako jiˇz implementovan´a funkce v Matlabu

”imresize“, nicm´enˇe jej´ı popis by byl zdlouhav´y a pro tuto pr´aci nepodstatn´y, tud´ıˇz ho zde nebudu uv´adˇet. Jej´ım v´ystupem jsou pak ˇctyˇri zmenˇsen´e matice, kde kaˇzd´y pixel tˇechto matic pˇredstavuje pˇribliˇznˇe 8×8 pixel˚u kamery.

3.2 Rekonstrukce obrazu

Rekonstrukce obrazu je zaloˇzena na optimalizaˇcn´ı ´uloze 2.8 a jej´ım ˇreˇsen´ı pomoc´ı TwIST algoritmu. Kv˚uli zpˇrehlednˇen´ı zde nejprve uvedu znaˇcen´ı jednotliv´ych matic a oper´ator˚u, kter´e bude d´ale pouˇz´ıv´ano.

Vstupn´ı data detektoru D budou znaˇcena jako

”vstupn´ı detektor D“, rekonstruovan´a hypespektr´aln´ı datakrychle ve vlnkov´e dom´enˇe I bude znaˇcena jako

”datakrychle I“ a v´yraz AI, kter´y v ´uloze 2.8 odpov´ıd´a odhadu detektoru, bude znaˇcen jako

”detektor ¯D“.

Prvn´ı d˚uleˇzitou pozn´amkou je, ˇze k matici A ze zm´ınˇen´e ´ulohy 2.8, kter´a n´am zajiˇst’uje pˇrevod datakrychle I na detektor ¯D, lze pˇristupovat dvˇema zp˚usoby.

Prvn´ım pˇr´ımoˇcaˇrejˇs´ım zp˚usobem je pˇristupovat k n´ı jako ke skuteˇcn´e matici. V ta-kov´em pˇr´ıpadˇe bychom si vstupn´ı detektor D a datakrychli I z rovnice2.8 pˇrevedli na vektory a tud´ıˇz bychom mˇeli vektor D o N (N + L − 1) sloˇzk´ach a vektor I o N2L sloˇzk´ach. Matice A, kter´a zajiˇst’uje spektr´aln´ı rozm´ıtnut´ı, modulaci a zpˇetn´e pˇreveden´ı z vlnkov´e dom´eny do dom´eny prostorov´e (viz rovnice 2.9), by pak mu-sela m´ıt rozmˇery N (N + L − 1) × N2L. Teoreticky zde tedy ˇz´adn´y probl´em nen´ı a pˇrevod datakrychle I na detektor ¯D m´ame proveden´y v jednom kroku a algo-ritmus by si matematicky s takov´ymto postupem byl schopen poradit. Nicm´enˇe prakticky nar´aˇz´ıme na z´asadn´ı probl´em, kter´ym je velikost matice A, protoˇze je pravdˇepodobn´e, ˇze i pˇri pomˇernˇe mal´ych velikostech N a L (rozmˇery naˇs´ı da-takrychle) by se n´am tato matice nemusela vej´ıt do operaˇcn´ı pamˇeti poˇc´ıtaˇce.

Napˇr´ıklad v pˇr´ıpadˇe, ˇze bychom pracovali s rozmˇery N = 64 a L = 122 (jako je datakrychli v jednom kroku, ale poˇc´ıt´ame kaˇzd´y ˇrez datakrychle (vlnovou d´elku) zvl´aˇst’. Z´aroveˇn tak´e nepˇristupujeme k matici A jako ke skuteˇcn´e matici, ale sp´ıˇse jako k funkci, kter´a n´am tento pˇrevod zajiˇst’uje, coˇz bude vysvˇetleno d´ale.

K samotn´e rekonstrukci tedy vyuˇz´ıv´ame soubor funkc´ı v Matlabu, kter´e slouˇz´ı jak k prvotn´ımu zpracov´an´ı dat z vstupn´ıho detektoru D (jejich naˇcten´ı, oˇrez´an´ı, atd.) tak i pro rekonstrukci zaloˇzenou na TwIST algoritmu. Cel´y proces rekonstrukce je ovl´ad´an pomoc´ı skriptu (pro jednoduchost oznaˇcen´y jako

”main“) slouˇz´ıc´ıho jako takov´e uˇzivatelsk´e rozhran´ı, d´ıky kter´emu m˚uˇzeme jednoduˇse nastavovat parametry, kter´e do cel´eho procesu vstupuj´ı. Tento skript se n´am tak´e star´a o prvotn´ı ´upravu dat a tak´e koneˇcn´e zobrazen´ı v´ysledk˚u. D˚uleˇzitou funkc´ı ve kter´e se odehr´av´a proces

Tabulka 3.2: Pˇr´ıstup ke zpracov´an´ı sn´ımk˚u (hranat´e z´avorky znaˇc´ı jednu matici, tud´ıˇz napˇr´ıklad [pozitiv - negativ] znaˇc´ı jednu v´yslednou matici, ve kter´e se navz´ajem oba sn´ımky odeˇcetly)

M´od 1 [pozitiv]

M´od 2 [pozitiv]

[negativ]

M´od 3 [pozitiv - negativ]

samotn´e rekonstrukce je funkce oznaˇcen´a jako

”reconstruct“, kter´a slouˇz´ı prim´arnˇe k pˇred´an´ı parametr˚u TwIST algoritmu a z´aroveˇn jeho spuˇstˇen´ı v poˇzadovan´em poˇctu iterac´ı. D´ale se zde pak nach´az´ı soubor funkc´ı pro samotn´y TwIST algoritmus. J´adro tohoto algoritmu a jeho matematick´a podstata je mimo rozsah t´eto pr´ace, a proto j´ı tu nebudu uv´adˇet.

Mimo parametr˚u, kter´ymi ovlivˇnujeme rekonstrukci (jako napˇr´ıklad poˇzadovan´a pˇresnost v´ysledku, maxim´aln´ı poˇcet iterac´ı, atd.) jsou stˇeˇzejn´ı tˇri funkce, kter´e znaˇcnˇe ovlivˇnuj´ı pr˚ubˇeh TwISTu a v´ysledky, kter´e n´am bude d´avat. Jsou to funkce pro poˇc´ateˇcn´ı odhad (oznaˇcen´a jako

”makeInitGuess“), kter´a ze vstupn´ıch dat vy-tvoˇr´ı poˇc´ateˇcn´ı odhad datakrychle, coˇz slouˇz´ı jako v´ychoz´ı bod TwIST algoritmu, d´ale pak funkce pro pˇrevod datakrychle I na detektor ¯D (oznaˇcen´a jako

” imageEn-code“), kter´a odpov´ıd´a matici A v2.8a n´aslednˇe jej´ı inverze pro pˇrevod detektoru ¯D na datakrychli I (oznaˇcen´a jako

”imageDecode“).

Dalˇs´ım d˚uleˇzit´ym faktorem, kter´y ovlivˇnuje zp˚usob rekonstrukce, je jak pˇristupujeme k samotn´ym dat˚um. Jak jiˇz bylo zm´ınˇeno dˇr´ıve v kapitole3.1.1, nesn´ım´ame pouze je-den obraz, ale dva, skrz dvˇe navz´ajem komplement´arn´ı masky. Nab´ız´ı se tedy nˇekolik moˇznost´ı, jak k dat˚um pˇristupovat. Moment´alnˇe jsou implementov´any tˇri pˇr´ıstupy (m´ody) viz tabulka 3.2.

M´od 1 vyuˇz´ıv´a pouze vrchn´ı masku a tud´ıˇz pracujeme jen s vrchn´ı ˇc´ast´ı detektoru.

Zbyl´e dva m´ody pak pouˇz´ıvaj´ı obˇe masky a pracuj´ı tedy jiˇz s cel´ym detektorem.

V m´odu 2 po celou dobu rekonstrukce z˚ust´avaj´ı obˇe ˇc´asti detektoru oddˇelen´e a pra-cujeme tedy se dvˇema maticemi. Naopak v m´odu 3 od sebe na zaˇc´atku rekonstrukce odeˇcteme obrazy prvn´ıch ˇr´ad˚u a pˇriˇcteme k sobˇe obrazy nult´ych ˇr´ad˚u a ve v´ysledku tedy pracujeme pouze s jednou matic´ı reprezentuj´ıc´ı detektor. V´yhody a nev´yhody tˇechto pˇr´ıstup˚u budou d´ale diskutov´any v kapitole 4.3.

V n´asleduj´ıc´ı ˇc´asti se budu zab´yvat tˇremi jiˇz zm´ınˇen´ymi funkcemi, je vˇsak nutn´e podotknout, ˇze kaˇzd´a z tˇechto funkc´ı se liˇs´ı v z´avislosti na pouˇzit´em m´odu. Popis, kter´y zde pˇredloˇz´ım, se tedy bude t´ykat m´odu 1, nicm´enˇe pro ostatn´ı m´ody jsou tyto funkce principi´alnˇe velmi podobn´e a maj´ı jen d´ılˇc´ı rozd´ıly.

3.2.1 Poˇ c´ ateˇ cn´ı odhad

Algoritmus TwIST ke sv´emu fungov´an´ı potˇrebuje m´ıt zadan´y v´ychoz´ı bod, ide´alnˇe co nejbl´ıˇze samotn´emu ˇreˇsen´ı a z toho d˚uvodu je nutn´e dˇelat poˇc´ateˇcn´ı odhad, k ˇcemuˇz slouˇz´ı jiˇz zm´ınˇen´a funkce

”makeInitGuess“. Tato funkce pˇrev´ad´ı vstupn´ı detektor D

na datakrychli I a transformuje ji do vlnkov´e dom´eny pomoc´ı haarovy transformace.

Hlavn´ı ˇc´ast t´eto funkce, kterou zde budu popisovat, je moˇzn´e vidˇet na obr´azku3.4.

Cel´y proces prob´ıh´a po ˇc´astech, nam´ısto vytvoˇren´ı datakrychle v jednom kroku pouˇz´ıv´ame cyklus, ve kter´em postupnˇe vytv´aˇr´ıme kaˇzd´y ˇrez. Nejprve tedy ze vstupn´ıho detektoru D extrahujeme ˇc´ast sn´ımku (actSlice), se kterou budeme d´ale praco-vat. D´ale pˇren´asob´ıme matici naˇseho aktu´aln´ıho sn´ımku matic´ı masky (nejeden´a se vˇsak o klasick´e maticov´e n´asoben´ı, oper´ator .* v Matlabu znaˇc´ı n´asoben´ı po prvc´ıch, neboli Hadamard˚uv souˇcin - kdykoliv se tedy d´ale v pr´aci budu zmiˇnovat o n´asoben´ı dvou matic, je myˇsleno pr´avˇe toto n´asoben´ı po prvc´ıch). Po t´eto operaci tedy m´ame n´aˇs aktu´aln´ı sn´ımek v podobˇe, kde na m´ıstech, kde v masce byly nuly, jsou i v aktu´aln´ım sn´ımku nuly a tam kde byly jedniˇcky, z˚ust´avaj´ı prvky nezmˇenˇeny (to ovˇsem plat´ı pouze pokud vyuˇz´ıv´ame 1. m´od, viz tabulka3.2, v ostatn´ıch m´odech je matice masky upravena obdobnˇe jako jsou zpracov´any sn´ımky, tud´ıˇz napˇr´ıklad u 3. m´odu se maska skl´ad´a z ˇc´ısel 1 a -1). D´ale se do rekonstrukce zapojuje i nult´y ˇr´ad (ZOimage), kdy k aktu´aln´ımu sn´ımku pˇriˇc´ıt´ame nult´y ˇr´ad vydˇelen´y pomˇerem mezi prvn´ım a nult´ym ˇr´adem na dan´e vlnov´e d´elce (FOvZO). V podstatˇe to zna-men´a, ˇze kdyˇz se na dan´e vlnov´e d´elce nult´y ˇr´ad t´emˇeˇr neprojevuje (m´a minim´aln´ı intenzitu), bude FOvZO velk´e (intenzita prvn´ıho ˇr´adu je mnohon´asobnˇe vyˇsˇs´ı neˇz intenzita nult´eho ˇr´adu) a tud´ıˇz se pˇriˇcte k aktu´aln´ımu sn´ımku jen mal´a ˇc´ast nult´eho ˇr´adu a naopak. N´aslednˇe uˇz m˚uˇze probˇehnout haarova transformace do vlnkov´e b´aze a zapsan´ı aktu´aln´ıho sn´ımku do datakrychle. Jak je vidˇet z posledn´ıho ˇr´adku k´odu, nejedn´a se o 3D-datakrychli, ale o dvourozmˇernou matici, kde jsou jednotliv´e sn´ımky

Cel´y proces prob´ıh´a po ˇc´astech, nam´ısto vytvoˇren´ı datakrychle v jednom kroku pouˇz´ıv´ame cyklus, ve kter´em postupnˇe vytv´aˇr´ıme kaˇzd´y ˇrez. Nejprve tedy ze vstupn´ıho detektoru D extrahujeme ˇc´ast sn´ımku (actSlice), se kterou budeme d´ale praco-vat. D´ale pˇren´asob´ıme matici naˇseho aktu´aln´ıho sn´ımku matic´ı masky (nejeden´a se vˇsak o klasick´e maticov´e n´asoben´ı, oper´ator .* v Matlabu znaˇc´ı n´asoben´ı po prvc´ıch, neboli Hadamard˚uv souˇcin - kdykoliv se tedy d´ale v pr´aci budu zmiˇnovat o n´asoben´ı dvou matic, je myˇsleno pr´avˇe toto n´asoben´ı po prvc´ıch). Po t´eto operaci tedy m´ame n´aˇs aktu´aln´ı sn´ımek v podobˇe, kde na m´ıstech, kde v masce byly nuly, jsou i v aktu´aln´ım sn´ımku nuly a tam kde byly jedniˇcky, z˚ust´avaj´ı prvky nezmˇenˇeny (to ovˇsem plat´ı pouze pokud vyuˇz´ıv´ame 1. m´od, viz tabulka3.2, v ostatn´ıch m´odech je matice masky upravena obdobnˇe jako jsou zpracov´any sn´ımky, tud´ıˇz napˇr´ıklad u 3. m´odu se maska skl´ad´a z ˇc´ısel 1 a -1). D´ale se do rekonstrukce zapojuje i nult´y ˇr´ad (ZOimage), kdy k aktu´aln´ımu sn´ımku pˇriˇc´ıt´ame nult´y ˇr´ad vydˇelen´y pomˇerem mezi prvn´ım a nult´ym ˇr´adem na dan´e vlnov´e d´elce (FOvZO). V podstatˇe to zna-men´a, ˇze kdyˇz se na dan´e vlnov´e d´elce nult´y ˇr´ad t´emˇeˇr neprojevuje (m´a minim´aln´ı intenzitu), bude FOvZO velk´e (intenzita prvn´ıho ˇr´adu je mnohon´asobnˇe vyˇsˇs´ı neˇz intenzita nult´eho ˇr´adu) a tud´ıˇz se pˇriˇcte k aktu´aln´ımu sn´ımku jen mal´a ˇc´ast nult´eho ˇr´adu a naopak. N´aslednˇe uˇz m˚uˇze probˇehnout haarova transformace do vlnkov´e b´aze a zapsan´ı aktu´aln´ıho sn´ımku do datakrychle. Jak je vidˇet z posledn´ıho ˇr´adku k´odu, nejedn´a se o 3D-datakrychli, ale o dvourozmˇernou matici, kde jsou jednotliv´e sn´ımky