2011
Jiří Mastík Dokumentace 20.12.2011
Shack-Hartmann - dokumentace
Obrázek převzat z www.mvkonnik.info
Obsah
Úvod ... 3
Rekonstrukce vlnoplochy s využitím metody hledání těžišť vereze 1 nebo 2 ... 4
Rekonstrukce vlnoplochy s využitím metody hledání těžišť verze 3 ... 4
Rozdělení funkcí z hlediska použité metody vyhledávání těžišť spotů ... 5
Funkce pro kameru uEye ... 7
Funkce kompletní rekonstrukce ... 7
Měření poloměru sférických vlnoploch ... 7
angle_measure ... 8
Centroi2 ... 9
Centroid_V1 ... 10
Centroid_V2 ... 11
Centroid_V3 ... 12
Comp_data ... 13
doSpotSearch ... 15
findMaxMin ... 16
Get_Frame ... 17
GridCoords ... 18
movAvg ... 19
movAvg2 ... 20
patchCenters2 ... 21
rescaleLum ... 22
ShackHartmann ... 23
uEyeCamInit ... 25
uEyeCreateImage ... 26
uEyeCreateVideo ... 27
Zernike_LSF ... 28
ZernikeR ... 30
ZernikeR_15 ... 31
ZernikeR_21 ... 32
ZernikeR_28 ... 33
ZernikeR_36 ... 34
ZernikeR_45 ... 35
Dokumentace –Shack-Hartmann Stránka 2
ZernikeR_66 ... 37
compradius ... 38
SH_circle ... 39
Použitá literatura ... 40
Úvod
Dokumentace má sloužit pouze jako doplněk k textu diplomové práce a funkcím, které jsou vytvořeny v prostředí MATLAB. Při tvorbě dokumentace bylo hlavním zájmem podat ucelený přehled funkcí, které tvoří softwarovou podporu Shack-Hartmannova senzoru vlnoplochy a usnadnit tak orientaci v obsáhlém balíku funkcí. Pro podrobnější pochopení jednotlivých funkcí je nutné prostudovat jak text diplomové práce, tak i zdrojové kódy jednotlivých funkcí, které disponují popisem v podobě komentářů.
Dokumentace dělí funkce dle použité metody vyhledávání souřadnic těžišť spotů Shack-Hartmannova spotdiagramu. Tyto metody jsou stručně popsány v textu diplomové práce. Jedná se o funkce Centroid_V1 (metoda hledání těžišť verze 1), Centroid_V2 (metoda hledání těžišť verze 2), Centroid_V3 (metoda hledání těžišť verze 3). Tyto metody se liší v rozdílném obrazovém zpracování spotdiagramu. Centoid_V1 se jeví z pohledu naprogramovaného kódu jako nejjednodušší, oproti metodě Centroid_V2. Centroid_V1 nepracuje při určování regiónů zájmu s takovou přesností jako Centroid_V2. V praxi to její použitelnost limituje pouze na zpracování spotdiagramů, které nejsou zatíženy artefakty a velkou mírou nerovnoměrně rozmístěného šumu. Hledaný spot se tak může uvnitř ořízlé oblasti nalézat jen částečně nebo vůbec. Centroid_V3 je funkce vyhledávání souřadnic těžišť spotů, kterou je možné označit jako rychlou. Je založená na předpokladu, že zpracovávané spotdiagramy se vzájemně liší jen minimálně. Z tohoto důvodu je možné regióny zájmu, ve kterých se mají nacházet jednotlivé Shack-Hartmannovy spoty, určit pouze jednou a to pomocí funkce Centroid_V2 (metoda vyhledávání těžišť verze 2). Znalost pozice a velikosti regiónů zájmů před zpracováním dalších spotdiagramů zmenšuje výpočetní náročnost funkce a tím zkracuje čas potřebný pro vykonání funkce vyhledávání souřadnic těžišť jednotlivých spotů.
Dokumentace dále obsahuje popis funkcí pro stahování obrazu a nahrávání videa z kamery uEye využívající ActiveX a DirectShow rozhraní a funkce pro výpočet poloměrů sférických vlnoploch.
V dokumentaci je také popsáno použití funkce ShackHartmann, která rekonstruuje vlnoplochu na základě vstupního Shack-Hartmannova spotdiagramu a několika dalších nejnutnějších vstupních parametrech. Výstupem této funkce jsou elevace vlnoplochy v jednotlivých bodech mřížky a kompletní soubor Zernikových koeficientů.
Dokumentace –Shack-Hartmann Stránka 4
Rekonstrukce vlnoplochy s využitím metody hledání těžišť vereze 1 nebo 2
Obr.1 Postup rekonstrukce vlnoplochy (metoda Centroid_V1 a Centroid_V2)
Rekonstrukce vlnoplochy s využitím metody hledání těžišť verze 3
Obr.2 Postup rekonstrukce vlnoplochy (metoda Centroid_V3) ROI
Blok Funkce Subfunkce Subfunkce Rotace spotdiagramu imrotate (MATLAB)
angle_measure
Centroid_V1 Centroid_V1 GridCoords movAvg
Centroid_V2 Centroid_V2 rescaleLum
findMaxMin
patchCenters2 movAvg2 findMaxMin doSpotSearch
Výpočet pomocných dat Comp_data
Rekonstrukce vlnoplochy Zernike_LSF ZernikeR ZernikeR_66 ZernikeR_55 ZernikeR_45 ZernikeR_36 ZernikeR_28 ZernikeR_21 ZernikeR_15
Centroid_V3 Centroid_V3
Tab. 1 Funkční příslušnost k jednotlivým blokům schémat
Rozdělení funkcí z hlediska použité metody vyhledávání těžišť spotů
Metoda vyhledávání těžišť verze 1
Funkce Popis
Centroid_V1 Metoda hledání těžišť verze 1
GridCoords Hledání souřadnic mřížky pomocí vertikálního a horizontálního proužku.
Comp_data Výpočet pomocných dat Zernike_LSF Rekonstrukce vlnoplochy
ZernikeR Zernikovy polynomy (derivované, nederivované) požadovaného módu ZernikeR_66 Zernikovy polynomy (derivované nederivované) pro módy 1-66 ZernikeR_55 Zernikovy polynomy (derivované nederivované) pro módy 1-55 ZernikeR_45 Zernikovy polynomy (derivované nederivované) pro módy 1-45 ZernikeR_36 Zernikovy polynomy (derivované nederivované) pro módy 1-36 ZernikeR_28 Zernikovy polynomy (derivované nederivované) pro módy 1-28 ZernikeR_21 Zernikovy polynomy (derivované nederivované) pro módy 1-21 ZernikeR_15 Zernikovy polynomy (derivované nederivované) pro módy 1-15 movAvg Průměrovací filtr s volitelnou délkou
imrotate Rotace spotdiagramu o definovaný úhel (MATLAB)
Tab. 2 Popis funkcí souvisejících s rekonstrukcí vlnoplochy využívající metodu hledání těžišť verze 1
Dokumentace –Shack-Hartmann Stránka 6 Metoda vyhledávání těžišť verze 2
Funkce Popis
Centroid_V2 Metoda hledání těžišť verze 2
rescaleLum Mění střední hodnotou jasu a jasového rozsahu vstupního obrazu.
findMaxMin Hledání lokálních maxim a minim uvnitř vektoru Zernike_LSF Rekonstrukce vlnoplochy
ZernikeR Zernikovy polynomy (derivované, nederivované) požadovaného módu ZernikeR_66 Zernikovy polynomy (derivované nederivované) pro módy 1-66 ZernikeR_55 Zernikovy polynomy (derivované nederivované) pro módy 1-55 ZernikeR_45 Zernikovy polynomy (derivované nederivované) pro módy 1-45 ZernikeR_36 Zernikovy polynomy (derivované nederivované) pro módy 1-36 ZernikeR_28 Zernikovy polynomy (derivované nederivované) pro módy 1-28 ZernikeR_21 Zernikovy polynomy (derivované nederivované) pro módy 1-21 ZernikeR_15 Zernikovy polynomy (derivované nederivované) pro módy 1-15 movAvg2 Průměrovací filtr s volitelnou délkou
patchCenters2 Hledá pozice lokálních maxim a minim uvnitř vektorizovaného proužku.
doSpotSearch Odstraňuje malé shluky energie, které interferují s Shack-
Hartmannovými spoty a řeší problém, kdy se těžiště nachází spotu mimo spot.
Comp_data Výpočet pomocných dat
imrotate Rotace spotdiagramu o definovaný úhel (MATLAB) angle_measure Měří úhel natočení spotdiagramu
Tab. 3 Popis funkcí souvisejících s rekonstrukcí vlnoplochy využívající metodu hledání těžišť verze 2
Metoda vyhledávání těžišť verze 3
Funkce Popis
Centroid_V2 Metoda hledání těžišť verze 2 Centroid_V3 Metoda hledání těžišť verze 3
rescaleLum Mění střední hodnotou jasu a jasového rozsahu vstupního obrazu.
findMaxMin Hledání lokálních maxim a minim uvnitř vektoru Zernike_LSF Rekonstrukce vlnoplochy
ZernikeR Zernikovy polynomy (derivované, nederivované) požadovaného módu ZernikeR_66 Zernikovy polynomy (derivované, nederivované) pro módy 1-66 ZernikeR_55 Zernikovy polynomy (derivované, nederivované) pro módy 1-55 ZernikeR_45 Zernikovy polynomy (derivované, nederivované) pro módy 1-45 ZernikeR_36 Zernikovy polynomy (derivované, nederivované) pro módy 1-36 ZernikeR_28 Zernikovy polynomy (derivované, nederivované) pro módy 1-28 ZernikeR_21 Zernikovy polynomy (derivované, nederivované) pro módy 1-21 ZernikeR_15 Zernikovy polynomy (derivované, nederivované) pro módy 1-15 movAvg2 Průměrovací filtr s volitelnou délkou (způsobuje posuv)
patchCenters2 Hledá pozice lokálních maxim a minim uvnitř vektorizovaného proužku.
Vstupem funkce je proužek spotdiagramu.
doSpotSearch Odstraňuje malé shluky energie, které interferují s Shack-
Hartmannovými spoty a řeší problém, kdy se těžiště nachází spotu mimo spot.
Comp_data Výpočet pomocných dat
imrotate Rotace spotdiagramu o definovaný úhel (MATLAB) angle_measure Měří úhel natočení spotdiagramu
Tab. 4 Popis funkcí souvisejících s rekonstrukcí vlnoplochy využívající metodu hledání těžišť verze 2
Funkce pro kameru uEye
Funkce Popis
uEyeCamInit Inicializace kamery uEye
uEyeCreateImage Stáhne obraz z kamery. Umožňuje nastavení expozice a rozlišení.
uEyeCreateVideo Nahraje video z kamery uEye
Get_Frame Pořízení jednoho snímku z kamery (všechny DirectShow kompatibilní kamery).
Tab. 5 Popis funkcí pro kameru uEye
Funkce kompletní rekonstrukce
Funkce Popis
ShackHartmann Na základě vstupního spotdiagramu a několika parametrů rekonstruuje vlnoplochu. Výstupem jsou elevace vlnoplochy v jednotlivých bodech mřížky a Zernikovy koeficienty.
Tab. 6 Popis funkce kompletní rekonstrukce
Měření poloměru sférických vlnoploch
Funkce Popis
compradius Výpočet poloměru sférické vlnoplochy
SH_circle Kriteriální funkce pro výpočet poloéměru sférické vlnoplochy Tab. 7 Funkce pro výpočet poloměru sférických vlnoploch
Dokumentace –Shack-Hartmann Stránka 8
angle_measure
Měří úhel natočení spotdiagramu. Vypočítaný úhel je ve stupních. Měření je založeno na proložení řady těžišť (horizontálně) polynomem prvního stupně (přímka). K proložení je použita metoda nejmenších čtverců. Úhel natočení je tedy zjištěn ze směrnice regresní přímky.
K samotné rotaci spotdiagramu je pak vhodné použít matlabovkou funkci imrotate s bikubickou interpolací a povolením měnit velikost obrazu v závislosti na úhlu rotace.
Funkce pro rotaci je tedy definovaná takto:
Image=imrotate(Image,angle,'bicubic','loose');
Předpis funkce:
[angle]=angle_measure(centroidXCoords, centroidYCoords)
Parametry:
Parametr Popis Typ
centroidXCoords Horizontální souřadnice těžišť spotů Matice m x n centroidYCoords Vertikální souřadnice těžišť spotů Matice m x n
angle Naměřený úhel ve stupních Double
Centroi2
Výpočet těžiště matice dle vztahu 1 a 2, kde x je horizontální vektor vzniklý součtem složek matice ve sloupcích, y vertikální vektor vzniklý součtem složek matice v řádcích P a Q jsou rozměry matice, A je matice, ve které hledáme těžiště. Funkci Centroi2 lze volat se dvěma čí jedním parametrem. Výstupem Centroi2 je vektor o souřadnicích těžiště matice [ ].
∑ ∑
∑ ∑
∑ ∑
∑ ∑
Předpis funkce:
c = centroi2(x,y)
Předpis funkce:
c = centroi2(A)
Parametry:
Parametr Popis Typ
x Horizontální vektor matice vzniklý součtem složek matice ve sloupcích.
Vektor y Vertikální vektor matice vzniklý součtem složek matice
v řádcích.
Vektor A Vstupní matice, na které bude proveden výpočet těžiště Matice m x n
c Vektor souřadnic těžiště matice [x y] Vektor
Dokumentace –Shack-Hartmann Stránka 10
Centroid_V1
Metoda vyhledání souřadnic těžišť spotů označovaná jako metoda verze 1.
Stručná charakteristika:
Vyhledávání těžišť jednotlivých spotů uvnitř kruhové oblasti
Filtrace vektorů průměrovacím filtrem movAvg
Vyhledávání středů ROI s využitím funkce GridCoords Předpis funkce:
[centroidXCoords, centroidYCoords]=Centroid_V1(theImage)
Parametry:
Parametr Popis Typ
theImage Spotdiagram Matice m x n
centroidXCoords Souřadnice x-ových pozic těžišť spotů Matice m x n centroidYCoords Souřadnice y-ových pozic těžišť spotů Matice m x n
Volané funkce:
GridCoords
Centroid_V2
Metoda vyhledání souřadnic těžišť spotů označovaná jako metoda verze 2.
Stručná charakteristika:
Vyhledávání těžišť jednotlivých spotů uvnitř celého spotdiagramu
Rozměry proužků dány střední obdélníkovou oblastí
Filtrace obdélníkové oblasti Gaussovským filtrem
Proužky neobsahují ořízlé spoty na okrajích
Filtrace proužků Wienerovým filtrem
Filtrace vektorů průměrovacím (movAvg2) a medianovým filtrem
Středy ROI vyhledávány pomocí funkcí findMaxMin a patchCenters2 Předpis funkce:
[centroidYCoords,centroidXCoords,spotSize]=Centroid_V2 (theImage)
Parametry:
Parametr Popis Typ
centroidXCoords Horizontální souřadnice těžišť Matice m x n centroidYCoords Vertikální souřadnice těžišť Matice m x n
theImage Spotdiagram Matice m x n
Volané funkce:
rescaleLum, findMaxMin, movAvg2, patchCenters2, doSpotSearch
Dokumentace –Shack-Hartmann Stránka 12
Centroid_V3
Metoda vyhledání souřadnic těžišť spotů označovaná jako metoda verze 3.
Stručná charakteristika:
Rychlá metoda vyhledávání těžišť spotů spotdiagramu
Neprobíhá zde určování středů jednotlivých ROI
Vyhledávání těžišť uvnitř celého spotdiagramu
Vyžaduje znalost souřadnic těžišť spotů podobného spotdiagramu
Vyžaduje znalost velikosti ROI podobného spotdiagramu
Oblast ROI je vždy čtvercová Předpis funkce:
[centroidXCoords, centroidYCoords]=Centroid_V3(savedCentroidXCoords, savedCentroidYCoords, spotSize, theImage)
Parametry:
Parametr Popis Typ
savedCentroidXCoords Předpokládaná horizontální souřadnice spotů
Matice m x n savedCentroidYCoords Předpokládaná vertikální souřadnice spotů Matice m x n spotSize Předpokládaná velikost spotu Double
theImage Spotdiagram Matice m x n
centroidXCoords Souřadnice x-ových pozic těžišť spotů Matice m x n centroidYCoords Souřadnice y-ových pozic těžišť spotů Matice m x n
Volané funkce:
Centroi2
Comp_data
Získává základní data jako pozice referenčních spotů, průměr a poloměr pupily a další důležitá data viz. výstupní parametry funkce níže.
Předpis funkce:
[RcentroidXCoords RcentroidYCoords mask pupilX pupilY centroidX centroidY grdx grdy indexX indexY PupilSize xPupilRad yPupilRad pupilRad]=Comp_data(lensletSpacing, pix,centroidXCoords,
centroidYCoords,xsizepupil,ysizepupil,Mag,HnumHdots,VnumVdots)
Parametry:
Parametr Popis Typ
RcentroidXCoords Horizontální souřadnice referenčních spotů Matice m x n RcentroidYCoords Vertikální souřadnice referenčních spotů Matice m x n mask Maska určujíci osvícenou oblast
mikročočkového pole
Matice m x n pupilX Horizontální souřadnice středu pupily
(souřadnice těžiště osvícených mikročoček v rovině CCD)
Double
pupilY Vertikální souřadnice středu pupily
(souřadnice těžiště osvícených mikročoček v rovině CCD)
Double
centroidX Horizontální pozice těžišť uvnitř pipily Matice m x n centroidY Vertikální pozice těžišť uvnitř pipily Matice m x n grdx Horizontální souřadnice referenční mřížky Matice m x n grdy Vertikální souřadnice referenční mřížky Matice m x n
indexX = mask Matice m x n
indexY = mask Matice m x n
PupilSize Velikost poloměru pupily [m] Double xPupilRad x-ový poloměr pupily v pixelech Double yPupilrad y-poloměr pupily v pixelech Double
pupilRad Poloměr pupily [mm] Double
lensletSpacing Rozteč mikročočkového pole [um] Double
pix Velikost pixelu [um] Double
centroidXCoords Horizontální pozice těžišť spotů Matice m x n centroidYCoords Vertikální pozice těžišť spotů Matice m x n
Dokumentace –Shack-Hartmann Stránka 14
Parametr Popis Typ
xsizepupil x-velikost pupily [mm] Double
ysizepupil y-velikost pupily [mm] Double
HnumHdots imsize=size(centroidXCoords)
HnumHdots=imsize(2) Integer
VnumVdots imsize=size(centroidXCoords)
HnumHdots=imsize(1) Integer
doSpotSearch
Nejedná se o funkci, ale o m-file obsahující část kódu. DoSpotSearch je volán výhradně uvnitř funkce Centroid_V2. Odstraňuje malé shluky energie, které interferují se Shack-Hartmannovými spoty. Řeší také případy, kdy se těžiště spotu nachází mimo spot.
Defaultně se tento m-file nevyužívá. Pro využití doSpotSearch je nutné nastavit flag spotSearch uvnitř funkce Centroid_V2.
DoSpotSearch má smysl použít v případech, kdy spotdiagram obsahuje různé artefakty nebo je silně zasažen nerovnoměrně rozmístěným šumem.
Předpis:
doSpotSearch
Dokumentace –Shack-Hartmann Stránka 16
findMaxMin
Hledá pozice lokálních maxim a minim v datovém vektoru. Vyhledávání probíhá na základě derivace vstupního vektoru dle vztahu 1, kde X je derivovaný vektor. Derivací vektoru získáme směrnice tečen v jednotlivých bodech grafu definovaného hodnotami vektoru. Souřadnice maxim a minim pak získáme porovnáváním sousedních hodnot směrnic.
[ ] Souřadnice maxima je v místě, kde kladný, případně nulový úhel směrnice přechází v záporný neboli v místě, kde nerostoucí funkce přechází v klesající, případně v místě, kde rostoucí funkce přechází v klesající.
Souřadnice minima je v místě, kde záporný, případně nulový úhel směrnice přechází v kladný neboli v místě, kde neklesající funkce přechází v rostoucí, případně v místě, kde klesající funkce přechází v rostoucí.
Předpis funkce:
[peaks troughs] = findMaxMin(dataVector)
Parametry:
Parametr Popis Typ
dataVector Datový vektor (řez spotdiagramem) Vektor peaks Pozice maxima v datovém vektoru Vektor troghs Pozice minima v datovém vektoru Vektor
Get_Frame
Stažení obrazu z kamery ve stupních šedi s využitím okamžitého triggeru. Při volání této funkce je pořízen pouze jeden snímek. Funkce je použitelná pro všechny DirectShow kompatibilní kamery.
Předpis funkce:
[frame]=Get_Frame(format, adapter, input)
Parametry:
Parametr Popis Typ
format Rozlišení a barevné schéma Počet formátů je závislý na druhu kamery. Lze zjistit pomocí:
out=imaqhwinfo; adaptors=out.InstalledAdaptors;
Řetězec
adapter Adaptér kamery, pod kterým vystupuje v matlabu. Př:
‘winvideo’ (lze zjistit pomocí imaqhwinfo)
Řetězec input Číslo vstupu. Lze zjistit pomocí imaqhwinfo Integer
frame Pořízený snímek Matice m x n
Dokumentace –Shack-Hartmann Stránka 18
GridCoords
Vyhledávání středů ROI pomocí vertikálního a horizontálního proužku. Funkce zpracovává pouze horizontální vektor proužku. Chceme-li tedy získat vertikální souřadnice mřížky pomocí vertikálního proužku, musíme matici reprezentující proužek nejdříve transponovat.
Vstupní vektor je několikrát filtrován průměrovacím filtrem (movAvg) s různou délkou. Definujeme-li filtr vztahem , kde V je filtrovaný vektor, výstupní vektor a l je délka filtru. Pak funkce GridCoords upravuje vektorizovaný proužek podle vztahů 1, 2, 3, 4, kde V je vektor vzniklý vektorizací vertikálního nebo horizontálního proužku a je vektor s vyrovnanými amplitudami. Použitím vztahů 1, 2, 3, 4 dojde k vyhlazení vektoru a vyrovnání amplitud uvnitř vektoru.
Vektor převedeme na binární a to tak, že vzniklý binární vektor bude nabývat logické jedničky pro hodnoty složek z intervalu nula až maximální hodnota vektoru. Pomocí Eulerova čísla binárního vektoru zjistíme počet objektů uvnitř vektoru, které jsou definovány logickou jedničkou. Určíme souřadnice středů těchto objektů a jejich průměrnou rozteč.
Odstraníme objekty, jejichž vzdálenost od sousedního objektu odpovídá vztahu 5, kde x je rozteč sousedních objektů a ̅ je průměrná rozteč objektů uvnitř binárního vektoru. Tyto objekty vznikly za přispění různých artefaktů nebo malých shluků šumu uvnitř spotdiagramu.
̅ Předpis funkce:
[numdots, Coords]=GridCoords(thePatch)
Parametry:
Parametr Popis Typ
numdots Počet nalezených spotů Integer
Coords Poloha spotů ve vektoru Vektor
thePatch Proužek Matice m x n
Volané funkce:
movAvg
movAvg
Průměrovací filtr s volitelnou délkou. Tento typ průměrovacího filtru vypočítává klouzavý průměr z minulých a budoucích hodnot. Do výpočtu je vnesena i aktuální hodnota.
Průměrovací filtr je charakteristický minimálním potlačováním nízkých frekvencí.
Potlačuje naopak vysoké frekvence. Dochází tedy k vyhlazení vektoru.
Filtr je dán vztahem 1, kde x je vektor, n souřadnice složky vektoru a l délka filtru. Při použití tohoto filtru dochází ke ztrátě počátečních a koncových složek. Ztracené složky vektoru jsou v případě počátečních složek nahrazeny průměrnými hodnotami filtrovaného vektoru dle vztahu 2 a pro koncové hodnoty vztahem 3, kde je i-tá složka vektoru, l délka průměrovacího filtru a n je délka filtrovaného vektoru.
∑
̅ ∑
̅ ∑
Předpis funkce:
avgData=movAvg(rawData, frameSize)
Parametry:
Parametr Popis Typ
avgData Vyfiltrovaný vektor Vektor
rawData Vstupní vektor Vektor
frameSize Velikost filtru (okénka) Integer
Dokumentace –Shack-Hartmann Stránka 20
movAvg2
Průměrovací filtr s volitelnou délkou. Filtr je charakteristický minimálním potlačováním nízkých frekvencí. Potlačuje naopak vysoké frekvence. Při použití movAvg2 dochází k posunu špiček uvnitř vektoru.
Filtr vypočítává klouzavý průměr z aktuálních a budoucích hodnot. Tento filtr je dán vztahem 1, kde l je délka filtru a n, i jsou souřadnice vektoru. Jelikož filtr vypočítává klouzavý průměr z budoucích hodnot, dochází k posunu špiček uvnitř vektoru. Tento posuv je eliminován úpravou souřadnic vektoru dle vztahu 2, kde n je původní souřadnice, i nová souřadnice a l je délka filtru.
∑ ( )
Předpis funkce:
avgData=movAvg(rawData, frameSize)
Parametry:
Parametr Popis Typ
avgData Vyfiltrovaný vektor Vektor
rawData Vstupní vektor Vektor
frameSize Velikost filtru (okénka) Integer
patchCenters2
Vyhledává souřadnice lokálních maxim a minim vektorizovaného proužku spotdiagramu. Vektory jsou uvnitř funkce filtrovány průměrovacím a mediánovým filtrem.
Lokální maxima, které jsou vzdálenostně blízko nebo daleko od sebe v závislosti na průměrné vzdálenosti špiček, nejsou brány v úvahu. Tyto lokální maxima vznikly pravděpodobně za přispění různých artefaktů uvnitř spotdiagramu.
Předpis funkce:
[vertStrip, horizStrip, numVdots, vPeaks, vTroughs, numHdots,
hPeaks, hTroughs] = patchCenters2(display, thePatch, x1, y1, x2, y2, filterWidth)
Parametry:
Parametr Popis Typ
vertStrip Vektor získaný sumací proužku v řádcích Vektor horizStrip Vektor získaný sumací proužku ve sloupcích Vektor
numVdots Počet špiček ve vertStrip Integer
vPeaks Lokace špíček ve vertStrip Vektor
vTroughs Lokace minim ve vertStrip Vektor
numHdots Počet špiček v horizStrip Vektor
hPeaks Lokace špiček v horizStrip Vektor
hTroughs Lokace minim v horizStrip Vektor
Display Flag zakazující a povolující diagnostiku. Integer thePatch 2D výřez spotdiagramu (proužek). Matice m x n
x1 Levá horizontální souřadnice výřezu Integer
y1 Levá dolní vertikální souřadnice výřezu Integer
x2 Pravá horizontální souřadnice výřezu Integer
y2 Pravá horní vertikální souřadnice výřezu. Integer
filterWidth Délka filtru movAvg2 (průměrovací filtr) Integer
Volané funkce:
movAvg2, findMaxMin
Dokumentace –Shack-Hartmann Stránka 22
rescaleLum
Mění střední hodnotou jasu a jasový rozsah šedotónového obrazu podle vztahu 1, kde A je matice reprezentující šedotónový obraz, u kterého má dojít ke změně jasového rozsahu a střední hodnoty jasu, R je nová maximální hodnota rozsahu, M požadovaná střední hodnota jasu, ̅ střední hodnota jasu vstupního šedotónového obrazu a B je výstupní matice obrazu se změněným jasovým rozsahem a novou střední hodnotou jasu.
̅
| ̅| | ̅|
Funkce může také měnit pouze jasový rozsah vstupního šedotónového obrazu dle vztahu 2, kde A je matice reprezentující šedotónový obraz, u kterého má dojít ke změně jasového rozsahu, R je nová maximální hodnota rozsahu a B je výstupní matice obrazu se změněným jasovým rozsahem. Dolní mez jasového intervalu je vždy nulová.
Předpis funkce:
newImage=rescaleLum(theImage, newMean, newRange)
Parametry:
Parametr Popis Typ
theImage Vstupní šedotónový obraz Matice m x n newMean Nová střední jasová hodnota. Je-li newMean < 0
není změněna střední hodnota jasu.
Matice m x n newRange Nová hodnota jasového rozsahu. Double newImage Výstupní obraz s novými jasovými parametry. Double
ShackHartmann
Rekonstrukce vlnoplochy na základě vstupního spotdiagramu a několika vstupních parametrech. Na výběr je trojice metod hledání těžišť (Centroid_V2, Centroid_V1, Centroid_V3).
Výstupem funkce jsou elevace vlnoplochy, horizontální souřadnice vlnoplochy, vertikální souřadnice vlnoplochy a soubor Zernikových koeficientů.
Předpis funkce:
[wfit,a,grdx,grdy,maski]=ShackHartmann(theImage,lensletSpacing,pix,f ocalLength,xsizepupil,ysizepupil,method,SavedXCentroids,
SavedYCentroids,Spotsize)
Předpis funkce:
[wfit,a,gridx,gridy]=ShackHartmann(theImage,lensletSpacing,pix,focal Length,xsizepupil,ysizepupil,method)
Parametry:
Parametr Popis Typ
wfit Elevace vlnoplochy (rozteče mřížky po 0,1 mm) Matice m x n
a Zernikovy koeficienty Vektor
grdx Horizontální souřadnice vlnoplochy Matice m x n grdy Vertikální souřadnice vlnoplochy Matice m x n
theImage Vstupní spotdiagram Matice m x n
lensletSpacing Rozteč mikročočkového pole [um] Double
pix Velikost pixelu kamery [um] Double
focalLength Ohnisková vzdálenost mikročoček [um] Double xsizepupil Horizontální velikost pupily [mm] Double SavedYCentroids Vertikální souřadnice spotů podobného
spotdiagramu (parametr se udává pouze v případě použtí metody Centroid_V3).
Parametr je výstupem funkce Centroid_V2.
Matice m x n
Dokumentace –Shack-Hartmann Stránka 24
Parametr Popis Typ
SavedXCentroids Horizontální souřadnice spotů podobného spotdiagramu (parametr se udává pouze v případě použtí metody Centroid_V3).
Parametr je výstupem funkce Centroid_V2. Spotsize Velikost ROI podobného spotdiagramu
(parametr se udává pouze v případě použtí metody Centroid_V3). Parametr je výstupem funkce Centroid_V2.
Double
Volané funkce:
Centroid_V1, Centroid_V2, Centroid_V3, Comp_data, Zernike_LSF
uEyeCamInit
Inicializace kamery a vytvoření okna s živým obrazem kamery uEye s definovanou velikostí a pozicí.
Předpis funkce:
[cameraHandle]=uEyeCamInit(progrid,position)
Parametry:
Parametr Popis Typ
cameraHandle Handle kamery Handle
progrid Jméno ActiveX control Řetězec
position Pozice a velikost okna [x y šířka výška]. vektor
Dokumentace –Shack-Hartmann Stránka 26
uEyeCreateImage
Stažení snímku z kamery uEye. Snímek je pořízen ve stupních šedi. Kameru je zapotřebí před voláním této funkce inicializovat funkcí uEyeCamInit.
Pořízení snímku je funkcí realizováno na základě volitelného triggeru. Ten může být externí nebo interní. V případě externího triggeru může být triggeru dvojího typu a to trigger reagující na náběžnou hranu nebo na sestupnou hranu externího signálu. Interní triggeru je typu okamžitý; reaguje při volání funkce.
Předpis funkce:
[image,time]=uEyeCreateImage(cameraHandle,resolution,trigger, exposureTime)
Parametry:
Parametr Popis Typ
image Pořízený obrázek (stupně šedi) Matice m x n
time Skutečný čas expozice Double
cameraHandle Handle kamery. Handle
resolution Rozlišení kamery [šířka výška] Vektor trigger Trigger kamery. [‘immediate’]- okamžitý,
[‘rising’]-externí na náběžnou hranu, [‘falling’]- externí reagující na sestupnou hranu
Řetězec
exposureTime Expoziční doba. <0.075 ms, 2745 ms> Double
uEyeCreateVideo
Nahrává video z kamery uEye o definovaném rozlišení, době nahrávání a framerate. U kamery je možné nastavit dobu expozice.
Video je nahráváno pomocí časovače, který pracuje v drop módu. Časovač v drop módu volá funkci pro stažení obrazu z kamery v nastavený interval. Je-li interval nastaven příliš krátký (je nastavená vysoká hodnota framerate) nestíhá se funkce v tomto intervalu vykonávat a její vykonávání zasahuje do dalšího intervalu. Funkce, která má být v tomto intervalu vykonána se nevykoná. Framerate nahraného videa pak neodpovídá požadované framerate. Optimální nastavení framerate je okolo 4 fps. Maximální framerate je samozřejmě omezena výkonem počítače a rozhraním USB 2.0 přes, které je kamera připojena k PC.
Výstupní video je pořizováno v barevném schématu RGB a je tak možné ho přehrávat ve všech standartních přehrávačích jako je například Windows Media Player.
Průběh stahování videa je možné sledovat na waitbaru. Použití waitbaru je volitelné a to z důvodu, že prodlužuje funkci volanou časovačem.
Předpis funkce:
[time]=uEyeCreateVideo(cameraHandle,file,fps,rectime,exposureTime, resolution, waitBar)
Parametry:
Parametr Popis Typ
cameraHandle Handle kamery Handle
file Jméno avi souboru Řetězec
fps Framerate Double
rectime Doba nahrávání [s] Double
waitBar [1]- zobrazovat wait bar, [2]- nezobrazovat wait bar Integer
Dokumentace –Shack-Hartmann Stránka 28
Zernike_LSF
Na základě vstupních dat rekonstruuje vlnoplochu. Rekonstrukce je realizována pomocí Zernikových polynomů a metody nejmenších čtverců. Zernikovy koeficienty jsou získány pomocí diferencí naměřených pozic spotů vůči referenčním pozicím danými roztečemi mikročočkového pole.
Předpis funkce:
[wfit,a,grdxi,grdyi,maski]=Zernike_LSF(RcentroidXCoords,RcentroidYCo ords,centroidX,centroidY,pix,focalLength,mask,grdx,grdy,indexX, indexY,xPupil,yPupil)
Parametry:
Parametr Popis Typ
RcentroidXCoords Referenční horizontální souřadnice těžišť spotů Matice m x n RcentroidYCoords Referenční vertikální souřadnice těžišť spotů Matice m x n centroidX Horizontální souřadnice těžišť spotů Matice m x n centroidY Vertikální souřadnice těžišť spotů Matice m x n
pix Velikost pixelu [um] Double
focalLength Vlnová délka [m] Double
mask Maska, která určuje osvícenou oblast mikročočkového pole
Matice m x n grdx Horizontální souřadnice referenční mřížky Matice m x n grdy Vertikální souřadnice referenční mřížky Matice m x n
indexX =mask Matice m x n
indexY =mask Matice m x n
PupilSize Velikost poloměru pupily Double
xPupil Horizontální velikost pupily [mm] Double yPupil Vertikální velikost pupily [mm] Double
Parametr Popis Typ
grdxi Horizontální pozice uzlů mřížky (rozteč mřížky 0,1 mm) Matice m x n grdyi Vertikální pozice uzlů mřížky (rozteč mřížky 0,1 mm) Matice m x n maski Maska definující oblast pupily
wfit Rekonstruovaná vlnoplocha Matice m x n
a Kompletní soubor Zernikových koeficientů Vektor
Volané funkce:
ZernikeR_66, ZernikeR_55, ZernikeR_36, ZernikeR_28, ZernikeR_21, ZernikeR_15
Dokumentace –Shack-Hartmann Stránka 30
ZernikeR
Určuje Zernikovy polynomy (příloha A) a jejich derivace pro mód 1-66. Polynomy jsou definované pro normalizované body uvnitř kartézských souřadnic.
Předpis funkce:
Z=zernikeR(x,y,n,pd)
Parametry:
Parametr Popis Typ
x Horizontální souřadnice bodů normalizované uvnitř jednotkového kruhu
Skalár, vektor, matice
y Vertikální souřadnice bodů normalizované uvnitř jednotkového kruhu
Skalár, vektor, matice
z Matice hodnot polynomu definovaného módu. Matice m x n
n Mód polynomu Skalár
pd [‘dx‘]- derivace podle x,[‘dy‘]-derivace podle y, [‘h‘]- nederivované
Řetězec
Volané funkce:
ZernikeR_55
ZernikeR_15
Určuje Zernikovy polynomy (příloha A) a jejich derivace pro mód 1-15. Polynomy jsou definované pro normalizované body uvnitř kartézských souřadnic.
Předpis funkce:
Z=zernikeR_15(x,y,n,pd)
Parametry:
Parametr Popis Typ
x Horizontální souřadnice bodů normalizované uvnitř jednotkového kruhu
Skalár, vektor, matice y Vertikální souřadnice bodů normalizované uvnitř
jednotkového kruhu Skalár, vektor, matice
z Matice hodnot polynomu definovaného módu. Matice m x n x k
n Mód polynomu Skalár
pd [‘dx‘]-derivace podle x,[‘dy‘]-derivace podle y, [‘h‘]-nederivované
Řetězec
Dokumentace –Shack-Hartmann Stránka 32
ZernikeR_21
Určuje Zernikovy polynomy (příloha A) a jejich derivace pro mód 1-21. Polynomy jsou definované pro normalizované body uvnitř kartézských souřadnic.
Předpis funkce:
Z=zernikeR_21(x,y,n,pd)
Parametry:
Parametr Popis Typ
x Horizontální souřadnice bodů normalizované uvnitř
jednotkového kruhu. Skalár, vektor,
matice y Vertikální souřadnice bodů normalizované uvnitř
jednotkového kruhu.
Skalár, vektor, matice
z Matice hodnot polynomu definovaného módu. Matice
n Mód polynomu Skalár
pd [‘dx‘]- derivace podle x, [‘dy‘]-derivace podle y, [‘h‘]-nederivované.
Řetězec
ZernikeR_28
Určuje Zernikovy polynomy (příloha A) a jejich derivace pro mód 1-28. Polynomy jsou definované pro normalizované body uvnitř kartézských souřadnic.
Předpis funkce:
Z=zernikeR_28(x,y,n,pd)
Parametry:
Parametr Popis Typ
x Horizontální souřadnice bodů normalizované uvnitř jednotkového kruhu
Skalár, vektor, matice y Vertikální souřadnice bodů normalizované
uvnitř jednotkového kruhu
Skalár, vektor, matice z Matice hodnot polynomu definovaného módu. Matice m x n x k
n Mód polynomu Skalár
pd [‘dx‘]- derivace podle x, [‘dy‘]- derivace podle y, [‘ h‘]- nederivované
Řetězec
Dokumentace –Shack-Hartmann Stránka 34
ZernikeR_36
Určuje Zernikovy polynomy (příloha A) a jejich derivace pro mód 1-36. Polynomy jsou definované pro normalizované body uvnitř kartézských souřadnic.
Předpis funkce:
Z=zernikeR_36(x,y,n,pd)
Parametry:
Parametr Popis Typ
x Horizontální souřadnice bodů. Musí být
normalizované uvnitř jednotkového kruhu Skalár, vektor, matice y Vertikální souřadnice bodů. Musí být normalizované
uvnitř jednotkového kruhu Skalár, vektor, matice
z Matice hodnot polynomu definovaného módu. Matice m x n x k
n Mód polynomu Skalár
pd [‘dx‘]-derivace podle x, [‘dy‘]-derivace podle y, [‘h‘]-nederivované
Řetězec
ZernikeR_45
Určuje Zernikovy polynomy (příloha A) a jejich derivace pro mód 1-45. Polynomy jsou definované pro normalizované body uvnitř kartézských souřadnic.
Předpis funkce:
Z=zernikeR_45(x,y,n,pd)
Parametry:
Parametr Popis Typ
x Horizontální souřadnice bodů. Musí být normalizované uvnitř jednotkového kruhu
Skalár, vektor, matice y Vertikální souřadnice bodů. Musí být
normalizované uvnitř jednotkového kruhu
Skalár, vektor, matice z Matice hodnot polynomu definovaného módu. Matice m x n x k
n Mód polynomu Skalár
pd [‘dx‘]-derivace podle x, [‘dy‘]-derivace podle y, nederivovaná, [‘h‘]-nederivované
Řetězec
Dokumentace –Shack-Hartmann Stránka 36
ZernikeR_55
Určuje Zernikovy polynomy (příloha A) a jejich derivace pro mód 1-55. Polynomy jsou definované pro normalizované body uvnitř kartézských souřadnic.
Předpis funkce:
Z=zernikeR_55(x,y,n,pd)
Parametry:
Parametr Popis Typ
x Horizontální souřadnice bodů normalizované uvnitř jednotkového kruhu
Skalár, vektor, matice y Vertikální souřadnice bodů normalizované uvnitř
jednotkového kruhu
Skalár, vektor, matice z Matice hodnot polynomu definovaného módu. Matice m x n x k
n Mód polynomu Skalár
pd [‘dx‘]-derivace podle x, [‘dy‘]-derivace podle y, [‘h‘]-nederivované
Řetězec
ZernikeR_66
Určuje Zernikovy polynomy (příloha A) a jejich derivace pro mód 1-66. Polynomy jsou definované pro normalizované body uvnitř kartézských souřadnic.
Předpis funkce:
Z=zernikeR_66(x,y,n,pd)
Parametry:
Parametr Popis Typ
x Horizontální souřadnice bodů. Musí být normalizované uvnitř jednotkového kruhu
Skalár, vektor, matice y Vertikální souřadnice bodů. Musí být
normalizované uvnitř jednotkového kruhu
Skalár, vektor, matice z Matice hodnot polynomu definovaného módu. Matice m x n x k
n Mód polynomu Skalár
pd [‘dx‘]-derivace podle x, [‘dy‘]-derivace podle y, [‘h‘]-nederivované
Řetězec
Dokumentace –Shack-Hartmann Stránka 38
compradius
Výpočet poloměru sféry se provádí pomocí přizpůsobení rovnice kruhu do součtu 2D Zernikových polynomů s nulovou azimutální frekvencí (7) (osově symetrické polynomy). Pro výpočet poloměru sféry je tedy v našem případě nutná znalost Zernikových koeficientů pro módy 0, 4, 12, 24, 40 a 60. Samotné přizpůsobování probíhá minimalizací kriteriální funkce SH_circle.
Předpis funkce:
[r y] = compradius(C0, C4, C12, C24, C40, C60)
Parametry:
Parametr Popis Typ
C0 Zernikův koeficient (0. Mód) Double
C4 Zernikův koeficient (4. Mód) Double
C12 Zernikův koeficient (12. Mód) Double
C24 Zernikův koeficient (24. Mód) Double
C40 Zernikův koeficient (40. Mód) Double
C60 Zernikův koeficient (60. Mód) Double
Volané funkce:
SH_circle
SH_circle
Kriteriální funkce pro výpočet poloměru sférických vlnoploch. Vyjadřena je vztahem 1, kde x je horizontální souřadnice 2D křivky, y vertikální souřadnice 2D křivky, l hledané vertikální posunutí a r je hledaný poloměr. Optimalizační metoda určená pro minimalizaci kriterialní funkce je Nealder-Meadova metoda v matlabu implementovaná pod funkcí fminsearch.
∑[ ]
Předpis funkce:
f = SH_circle(x,ax,ay)
Parametry:
Parametr Popis Typ
f Funkční hodnota Double
x Startovací hodnoty Skalár, vektor
ax Horizontální souřadnice 2D křivky Matice, vektor
ay Vertikální souřadnice 2D křivky Matice, vektor
Dokumentace –Shack-Hartmann Stránka 40
Použitá literatura
[1] Xin Hong, Larry Thibos, Kevin Haggerty, Shack-Hartmann Data Analysis Software for MATLAB, Indiana University School of optometry, [online]
URL<research.opt.indiana.edu/Library/Shtoolkit/README.html>
[2] VUT v Brně, Zernikovy polynomy [online],
URL< http://www.vutbr.cz/www_base/zav_prace_soubor_verejne.php?file_id=8284>
Příloha A – Zernikovy polynomy v kartézském tvaru
# n m Polynom 0 0 0
1 1 1 2 1 1
3 1 0 4 2 2
5 2 2
6 2 1 7 2 1 8 2 0 9 3 3
10 3 3
11 3 2 12 3 2
13 3 1 14 3 1
15 3 0 16 4 4
17 4 4
18 4 3 19 4 3
20 4 2 21 4 2
22 4 1 23 4 1
24 4 0 25 5 5
26 5 5
27 5 4 28 5 4
29 5 3 30 5 3 31 5 2
32 5 2
33 5 1 34 5 1
35 5 0