• No results found

Shack-Hartmann - dokumentace 2011

N/A
N/A
Protected

Academic year: 2022

Share "Shack-Hartmann - dokumentace 2011"

Copied!
42
0
0

Loading.... (view fulltext now)

Full text

(1)

2011

Jiří Mastík Dokumentace 20.12.2011

Shack-Hartmann - dokumentace

Obrázek převzat z www.mvkonnik.info

(2)

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

(3)

Dokumentace –Shack-Hartmann Stránka 2

ZernikeR_66 ... 37

compradius ... 38

SH_circle ... 39

Použitá literatura ... 40

(4)

Ú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ů.

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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

(38)

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

(39)

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

(40)

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

(41)

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>

(42)

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

References

Related documents

Zbytek programu je o práci s knihovnami, příjmu dat a následném posílání do programovacího prostředí PureData, ve kterém jsem vytvořil program pro zvukovou

Základní předpoklady matice BCG musí být upraveny, aby matice byla schopna relevantně zachytit a poskytnout požadované informace a aby bylo možné výrobkové řady

Příloha Geologická dokumentace vrtu HM4 AQUATEST

Eleverna verkar inte se tallinjen som ett hjälpmedel utan som ett redskap som de måste använda för att ta sig vidare, något som i sin tur inte berörs i tidigare studier som legat

Popis pozice: smíšený vis, pravá ruka drţí nadhmatem levou stranu kruhu v jeho horní části (těsně u lana), levá paţe je upaţená, končetiny jsou přinoţené, pravá leţí

V klasické optické mikroskopii se dnes používá mnoho metod, kterými lze dosáhnout nej- lepší požadovaných výsledků v závislosti na analyzovaném předmětu. Od mikroskopie

v této diplomové práci se hlouběji seznámíte s mnoţinami bodů daných vlastností, které jsou probírány na střední škole především v planimetrii, kde se odvozují

För MapInfo har punktens läge placerats så att text- läge 1 (nedre vänstra hörnet) ska användas för samtliga texter. Linjetexterna beskrivs med textens centrumlinje. Linjens