České vysoké učení technické v Praze. Vývoj systému pro automatické určování azimutu z měření na Slunce

Podobné dokumenty
Obr. 4 Změna deklinace a vzdálenosti Země od Slunce v průběhu roku

ČASOMÍRA ROTAČNÍ ČASY FYZIKÁLNĚ DEFINOVANÉ ČASY JULIÁNSKÉ DATUM

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Sférická trigonometrie v matematické geografii a astronomii

Základní jednotky v astronomii

pohyb hvězdy ve vesmírném prostoru vlastní pohyb hvězdy pohyb, změna, souřadné soustavy vzhledem ke stálicím precese,

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

5a. Globální referenční systémy Parametry orientace Země (EOP) Aleš Bezděk

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Astronomická pozorování

Korekce souřadnic. 2s [ rad] R. malé změny souřadnic, které je nutno uvažovat při stanovení polohy astronomických objektů. výška pozorovatele

Filip Hroch. Astronomické pozorování. Filip Hroch. Výpočet polohy planety. Drahové elementy. Soustava souřadnic. Pohyb po elipse

Hvězdářský zeměpis Obloha a hvězdná obloha

GEODETICKÁ ASTRONOMIE A KOSMICKÁ GEODEZIE I

Obsah. 1 Sférická astronomie Základní problémy sférické astronomie... 8

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Čas a kalendář. důležitá aplikace astronomie udržování časomíry a kalendáře

MASARYKOVA UNIVERZITA PEDAGOGICKÁ FAKULTA KATEDRA GEOGRAFIE. Planetární geografie seminář

ČAS, KALENDÁŘ A ASTRONOMIE

Jiří Cajthaml. ČVUT v Praze, katedra geomatiky. zimní semestr 2014/2015

Vzdálenosti a východ Slunce

Astronavigace. Zdeněk Halas KDM MFF UK, Aplikace matem. pro učitele

základy astronomie 1 praktikum 3. Astronomické souřadnice

SYLABUS 9. PŘEDNÁŠKY Z INŢENÝRSKÉ GEODÉZIE

OBSAH 1 Úvod Fyzikální charakteristiky Zem Referen ní plochy a soustavy... 21

2. Kinematika bodu a tělesa

Teorie sférické trigonometrie

4. Matematická kartografie

GEOGRAFICKÁ SLUŽBA ARMÁDY ČESKÉ REPUBLIKY

Cyklografie. Cyklický průmět bodu

Úvod do předmětu geodézie

Seriál VII.IV Astronomické souřadnice

1.2 Sluneční hodiny příklad z techniky prostředí

REKONSTRUKCE ASTROLÁBU POMOCÍ STEREOGRAFICKÉ PROJEKCE

Úloha č. 1 : TROJÚHELNÍK. Určení prostorových posunů stavebního objektu

SPŠ STAVEBNÍ České Budějovice MAPOVÁNÍ. JS pro 2. ročník S2G 1. ročník G1Z

Čas a kalendář. RNDr. Aleš Ruda, Ph.D.

Referenční plochy a souřadnice na těchto plochách Zeměpisné, pravoúhlé, polární a kartografické souřadnice

BIOMECHANIKA KINEMATIKA

Kapitola 5. Seznámíme se ze základními vlastnostmi elipsy, hyperboly a paraboly, které

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ

b) Maximální velikost zrychlení automobilu, nemají-li kola prokluzovat, je a = f g. Automobil se bude rozjíždět po dobu t = v 0 fg = mfgv 0

KRUHOVÁ ŠROUBOVICE A JEJÍ VLASTNOSTI

Astronomická refrakce

Souřadnicové výpočty. Geodézie Přednáška

Přednášející: Ing. M. Čábelka Katedra aplikované geoinformatiky a kartografie PřF UK v Praze

ČAS. Anotace: Materiál je určen k výuce zeměpisu v 6. ročníku základní školy. Seznamuje žáky s pohyby Země, počítáním času a časovými pásmy.

Kótované promítání. Úvod. Zobrazení bodu

PLANETA ZEMĚ A JEJÍ POHYBY. Maturitní otázka č. 1

X = A + tu. Obr x = a 1 + tu 1 y = a 2 + tu 2, t R, y = kx + q, k, q R (6.1)

KLASICKÁ MECHANIKA. Předmětem mechaniky matematický popis mechanického pohybu v prostoru a v čase a jeho příčiny.

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Hvězdářská ročenka 2016

Zpracoval Zdeněk Hlaváč. 1. Definujte hlavní kružnici kulové plochy. Uveďte příklady hlavních kružnic na zeměkouli.

Výpočet vzdálenosti Země Slunce pozorováním přechodu Venuše před Sluncem

TÍHOVÉ ZRYCHLENÍ TEORETICKÝ ÚVOD. 9, m s.

ÚHLŮ METODY MĚŘENÍ ÚHLŮ A SMĚRŮ CHYBY PŘI MĚŘENÍ ÚHLŮ A SMĚRŮ

Pro mapování na našem území bylo použito následujících souřadnicových systémů:

Klasická měření v geodetických sítích. Poznámka. Klasická měření v polohových sítích

4. Statika základní pojmy a základy rovnováhy sil

Transformace dat mezi různými datovými zdroji

Soutěžní úlohy části A a B ( )

Přednášející: Ing. M. Čábelka Katedra aplikované geoinformatiky a kartografie PřF UK v Praze

Další plochy technické praxe

Rychlost, zrychlení, tíhové zrychlení

Geometrická optika. předmětu. Obrazový prostor prostor za optickou soustavou (většinou vpravo), v němž může ležet obraz

Hvězdářská ročenka 2018

14. přednáška. Přímka

Elementární křivky a plochy

Čas. John Archibald Wheeler: Čas - to je způsob, jakým příroda zajišťuje, aby se všechno neodehrálo najednou.

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

1.1 Oslunění vnitřního prostoru

Měření momentu setrvačnosti

M - Příprava na 3. čtvrtletní písemnou práci

Praktikum z astronomie 0. Měření refrakce. Zadání

3. Souřadnicové výpočty

A[a 1 ; a 2 ; a 3 ] souřadnice bodu A v kartézské soustavě souřadnic O xyz

Zavedeme-li souřadnicový systém {0, x, y, z}, pak můžeme křivku definovat pomocí vektorové funkce.

Interpretace pozorování planet na obloze a hvězdné obloze

Interpretace pozorování planet na obloze a hvězdné obloze

37. PARABOLA V ANALYTICKÉ GEOMETRII

Čas. John Archibald Wheeler: Čas - to je způsob, jakým příroda zajišťuje, aby se všechno neodehrálo najednou.

5. Stanovení tíhového zrychlení reverzním kyvadlem a studium gravitačního pole

Matematická analýza III.

Astronomie jednoduchými prostředky. Miroslav Jagelka

ANALYTICKÁ GEOMETRIE V ROVINĚ

Měření tíhového zrychlení reverzním kyvadlem

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Geodézie a pozemková evidence

Planeta Země. Pohyby Země a jejich důsledky

Jiří Cajthaml. ČVUT v Praze, katedra geomatiky. zimní semestr 2014/2015

Eudoxovy modely. Apollónios (225 př. Kr.) ukázal, že oba přístupy jsou při aplikaci na Slunce ekvivalentní. Deferent, epicykl a excentr

SYLABUS PŘEDNÁŠKY 10 Z GEODÉZIE 1

Odchylka ekliptiky od roviny Galaxie

Datová analýza. Strana 1 ze 5

b) Po etní ešení Všechny síly soustavy tedy p eložíme do po átku a p ipojíme p íslušné dvojice sil Všechny síly soustavy nahradíme složkami ve sm

Interpretace pozorování planet na obloze a hvězdné obloze

GEODETICKÉ VÝPOČTY I.

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Transkript:

České vysoké učení technické v Praze fakulta stavební Vývoj systému pro automatické určování azimutu z měření na Slunce Developement of system for automatic azimuth determination based on Sun observations DIPLOMOVÁ PRÁCE Kristýna Kitzbergerová Studijní program: Geodézie a kartografie Vedoucí: Ing. Zdeněk Lukeš, Ph.D. Praha, červen 2011

i

Prohlášení Prohlašuji, že jsem svou diplomovou práci na téma Vývoj systému pro automatické určování azimutu z měření na Slunce vypracovala samostatně s použitím literatury a podkladů, které jsou uvedeny na konci této práce. V Praze 13. května 2011............................................................. Kristýna Kitzbergerová ii

Poděkování Ráda bych touto cestou chtěla poděkovat vedoucímu diplomové práce, Ing. Zdeňku Lukešovi, PhD., za jeho profesionální přístup, odborné rady a také čas, který mi věnoval během vypracování mé práce. Poděkování také patří Ing. Janě Kuklíkové za její věcné komentáře, které mi poskytla k teoretické části práce. Ráda bych také poděkovala mé rodině a přátelům za jejich podporu a trpělivost, kterou jsem měla v průběhu celého studia, protože bez této podpory bych vysokoškolské vzdělání nedokončila. V neposlední řadě také patří poděkování i open-source komunitě, že vytvořila software jako je L A TEX a GNU/Linux, protože výrazně usnadnil psaní této práce. iii

Abstrakt Tato diplomová práce se zabývá problematikou určování astronomického azimutu pomocí hodinového úhlu z měření na Slunce. K tomuto účelu byl vyvinut systém pro automatické sledování a pořizování snímků Slunce. Základem systému jsou motorizovaný teodolit se servopohonem a kompaktní fotoaparát. Tyto komponenty jsou řízeny aplikací nazvanou SunTraQ a pořízené snímky zpracovává aplikace Image_CV. Obě tyto aplikace vznikly v rámci diplomové práce a jsou napsány v jazyce C++ s použitím knihoven Qt a OpenCV. Klíčová slova: geodetická astronomie, astronomický azimut, efemeridy Slunce, C++, Qt, OpenCV, XML, SQLite This master thesis deals with determination of astronomical azimuth based on Sun observations. The system for the automatic tracking and automatic picture taking of Sun has been developed for this purpose. The headstone is created by motorized theodolite with servo-drive and compact camera that are both controlled by software application called SunTraQ. Taken pictures are afterward proceed by another software application called Image_CV. These both applications were created during working out this master thesis and are both written in C++ with using Qt and OpenCV library. Keywords: geodetic astronomy, astronomical azimuth, sun ephemeris, C++, Qt, OpenCV, XML, SQLite iv

Seznam použitých zkratek AGS DOM EXIF GUI IAU IDE IERS JD MJD NTP SAX SELČ SEČ SQL TAI TDT UT1 UTC XML Astronomicko-geodetická síť Objektový model dokumentu Výměnný formát souboru obrazu Grafické uživatelské rozhraní Mezinárodní astronomická unie Integrované vývojové prostředí Mezinárodní služba rotace země Juliánské datum Modifikované juliánské datum Protokol pro synchronizaci vnitřních hodin počítače Jednoduché API pro XML Středoevropský letní čas čas Středoevropský zimní čas Strukturovaný dotazovací jazyk Systém mezinárodního atomového času Terestrický dynamický čas Rotační světový čas Koordinovaný světový čas Rozšiřitelný značkovací jazyk v

Seznam obrázků 1.1 Řez hladinovou plochou[15]........................ 4 1.2 Schéma astronomických zeměpisných souřadnic............. 4 1.3 Obzorníková soustava[15].......................... 6 1.4 Rovníkové soustavy[15]........................... 7 1.5 Transformace S o S r1 a nautický trojúhelník.............. 10 1.6 Pohyb zemské osy[4]............................ 13 1.7 Schéma astronomické refrakce....................... 16 2.1 Nautický trojúhelník............................ 20 2.2 Průběh směrodatné odchylky azimutu ve dnech 21.3.2011, 21.6.2011 a 22.12.2011.................................. 24 2.3 Průběh členů u t a ϕ ve dnech 21.3.2011, 21.6.2011 a 22.12.2011.. 24 2.4 Průběh azimutu ve dnech 21.3.2011, 21.6.2011 a 22.12.2011....... 25 2.5 Průběh zenitové vzdálenosti ve dnech 21.3.2011, 21.6.2011 a 22.12.2011 25 3.1 Motorizovaná totální stanice s fotoaparátem............... 27 3.2 SunTraQ - úvodní dialog.......................... 28 3.3 SunTraQ - detaily projektu........................ 29 3.4 SunTraQ - základní nastavení projektu.................. 29 3.5 SunTraQ - nastavení fotoaparátu..................... 30 3.6 SunTraQ - Tracker dialog......................... 31 3.7 Aplikace Azimuth_CV úvodní dialog.................. 32 3.8 Aplikace Azimuth_CV výběr metod pro zpracování obrazu...... 32 3.9 Aplikace Azimuth_CV průběh výpočtu................. 33 3.10 Aplikace Azimuth_CV dialog s výsledky................ 33 4.1 Schéma aplikace SunTraQ......................... 35 4.2 Asynchronní komunikace[17]........................ 42 5.1 Parametrické vyjádření přímky...................... 51 5.2 Detekce středu Slunce metodou Houghovy transformace......... 52 5.3 Detekce středu Slunce metodou Template Matching........... 53 5.4 Volba šablony pro metodu template matching.............. 54 5.5 Histogramy jednotlivých kanálu R, G a B................ 54 5.6 Rozdělení fotografie na kanály R, G a B................. 55 5.7 Detekce středu Slunce metodou prahování pro kanály R, G a B.... 57 5.8 Aplikace operace XOR na výsledky prahování pro RGB kanály..... 57 5.9 Detekce středu Slunce metodou prahování pro kanály R, G a B.... 58 vi

SEZNAM OBRÁZKŮ 5.10 Detekce nitkového kříže a použitá šablona (několikrát zvětšená).... 59 5.11 Detail detekovaného středu nitkového kříže................ 59 5.12 Schéma OpenCV knihovny......................... 60 5.13 Schéma aplikace Azimuth_CV....................... 61 vii

Seznam ukázek zdrojových kódů 4.1 Seznam sériových portů.......................... 36 4.2 Pořízení snímku............................... 37 4.3 Stažení snímku z paměti fotoaparátu................... 37 4.4 Čas pořízení snímku............................ 38 4.5 Ukázka souboru XML........................... 40 4.6 Metoda open_port()............................ 43 4.7 Otevření sériového portu.......................... 43 4.8 Nastavení přenosové rychlosti sériového portu.............. 43 4.9 Nastavení velikosti znaku pro sériovou komunikaci............ 44 4.10 Nastavení parity sériového portu...................... 44 4.11 Natavení stop bitů pro sériovou komunikaci............... 45 4.12 Čtení dat z totální stanice přes sériové rozhraní............. 45 4.13 Pohyb totální stanice přes sériové rozhraní................ 46 4.14 Vytvoření spojení s databází SQLite.................... 47 4.15 Vytvoření tabulky v databázi....................... 47 4.16 Import dat do databáze.......................... 48 4.17 Metoda získání hodnoty rektascenze pro zvolený den v roce....... 49 5.1 Deklarace metody cvhoughcircles()................... 51 5.2 Deklarace metody cvmatchtemplate().................. 52 5.3 Deklarace metody cvthreshold()..................... 55 5.4 Implementace metody thresholding().................. 55 viii

Obsah Předmluva 2 1 Astronomické souřadnice a časomíra 3 1.1 Astronomické zeměpisné souřadnice.................... 3 1.2 Astronomické souřadnicové soustavy................... 5 1.2.1 Obzorníková souřadnicová soustava................ 5 1.2.2 Rovníkové souřadnicové soustavy................. 7 1.2.3 Transformace mezi astronomickými souřadnicovými soustavami 9 1.3 Časomíra a převody časů.......................... 11 1.3.1 Rotační časy............................. 12 1.3.2 Atomový čas............................ 14 1.3.3 Terestrický dynamický čas..................... 15 1.3.4 Převody časů............................ 15 1.4 Změny souřadnic refrakce, aberace, paralaxa.............. 16 1.4.1 Vliv refrakce na obzorníkové souřadnice.............. 16 1.4.2 Vliv denní aberace na obzorníkové souřadnice.......... 17 1.4.3 Vliv denní paralaxy na obzorníkové souřadnice.......... 18 2 Určování astronomického azimutu 19 2.1 Určování astronomického azimutu Slunce pomocí hodinového úhlu... 20 2.2 Rozbor přesnosti astronomického azimutu pozemního cíle........ 22 3 Systém pro automatické určování azimutu 26 3.1 Software pro automatické pořizování snímků Slunce........... 28 3.2 Software pro zpracování obrazu...................... 31 4 Implementace aplikace SunTraQ 34 4.1 Třída SunTrackerUI............................ 35 4.2 Třída SunWizard.............................. 36 4.3 Třída SunViewer.............................. 38 4.4 Čtení a zápis XML............................. 40 4.5 Komunikace přes sériový port....................... 42 4.6 Databáze efemerid Slunce......................... 46 5 Software pro zpracování obrazu 50 5.1 Problematika detekce středu slunečního disku.............. 50 5.1.1 Houghova transformace....................... 50 ix

OBSAH 5.1.2 Metoda Template Matching.................... 52 5.1.3 Metoda prahování (Thresholding)................. 54 5.2 Detekce středu nitkového kříže....................... 58 5.3 Implementace aplikace Azimuth_CV................... 60 5.3.1 Třída MainWindow......................... 61 5.3.2 Třída SunImageUI......................... 61 5.3.3 Třída ImageThread......................... 62 Závěr 62 Literatura 65 A Obsah přiloženého CD 66 x

Předmluva Vývoj optických přístrojů pro geodetickou astronomii byl z velké části ukončen v 80. letech 20. století s příchodem moderní techniky v podobě globálních navigačních systémů, které astronomická měření z velké části nahradily. Navzdory tomu jsou však v některých oblastech stále astronomické metody nenahraditelné, konkrétně při určování hodnot tížnicových odchylek měřením na hvězdy. S vývojem techniky dochází i k vývoji přístrojů pro měření. Výrazný posun v konstrukci přístrojů pro geodetickou astronomii je spojen s příchodem CCD kamer pro digitální snímání a ukládání obrazu. Této problematice se věnují na univerzitě ETH v Curychu ve Švýcarsku, kde vyvinuli plně automatický systém DIADEM, na univerzitě ve Vídni, kde vyvinuli systém nazvaný ZC-G1 a v České republice se touto problematikou zabývá Ústav geodézie fakulty stavební VUT v Brně, kde byl vyvinut mobilní automatizovaný astronomický systém MAAS-1 pro určování hodnot tížnicových odchylek ve volném terénu přímým měřením. Jen pro ilustraci, MAAS-1 je přenosný systém pro měření přesných astronomických souřadnic ve volném terénu. Systém je založen na motorizované totální stanici Topcon GPT 9001A doplněné o senzor CCD, časovou základnou, kterou tvoří křemenné hodiny průběžně řízené sekundovými impulsy z přijímače GPS a přenosný počítač. Proces měření je tedy plně automatizován. Totální stanice je řízena vzdáleně z přenosného počítače. Snímky jsou pořizovány kamerou s rozlišením 720x576 pixelů s frekvencí 25 snímků za sekundu. Úhlová velikost jednoho pixelu je přibližně 3.[16] Tuto diplomovou práci nelze v žádném případě s těmito projekty srovnávat, a to jak z finanční stránky, tak i díky časovému omezení na zpracování. Práce má sloužit hlavně jako pomůcka při výuce předmětu astronomické a kosmické geodézie jako doplněk při měření klasickými metodami. Má za úkol dokázat, že lze spojit moderní techniku s klasickými metodami měření. Diplomová práce je rozdělena do pěti kapitol. V první kapitole jsou popsány astronomické souřadnicové soustavy a transformace mezi nimi. Dále jsou popsány druhy časů používané v astronomické geodézii a převody mezi nimi. Druhá kapitola navazuje na první a obsahuje popis metody určování astronomického azimutu pomocí hodinového úhlu. Dále jsou stručně zmíněny jevy, které mají vliv na obzorníkové astronomické souřadnice, konkrétně vliv refrakce, denní paralaxy a aberace. Poslední část kapitoly je věnována rozboru přesnosti. Třetí kapitola se věnuje popisům samotných aplikací, které vznikly v rámci této práce. Obsahuje také popis aplikací z pohledu uživatele a návod na jejich použití. Čtvrtá kapitola se věnuje samotné implementaci aplikace SunTraQ, která vznikla v rámci této práce. Tato kapitola popisuje vývoj vlastního automatického systému pro měření astronomického azimutu měřením na Slunce, popisuje jednotlivé třídy a jejich metody. 1

OBSAH Pátá kapitola se pak věnuje problematice zpracování obrazu, určování středu slunečního disku a detekcí nitkového kříže. Popisuje metody použité pro detekci středu Slunce a detekci středu nitkového kříže v rámci aplikace Azimuth_CV. Aplikace SunTraQ a Azimuth_CV byly napsány pod operačním systémem Debian "Wheezy" v jazyce C++ s použitím knihovny Qt verze 4.7. Diplomová práce je vysázena v typografickém systému L A TEX. 2

1 Astronomické souřadnice a časomíra Tato kapitola pojednává o souřadnicových soustavách používaných v geodetické astronomii. Protože Země obíhá kolem Slunce a zároveň rotuje kolem své osy, neexistuje pouze jedna souřadnicová soustava, ale hned několik. Většina těchto soustav je závislá na čase, protože vychází z rotace Země, tzn. musíme znát přesný čas pozorování, abychom mohli jednoznačně určit polohu astronomického objektu. Souřadnice tohoto objektu se mění nejen s časem, ale mohou se měnit i s posunem místa pozorování. Na druhou stranu existují souřadnicové soustavy, které závislé na čase nejsou a kterých se využívá pro tabelaci souřadnic v astronomických ročenkách. Astronomické souřadnicové soustavy lze rozdělit na dvě skupiny, a to na souřadnicovou soustavu astronomických zeměpisných souřadnic, které se používají k určení polohy bodu na Zemi a na sférické astronomické souřadnicové soustavy, které se používají pro vyjádření polohy kosmických těles. Protože Země nerotuje rovnoměrně kolem své osy, tak i čas neplyne rovnoměrně. V této kapitole je také nastíněn postup, jak se s tímto nerovnoměrným plynutím času lze vypořádat. 1.1 Astronomické zeměpisné souřadnice Soustava astronomických zeměpisných souřadnic S A (ϕ, λ, A) se používá pro určení polohy bodu na Zemi a je vztažena ke hladinové ploše procházející bodem, na kterém provádíme měření, k okamžité poloze osy rotace Země a jí odpovídající poloze rovníku. Obrázek 1.1 zobrazuje řez hladinovou plochou procházející bodem T. Tečna k tížnici procházející bodem T se nazývá astronomická normála. Rovina procházející bodem T, která je kolmá k astronomické normále, se nazývá obzorník nebo také astronomický horizont. Okamžitá rotační osa protne hladinovou plochu ve dvou místech, které se nazývají severní a jižní astronomický pól P n a P s. Rovina procházející bodem O (těžištěm 3

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA Země), která je kolmá na rotační osu, vytváří okamžitou polohu roviny astronomického rovníku. rotační osa tížnice astronomická normála (svislice) P n T terén hladinová plocha O astronomický rovník Obrázek 1.1: Řez hladinovou plochou[15] Rovina tvořená svislicí procházející bodem T a rovnoběžkou s rotační osou se nazývá astronomická rovina místního poledníku. Astronomické souřadnice můžeme nyní definovat podle obrázku 1.2. Astronomická zeměpisná šířka ϕ bodu T je definována jako úhel mezi svislicí procházející bodem T a okamžitou polohou astronomického rovníku, měří se od rovníku kladně na sever v intervalu 0 až 90 a záporně na jih. Astronomická zeměpisná délka λ bodu T je úhel, který svírá astronomická rovina místního poledníku bodu T s astronomickou rovinou základního poledníku, měří se v matematicky kladném smyslu (k východu) a nabývá hodnot 0 až 360 nebo také 0h až 24h v hodinové míře. Astronomický azimut A bodu Q je definován jako úhel mezi rovinou místního poledníku bodu T a rovinou procházející bodem T a Q, měří se od severní větve místního poledníku v matematicky záporném smyslu (od severu k východu) a nabývá hodnot 0 až 360. astronomická normála (svislice) λ rovina místního poledníku rovnoběžka s rotační osou svislice Q φ T terén G základní poledník P n T místní poledník bodu T T hladinová plocha rovina astronomického rovníku Obrázek 1.2: Schéma astronomických zeměpisných souřadnic 4

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA 1.2 Astronomické souřadnicové soustavy Polohu kosmických těles (hvězd, planet, družic, kvasarů, atd) v prostoru vyjadřujeme pomocí astronomických souřadnic, a to pomocí sférických nebo pravoúhlých souřadnic. Pro určení sférických souřadnic je nutné zvolit sféru, základní směry a roviny. Volíme sféru o poloměru 1, jako základní směry volíme svislici v daném místě pozorování, směr rotační osy Země k pólu ekliptiky a za základní roviny volíme rovinu obzorníku v daném místě pozorování, rovinu rovníku, popř. rovinu ekliptiky. Podle základních směrů a rovin rozdělujeme sférické souřadnicové soustavy na obzorníkovou rovníkovou závislou na čase nezávislou na čase ekliptikální galaktickou Některé z uvedených souřadnicových soustav dělíme ještě podle polohy středu sféry na topocentrickou geocentrickou heliocentrickou barycentrickou atd. Pro účely této práce přicházejí v úvahu pouze některé z výše uvedených souřadnicových soustav. Tyto soustavy jsou popsány v následujícím textu. 1.2.1 Obzorníková souřadnicová soustava Základní rovinou obzorníkové soustavy je rovina obzorníku, která protíná jednotkovou sféru v hlavní kružnici a je tečná k hladinové ploše v daném místě. Základním směrem je směr svislice v daném bodě T, ze kterého pozorujeme kosmické objekty. Do bodu T je umístěn střed jednotkové sféry O - viz. obrázek 1.3. Svislice protne jednotkovou sféru v bodě Z, který se nazývá zenit a v bodě Na, který se nazývá nadir. Rovnoběžka s rotační osou procházející bodem O protne jednotkovou sféru v severním pólu P n a jižním pólu P s. Hlavní kružnice procházející zenitem a nadirem se nazývají výškové kružnice (vertikály). Významné jsou 2 výškové kružnice místní poledník, který prochází zenitem, nadirem, severním a jižním pólem, a první vertikál procházející zenitem, nadirem a jehož rovina je kolmá na rovinu místního poledníku, prochází tedy severním bodem N, jižním bodem S, západním bodem W a východním bodem E. 5

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA almukantarat z 0 Zenit místní poledník P n zenit Z rovnoběžka s rovníkem N W E T=0 H z h a výšková kružnice S (jih) obzorník x 0 o 90 -φ φ o φ 90 -φ T=0 svislice místní poledník obzorník fyzický povrh Země y 0 Nadir Na nadir Obrázek 1.3: Obzorníková soustava[15] Na obrázku 1.3 je také znázorněna pravoúhlá soustava x 0, y 0 a z 0. Obzorníková souřadnicová soustava je definována obzorníkem a místním poledníkem. Sférické souřadnice se nazývají azimut a a zenitová vzdálenost z, resp. výška hvězdy h. Proložíme-li hvězdou H rovinu vertikálu, můžeme určit obzorníkové souřadnice. Vodorovná rovina proložená hvězdou H protne jednotkovou sféru ve vedlejší kružnici nazvanou almukantarat. Hvězdy nacházející se na almukantaratu mají stejnou zenitovou vzdálenost, resp. výšku. Azimut a je úhel, který svírá rovina vertikálu s rovinou místního poledníku, měří se od jižní větve místního poledníku v matematicky záporném smyslu (k západu) a nabývá hodnot < 0, 360 >. Zenitová vzdálenost z je úhel měřený po výškové kružnici od zenitu ke hvězdě a nabývá hodnot < 0, 180 >. Výška hvězdy h je úhel, který svírá směr ke hvězdě s rovinou obzorníku a nabývá hodnot < 90, 90 >. Mezi výškou hvězdy a zenitovou vzdáleností platí jednoduchý vztah z + h = 90 (1.1) Souřadnice hvězdy v obzorníkové soustavě jsou závislé na čase a jsou vztaženy k topocentru, mění se tedy s časem a se změnou pozorovacího místa. Každému místu na Zemi, v závislosti na zeměpisné šířce ϕ a zeměpisné délce λ, odpovídá jiný obzorník a zenit. Astronomická zeměpisná šířka v obzorníkové soustavě se rovná výšce severního pólu P n nad obzorem. Vztahy mezi systémem směrových kosinů v obzorníkové soustavě a obzorníkových souřadnic je následující S o = x o y o z o = cos h cos a cos h sin a sin h = sin z cos a sin z sin a cos z (1.2) 6

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA 1.2.2 Rovníkové souřadnicové soustavy Základním směrem rovníkových souřadnicových soustav je směr osy rotace Země, která protne jednotkovou sféru v severním P n a jižním P s světovém pólu viz. obrázek 1.4. z r1 = z r2 deklinační rovnoběžka P n místní poledník H deklinační kružnice N Země O δ t S (jih) nebeský rovník ϒ α s xr1 x r2 P s Obrázek 1.4: Rovníkové soustavy[15] Základní rovinou je rovina rovníku kolmá k ose rotace a procházející bodem O (geocentrum). Rovina rovníku protne jednotkovou sféru v hlavní kružnici nazvané světový (nebeský) rovník. Kružnice procházející světovými póly se nazývají deklinační kružnice a vedlejší kružnice rovnoběžné s rovníkem se nazývají deklinační rovnoběžky, po kterých hvězdy konají svůj zdánlivý denní pohyb. Polohu kosmického tělesa H vůči rovníku určuje deklinace δ. Deklinace vyjadřuje úhlovou vzdálenost tohoto tělesa od rovníku měřenou podél deklinační kružnice a nabývá hodnot < 90, 90 > měřeno od jižního pólu k severnímu. Rovníkové souřadnicové soustavy se rozdělují na souřadnicovou soustavu závislou na čase a souřadnicovou soustavu nezávislou na čase. První rovníková souřadnicová soustava závislá na čase První rovníková souřadnicová soustava je závislá na čase, protože poloha kosmického tělesa je jednoznačně určena pomocí hodinového úhlu t a již zmíněné deklinace δ viz obrázek 1.4. Hodinový úhel t je úhel, který svírá rovina místního poledníku s deklinační kružnicí, na níž se objekt nachází. Měří se od jižní větve místního poledníku v matematicky záporném smyslu, vyjadřuje se v hodinové míře a nabývá hodnot <0h, 24h>. V pravoúhlé souřadnicové soustavě směřuje osa x r1 do průsečíku roviny místního poledníku a rovníku, osa y r1 prochází východním bodem (E) a osa z r1 severním pólem P n. Vztahy mezi směrovými kosiny a rovníkovými souřadnicemi jsou dány následujícím vztahem: S r1 = x r1 y r1 z r1 7 = cos δ cos t cos δ sin t sin δ (1.3)

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA Druhá rovníková souřadnicová soustava nezávislá na čase Základním směrem druhé rovníkové souřadnicové soustavy je rovina procházející jarním bodem à. Jedná se o průsečík světového rovníku s rovinou ekliptiky a Slunce jím prochází v den jarní rovnodennosti. Druhý průsečík, který vznikne průnikem zmíněných dvou rovin se nazývá podzimní bod æ a Slunce jím prochází v den podzimní rovnodennosti. Poloha kosmického tělesa H je pak jednoznačně určena pomocí rektascenze α a již zmíněné deklinace δ viz. obrázek 1.4. Rektascenze α je úhel mezi rovinou deklinační kružnice jarního bodu a rovinou deklinační kružnice, na níž se nachází daný objekt. Vyjadřuje se v hodinové míře, měří se v matematicky kladném smyslu a nabývá hodnot < 0h, 24h >. Rektascenze není závislá na místě pozorovatele ani na rotaci Země, jak bylo zvykem u již zmíněných astronomických souřadnicových soustav. Osa x r2 pravoúhlé souřadnicové soustavy prochází jarním bodem à, osa z r2 severním pólem P n a osa y r2 doplňuje pravotočivou souřadnicovou soustavu. Vztahy mezi systémem směrových kosinů a rovníkových souřadnic jsou poté následující S r2 = x r2 y r2 z r2 = cos δ cos α cos δ sin α sin δ Následující tabulka sumarizuje astronomické souřadnicové soustavy (1.4) soustava Obzorníková S o Rovníková S r1 Rovníková S r2 sférické souřadnice astronomický azimut a zenitová vzdálenost z hodinový úhel t deklinace δ rektascenze α deklinace δ smysl měření "od" "směr"(mat) jižní větev místního poledníku zenitu jižní větev místního poledníku rovníku jarního bodu + à rovníku Tabulka 1.1: Přehled astronomických souřadnicových soustav[15] 8

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA 1.2.3 Transformace mezi astronomickými souřadnicovými soustavami Před odvozením transformace mezi astronomickými souřadnicovými soustavami je nejdříve nutné nadefinovat matice rotace kolem jednotlivých os x, y, z. Matice rotace se určí pomocí směrových kosinů nové osy se starou následovně Matice rotace kolem osy X o úhel α cos(x x) cos(x y) cos(x z) cos(y x) cos(y y) cos(y z) cos(z x) cos(z y) cos(z z) X(α) = Matice rotace kolem osy Y o úhel β Y(β) = Matice rotace kolem osy Z o úhel γ Z(γ) = 1 0 0 0 cos α sin α 0 sin α cos α cos β 0 sin β 0 1 0 sin β 0 cos β cos γ sin γ 0 sin γ cos γ 0 0 0 1 (1.5) (1.6) (1.7) (1.8) Transformace S o S r1 Z následujícího obrázku 1.5 je patrné, že ze soustavy S r1 přejdeme do soustavy S o pootočením soustavy o úhel 90 ϕ kolem osy y o = y r1 v matematicky kladném smyslu, tedy S o = Y(90 ϕ)s r1 (1.9) Naopak, z obzorníkové soustavy S o přejdeme do první rovníkové soustavy S r1 otáčením kolem téže osy, ale v opačném smyslu, tedy S r1 = Y [ (90 ϕ)] S o (1.10) Dosadíme-li za S o z rovnice 1.2 a za S r1 z rovnice 1.3, dostaneme vztahy mezi obzorníkovými a rovníkovými souřadnicemi 9

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA x r1 z 0 Z z r1 rovnoběžka s osou rotace P n o 90 -φ t z 180 - a o směr o 90 -φ P n místní poledník paralaktický úhel matematicky kladný x 0 o 90 -φ y r1 = y 0 obzorník rovník N S obzornník nebeský rovník Na Obrázek 1.5: Transformace S o S r1 a nautický trojúhelník tan a = tan z = tan t = tan δ = sin t sin ϕ cos t tan δ cos ϕ sin t (cos ϕ cos t + tan δ sin ϕ) sin a sin a cos ϕ cot z sin ϕ cos a (cot z sin ϕ cos ϕ cos a) sin t sin a (1.11) (1.12) (1.13) (1.14) Ke stejnému výsledku dospějeme, pokud použijeme tzv. nautický trojúhelník a věty sférické trigonometrie. Transformace S r1 S r2 Z obrázku 1.4 je zřejmé, že z první rovníkové souřadnicové soustavy přejdeme do druhé rovníkové souřadnicové soustavy pootočením soustavy o úhel s, který svírá rovina místního poledníku s deklinační rovinou procházející jarním bodem kolem osy z r1 = z r2 v matematicky záporném smyslu, tedy a naopak S r2 = Z( s)s r1 (1.15) S r1 = Z(s)S r2 (1.16) Úhel s se nazývá místní hvězdný čas a je definován také jako hodinový úhel jarního bodu. Dosazením do předchozích rovnic, získáme vztah mezi rektascenzí a hodinovým úhlem t = s α (1.17) 10

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA Transformace S o S r2 Pro transformaci mezi obzorníkovou soustavou a druhou rovníkovou soustavou využijeme kombinace již odvozených vztahů (1.9, 1.10, 1.15, 1.16) a platí a naopak S o = Y(90 ϕ)z(s)s r2 (1.18) S r2 = Z( s)y [ (90 ϕ)] S r2 (1.19) 1.3 Časomíra a převody časů Čas je jednou ze základních fyzikálních veličin a vyjadřuje dobu trvání určitého děje nebo umístění události v časové škále. Požadavkem je, aby byl rovnoměrný z důvodů jeho interpolace a extrapolace. Je nutné definovat počáteční okamžik (epochu) a časové jednotky, jimiž je dáno měřítko odpovídajícího časového systému. Časy můžeme rozdělit na hvězdný a sluneční čas vyplývají z rotace Země efemeridový čas založen na oběhu Země a planet kolem Slunce atomový čas založen na elektromagnetickém vlnění dynamický čas slouží jako argumenty dynamických teorií pohybů Slunce, Měsíce a planet. Aby bylo možné průběžně vyjadřovat časové údaje v co největším časovém období, bylo zavedeno tzv. Juliánské datum (JD). Juliánské datum je definováno jako počet dní, které uplynuly od poledne světového času dne 1. ledna roku 4713 př. n. l. Zapisuje se jako desetinné číslo, přičemž zlomková část čísla odpovídá příslušnému dílu dne. Časová jednotka je juliánský den, který se dělí na 24 hodin po 60 minutách a minuta po 60 vteřinách. Juliánský rok obsahuje 365.25 dní a juliánské století 36525 dní. Juliánské datum pro 0 h UT1 libovolného data je možné vypočítat následovně (d den, m měsíc, r rok): JD = 1720994.5 + [r 365.25] + 2 + [ ] [ ] r r + [30.6001 (m + 1)] + d (1.20) 400 100 kde pro m = 1, 2 platí r = r 1, m = m+12 a pro ostatní měsíce platí r = r, m = m. Hranatá závorka značí, že do výpočtu vstupuje pouze celočíselná část výrazu. Pro snazší počítání se zavádí modifikované juliánské datum (MJD), pro které platí M JD = JD 2400000.5 (1.21) Epocha je jistý přesně definovaný okamžik na časové škále. K tomuto okamžiku se vztahují souřadnice hvězd v katalozích, základní elementy, efemeridy planet, atd. Mezinárodní astronomickou unií (IAU) byla zavedena standardní juliánská epocha J2000.0 11

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA 1.3.1 Rotační časy Rotační časy jsou odvozeny z periodického rotačního pohybu Země kolem její rotační osy. Rotace Země kolem své osy je však nerovnoměrná, a proto i tyto časy jsou nerovnoměrné. Rotační časy dělíme na hvězdné sluneční Před samotnou definicí zmíněných časů je nutné ještě uvést 2 jevy, které ovlivňují rotační časy jedná se o precesi a nutaci. Precese a nutace Gravitační působení Slunce, Měsíce a planet na zploštělou zemi způsobuje jev precese a nutace. Světové póly rovníku a ekliptiky a spolu s nimi i rovník a ekliptika mění svoji polohu v prostoru, z čehož plyne fakt, že se neustále mění základní směry a roviny rovníkových souřadnicových systémů a tím i poloha jarního bodu vůči stálicím. Pohyb světových pólů můžeme rozdělit na 2 složky sekulární (věkovitou) precesi periodickou nutaci Precese je jev, kdy se zemská osa pohybuje po plášti kužele s vrcholovým úhlem, který je rovný sklonu ekliptiky, tedy zhruba 23.5. Tento pohyb se děje v matematicky záporném smyslu a doba oběhu trvá přibližně 25800 let, tato doba se také nazývá Platónský rok. V důsledku pohybu středního světového pólu mění svou polohu i střední světový rovník, a tím se mění i poloha jarního bodu. Hodnota posunu činí zhruba 50.3 /rok. Průsečík středního světového rovníku s rovinou ekliptiky nazýváme střední jarní bod. Největší vliv na pohyb zemské osy má tzv. lunisolární precese, která vzniká působením Slunce a Měsíce. Nutace je jev, při kterém se severní pól P n pohybuje kolem středního severního pólu P n. Jedná se o periodický jev s amplitudou asi 9.21 a periodou 18.62 let. Následující obrázek 1.6 znázorňuje pohyb zemské osy způsobený vlivem precese a nutace. Hvězdný čas Hvězdný čas se používá k popisu zdánlivého pohybu hvězd po obloze, který je způsobem rotací Země kolem své osy. Hvězdný čas je definován jako hodinový úhel jarního bodu. S ohledem na polohu jarního bodu rozeznáváme 2 typy hvězdných časů střední hvězdný čas vztažen ke střednímu jarnímu bodu, jehož poloha je ovlivněna pouze precesí pravý hvězdný čas vztažen k pravému jarnímu bodu, jehož poloha je ovlivněna jak precesí, tak i nutací 12

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA Obrázek 1.6: Pohyb zemské osy[4] Rozdíl mezi pravým hvězdným časem a středním může činit až 1.5 s. Jelikož se jarní bod pohybuje v důsledku precese v opačném smyslu než je rotace Země, dochází ke zkrácení středního hvězdného dne vůči jedné otočce Země o 0.0084 s. Nerovnoměrnost pravého hvězdného času oproti střednímu je dále zvyšována periodickým vlivem nutace. Hvězdný čas dále dělíme na světový (greenwichský) hvězdný čas S, který je vztažen k základnímu nultému poledníku místní hvězdný čas s, který je vztažen k místnímu poledníku Platí jednoduchá rovnice s S = λ Jednotkou hvězdného času je hvězdný den. Hvězdný den je definován jako doba, která uplyne mezi dvěma horními kulminacemi jarního bodu. Hvězdný den se dále dělí na 24 hvězdných hodin po 60 hvězdných minutách. Hvězdná minuta se dále dělí na 60 hvězdných sekund. Sluneční čas Sluneční čas je odvozen ze zdánlivého pohybu Slunce a stejně jako hvězdný čas se rozděluje na pravý sluneční čas střední sluneční čas Jednotkou času je sluneční den. Sluneční den je časový interval, který uběhne mezi po sobě následujícími dolními kulminacemi Slunce. Sluneční den se dále dělí na 24 slunečních hodin, ty na 60 slunečních minut, atd. Pravý světový (greenwichský) sluneční čas P je definován jako hodinový úhel skutečného Slunce, zvětšený o 12 hodin: P = t gr + 12 h 13

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA Pro místní pravý sluneční čas p platí: a obdobně p = t + 12 h p P = λ Hodinový úhel pravého slunce se mění nerovnoměrně, protože Slunce se zdánlivě pohybuje v rovině ekliptiky podle Keplerových zákonů, přičemž čas se počítá v rovině rovníku, jsou tedy pravé sluneční časy jako časové škály nevhodné. Ze zmíněných důvodů je nutné zavést střední sluneční čas (m), kde pomyslnou ručičkou na hodinách je střední Slunce À, také označováno jako II. fiktivní Slunce, jež se pohybuje rovnoměrně po rovníku. Vztah mezi středním a pravým slunečním časem udává časová rovnice Vztah mezi hvězdným a slunečním dnem E = p m (1.22) Hvězdný den je zhruba o 4 minuty kratší než sluneční, což je to dáno tím, že zatímco Země vykoná jednu otočku vůči hvězdám, posune se zároveň po své dráze kolem Slunce asi o 2.5 milionu kilometrů, takže Slunce v tu chvíli není na stejném místě na obloze jako na počátku hvězdného dne. Za jeden rok vykoná Země o jednu otočku více vůči vzdáleným hvězdám než vůči Slunci, které oběhla. Vztah mezi hvězdným a slunečním časem lze vyjádřit pomocí tropického roku. Tropický rok je definován jako doba mezi dvěma sousedními průchody středního Slunce středním jarním bodem à. Tropický rok tedy obsahuje 365.2422 slunečních dní a 366.2422 hvězdných dní. Vztah mezi slunečním časem a hvězdným je tedy následující 1.3.2 Atomový čas hvezdna mira slunecni mira = 366.2422 = 1 + µ 1.0027 (1.23) 365.2422 Základní jednotkou času je atomová sekunda, která je v souladu s Mezinárodní soustavou měrových jednotek SI. Definice zní: Atomová sekunda je určena dobou 9 192 631 770 kmitů, které přísluší atomu cesia 133 při přechodu mezi hladinami F=4, M=0 a F=3, M=0 základního stavu 2 S 1/2 bez vlivu vnějších magnetických polí.[15] V roce 1975 byl ustanoven systém mezinárodního atomového času (TAI). Pro účely praktických měření je čas TAI nevhodný z teoretických i provozních důvodů, a proto z něj byl odvozen tzv. koordinovaný světový čas UTC, který slouží k produkci časových radiových signálů, a tím plní funkci občanského času. Skutečnou a také nepravidelnou rotaci Země podchycuje rotační světový čas UT1. Aby tyto dva časy mohly být navzájem kompatibilní, musí platit následující 1. sekunda času UTC je rovna sekundě času TAI UTC je rovnoměrný čas 2. rozdíl TAI - UTC = n, kde n je počet celých kladných nebo záporných sekund 3. hodnota n závisí na podmínce UT1 UTC < 0.9s 14

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA 4. hodnotu DUT1 = UT1 - UTC je třeba soustavně určovat astronomicko-geodetickým měřením Aby byla zajištěna podmínka UT1 UTC < 0.9s, je nutné měnit čas UTC skokem a to vkládáním nebo odebíráním sekund. Podle potřeby se tak děje v poslední sekundě dne 31. prosince nebo 30. června. Hodnota DUT1 je korekce koordinovaného času na rotační čas. 1.3.3 Terestrický dynamický čas Terestrický dynamický čas (TDT) má délku sekundy shodnou s časem TAI a platí vztah: TDT = UT1 + T (A) (1.24) TDT = TAI + 32.184 s (1.25) Čas TDT je nezávislým časovým argumentem pohybových rovnic a také argumentem v efemeridách Slunce, Měsíce a planet. 1.3.4 Převody časů V běžném životě měříme čas UTC, popřípadě jeho modifikace jako je středoevropský zimní čas (SEČ) nebo středoevropský letní čas (SELČ). Jedná se tedy o čas atomový, který musíme převést na čas hvězdný, resp. hodinový úhel následovně 1. určení UTC: UTC = SEČ - 1 [hod], UTC = SELČ - 2 [hod] 2. převod UTC na UT1: UT1 = UTC + DUT1 3. převod na světový hvězdný čas: S = S 0 + UT1(1+µ) 4. převod na místní hvězdný čas: s = S + λ = S 0 + UT1(1+µ) + λ 5. převod na hodinový úhel: t = s - α = S 0 + UT1(1+µ) + λ - α Hodnoty časových údajů DUT1 a TAI - UTC jsou určovány Mezinárodní službou rotace Země (IERS) a jsou publikovány v bulletinu A na webové stránce http://www.iers.org/iers/en/publications/bulletins/bulletins.html 15

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA 1.4 Změny souřadnic refrakce, aberace, paralaxa Paprsky světla, přicházející od kosmického tělesa, procházejí vrstvami atmosféry a dochází tedy k jejich ohybu, dále Země rotuje kolem své osy a zároveň se pohybuje kolem Slunce po ekliptice. Toto všechno jsou faktory, které způsobují změny v souřadnicích v obzorníkové soustavě. Hodnoty těchto změn jsou nezanedbatelná čísla, o které se musí obzorníkové souřadnice kosmického tělesa opravit. 1.4.1 Vliv refrakce na obzorníkové souřadnice Paprsky světla procházejí vrstvami atmosféry, a jsou tedy ovlivněny refrakcí. Astronomická refrakce je změna směru světelného paprsku způsobená lomem v atmosféře. Hustota atmosféry klesá exponenciálně se zvětšující se výškou a podle Snelliova zákona dochází k lomu ke kolmici. V obrázku 1.7 pozorujeme kosmické těleso H pod zenitovým úhlem z. Skutečná zenitová vzdálenost je označena z. Refrakce je pak definována jako R = z z (1.26) Obrázek 1.7: Schéma astronomické refrakce Protože index lomu vzduchu závisí na hustotě, a tím i na teplotě a tlaku vzduchu, platí pro refrakci následující kde R = (60.27 arctan z 0.07 arctan 3 z ) b 1048.6 1.0342 1 + 0.00367 t [ ] (1.27) z měřená zenitová vzdálenost b atmosférický tlak v [hpa] t teplota ve [ C] 16

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA Výše uvedený vztah předpokládá, že atmosféra je sférická vrstva. Refrakce má tedy vliv pouze na zenitovou vzdálenost a platí kde a je astronomický azimut kosmického tělesa z = z z = R (1.28) a = a a = 0 (1.29) a je měřený astronomický azimut kosmického tělesa 1.4.2 Vliv denní aberace na obzorníkové souřadnice Aberace v astronomii znamená odchýlení světelného paprsku přicházejícího od pozorovaného tělesa k pozorovateli, které je způsobené konečnou rychlostí světla, pohybem pozorovaného tělesa a pohybem pozorovatele. Aberaci dělíme na několik typů hvězdná aberace způsobená pohybem místa pozorování a dělí se dále na denní aberaci způsobená rotací Země roční aberaci způsobená pohybem Země kolem Slunce sekulární aberaci vzniká pohybem sluneční soustavy vzhledem ke hvězdné soustavě galaxie planetární (družicová) aberace způsobená vlastním pohybem zdrojem Pro účely této diplomové práce a určení astronomického azimutu má nezanedbatelný vliv na obzorníkové souřadnice pouze denní aberace. Denní aberace je způsobená pohybem místa pozorování v důsledku rotace Země. Vliv denní aberace na obzorníkové souřadnice je dán následovně kde a je astronomický azimut kosmického tělesa z je zenitová vzdálenost ϕ je astronomická zeměpisná šířka topocentra a = 0.320 cos ϕ cos a (1.30) sin z z = 0.320 cos ϕ cos a sin z (1.31) 17

KAPITOLA 1. ASTRONOMICKÉ SOUŘADNICE A ČASOMÍRA 1.4.3 Vliv denní paralaxy na obzorníkové souřadnice Pod pojmem paralaxa rozumíme úhel mezi směry jdoucími ke kosmickému tělesu ze dvou různých pozorovacích míst, jedná se o změnu směru způsobenou posunutím pozorovacího místa. Paralaxu můžeme rozdělit na tři druhy denní paralaxa vznikne posunem fiktivního pozorovacího místa ze středu Země do topocentra a naopak hvězdná (roční) paralaxa vznikne posunem fiktivního pozorovacího místa ze středu Slunce, resp. barycenta sluneční soustavy, do středu Země a naopak Hodnota paralaxy závisí především na vzdálenosti kosmického tělesa, největší rovníkovou horizontální paralaxu má Měsíc, a to 54 až 61. Pro Slunce platí hodnota π 0 = 8.794. Rovníková horizontální paralaxa vyjadřuje úhel, pod kterým je vidět rovník z daného kosmického objektu. Vliv denní paralaxy na obzorníkové souřadnice je dán vztahem kde a = 0 + π 0 (B ϕ) sin a cosec z 0 (1.32) z = π 0 [sin z (B ϕ) cos a cos z] 8.794 sin z (1.33) a je astronomický azimut kosmického tělesa z je zenitová vzdálenost ϕ je astronomická zeměpisná šířka topocentra π 0 je rovníková horizontální paralaxa 18

2 Určování astronomického azimutu Astronomické zeměpisné souřadnice a astronomické azimuty jsou zjišťovány na tzv. Laplaceových bodech. Laplaceovým bodem se rozumí bod, na němž byla určena astronomická zeměpisná šířka, délka a astronomický azimut. Využití astronomických azimutů je následující umožňují určit polohu a orientaci AGS (Astronomicko-geodetická síť) a tím i polohu a orientaci referenčního elipsoidu vůči zemskému tělesu, tedy geoidu. astronomické azimuty umožňují kontrolu geodetických azimutů pomocí Laplaceovy rovnice určují poledníkové složky a rovnoběžkové složky astronomicko-geodetických tížnicových odchylek určené astronomicko-geodetické tížnicové odchylky dále slouží, které dále slouží např. k určení průběhu obecné hladinové plochy, popř. geoidu vůči referenčnímu elipsoidu astronomické azimuty orientují lokální geodetické sítě a polygonové pořady vůči astronomickému severu řeší úkoly navigace. Astronomický azimut je definován jako úhel, který svírá rovina místního meridiánu se svislou rovinou procházející cílem, obvykle měřený v rovině astronomického horizontu od severu, přes východ, jih a západ, v případě astronomického azimutu pozemního cíle, nebo od jihu, přes západ, sever a východ v případě nebeského tělesa. 1. Astronomický azimut záměry na pozemní cíl (A C ) určíme ze vztahu A C = A + ω ω = K C K (2.1) 1 převzato z http://www.vugtk.cz/slovnik/3387_astronomicky-azimut 19

KAPITOLA 2. URČOVÁNÍ ASTRONOMICKÉHO AZIMUTU kde A je astronomický azimut nebeského tělesa měřený od severní větve místního poledníku (A = a + 180 ), K C, K jsou čtení vodorovného kruhu při záměře na cíl C a nebeské těleso H. Z uvedeného vzorce je jasné, že určení astronomického azimutu A C pozemního cíle C se skládá ze dvou kroků 1. určení astronomického azimutu A nebeského tělesa H 2. čtení vodorovného kruhu K C a K. Krok č. 1, tedy určení astronomického azimutu A nebeského tělesa H, se dá převést na úlohu určení hodinového úhlu tohoto objektu měřením času. 2.1 Určování astronomického azimutu Slunce pomocí hodinového úhlu Astronomický azimut A Slunce, kde A = a + 180 získáme řešením nautického trojúhelníku (viz. obrázek 2.1) a aplikací vět sférické trigonometrie, konkrétně věty sinové (2.2), sinus-kosinové (2.3) a kosinové(2.4) pro zenitovou vzdálenost a azimut. sin a sin z = sin t sin δ (2.2) sin z cos a = sin δ cos ϕ + cos δ sin ϕ cos t (2.3) cos z = sin δ sin ϕ + cos δ cos ϕ cos t (2.4) P n 90 -φ t o 180 - a z 90 -δ o z Obrázek 2.1: Nautický trojúhelník Vydělíme-li rovnice 2.3 a 2.2, získáme po úpravě vztah pro azimut v obzorníkové astronomické souřadnicové soustavě 20

KAPITOLA 2. URČOVÁNÍ ASTRONOMICKÉHO AZIMUTU sin t tan a = sin ϕ cos t cos ϕ tan δ ( ) sin t a = arctg sin ϕ cos t cos ϕ tan δ (2.5) kde t je hodinový úhel Slunce pro daný časový okamžik (ukrývá zeměpisnou délku λ a rektascenzi α hvězdy v daný časový okamžik), ϕ je zeměpisná šířka stanoviska, δ je deklinace Slunce pro daný časový okamžik. Do výpočtu vstupují rovníkové souřadnice Slunce rektascenze, deklinace a hodinový úhel v okamžiku měření, který je udáván většinou časem UTC. Efemeridy Slunce jsou publikovány v astronomické ročence pro každý den v roce pro 0h terestrického dynamického času (TDT). Je tedy nutné zavést opravu času TDT na UTC. V nejnovějším vydání IERS Bulletinu A, který lze nalézt na následujícím odkazu http://www.iers.org/iers/en/publications/bulletins/bulletins.html, nalezneme hodnoty časových údajů TDT = TAI + 32.184 s TAI UTC = 34 s Dosadíme-li tyto hodnoty do vztahu pro TDT, získáme následující vztah T DT = UT C + 34 + 32.184 = 66.184 s (2.6) Rovníkové souřadnice Slunce odpovídající danému časovému okamžiku UTC interpolujeme lineární interpolací z údajů uvedených v astronomické ročence δ i = δ 0 + (δ 1 δ 0 ) T DT 24 α i = α 0 + (α 1 α 0 ) T DT 24 kde δ 0 (α 0 ) tabelovaná hodnota deklinace (rektascenze) Slunce pro daný den δ 1 (α 1 ) tabelovaná hodnota deklinace (rektascenze) Slunce pro den následující δ i (α i ) interpolovaná hodnota deklinace (rektascenze) Slunce pro daný časový okamžik 21

KAPITOLA 2. URČOVÁNÍ ASTRONOMICKÉHO AZIMUTU A konečně pro hledaný hodinový úhel platí vztah, viz také rovnice 1.17: t = s α = S 0 + (UT C + DUT 1)(1 + µ) + λ α (2.7) kde s je místní hvězdný čas S 0 tabelovaná hodnota hvězdného času pro světovou půlnoc pro datum měření 1 + µ korekce slunečního času na hvězdný λ zeměpisná délka Nyní známe všechny potřebné hodnoty pro dosazení do rovnice 2.5 a určit astronomický azimut A následovně: ( ) A = a + 180 sin t = arctg + 180 (2.8) sin ϕ cos t cos ϕ tan δ 2.2 Rozbor přesnosti astronomického azimutu pozemního cíle Vliv na výslednou přesnost určovaného astronomického azimutu záměry na pozemní cíl mají dvě složky. První z nich je přesnost určení astronomického azimutu Slunce a druhá je určení přesnosti měření vodorovných směrů. Při určování přesnosti astronomického azimutu pozemního cíle A C určeného pomocí hodinového úhlu vycházíme z rovnice 2.1 A C = A + K C K přičemž astronomický azimut Slunce určíme ze vztahu 2.5 nebo též kde hodinový úhel je, viz 1.17 tg a = sin t sin ϕ cos t cos ϕtg δ cotg A sin t = sin ϕ cos t cos ϕtg δ (2.9) t = S 0 + UTC(1 + µ) + λ α Abychom získali vliv jednotlivých veličin na astronomický azimut pozemního cíle, derivujeme výše uvedenou rovnici 2.1 pro A C podle proměnných A, K, K C a získáváme totální diferenciál A C = A + K C K (2.10) V této rovnici je nutno neznámý diferenciál A opět nahradit totálními diferenciály vstupních hodnot, přičemž deklinaci δ a rektascenzi α bereme za bezchybné, dostáváme 22

KAPITOLA 2. URČOVÁNÍ ASTRONOMICKÉHO AZIMUTU sin t sin 2 A + cotg A cos t t = (cos ϕ cos t + sin ϕ tg δ) ϕ sin ϕ sin t t A sin t sin 2 A = (cotg A cos t + sin ϕ sin t) t (cos ϕ cos t + sin ϕ tg δ) ϕ A sin t sin 2 A A = 1 (cos A cos t + sin A sin ϕ sin t) t sin A 1 (cos ϕ cos t + sin ϕ tg δ) ϕ (2.11) cos δ Nahradíme-li pomocí kosinových vět pro paralaktický úhel q a zenitovou vzdálenost z (viz. obrázek 2.1), dostáváme výraz cos q cos δ cos z sin A A = t + ϕ (2.12) sin z sin z Uvažujeme-li totální diferenciál pro hodinový úhel t (viz 1.17) t = (1 + µ) UTC + λ (2.13) dostáváme konečně vztah pro totální diferenciál azimutu pozemního cíle: A C = cos q cos δ sin z [(1 + µ) UTC + λ] + cos z sin A ϕ + K C K (2.14) sin z Z předchozích rovnic je zřejmé, že není vhodné měřit na hvězdy (Slunce) v blízkosti zenitu. Naopak při velkých zenitových vzdálenostech se nepříznivě projeví vliv refrakce. Tuto skutečnost dokresluje graf průběhu směrodatné odchylky azimutu (viz. graf 2.2) v průběhu vybraných dní, a to v den jarní rovnodennosti 21.3.2011, v době letního slunovratu 21.6.2011 a v den zimního slunovratu 22.12.2012. Vliv přesnosti měření horizontálních směrů, hodnoty K a K C, nebyl brán při výpočtu v úvahu. Číselné hodnoty jsou spočítány pro ϕ = 50 a λ = 1h. Při výpočtu je předpokládáno, že rovníkové souřadnice Slunce α, δ jsou bezchybné a přesnost určení azimutu je ovlivněna chybou zeměpisných souřadnic pozorovatele ϕ, λ a chybou v určení času. Směrodatná odchylka určení času je předpokládána 1 sekunda (takové přesnosti je snadné dosáhnout), směrodatné odchylky zeměpisných souřadnic jsou voleny 0.001 (přibližně 3 metry v poloze, což je přesnost dosažitelná pomocí jednoduchého GPS přijímače). Chyba měřených vodorovných směrů není uvažována. Graf 2.3 zobrazuje průběh členů u t a ϕ z rovnice 2.14 v průběhu zmíněných dní. Je zřejmé, že při východu a západu Slunce se nejvíce projeví vliv chyby v zeměpisné šířce a naopak nejméně se projeví vliv chyby v určení času a zeměpisné délky. Při kulminaci Slunce je vliv daných veličin přesně opačný, tedy největší vliv na přesnost azimutu má chyba v určení času a minimální chyba v zeměpisné délce. (Pozn. v legendě grafu je veličina ϕ označena jako φ.) Poslední dva grafy 2.4 a 2.5 zobrazují vývoj azimutu a zenitové vzdálenosti během dne, a to opět pro 21.3.2011, 21.6.2011 a 22.12.2011. 23

KAPITOLA 2. URČOVÁNÍ ASTRONOMICKÉHO AZIMUTU Obrázek 2.2: Průběh směrodatné odchylky azimutu ve dnech 21.3.2011, 21.6.2011 a 22.12.2011 Obrázek 2.3: Průběh členů u t a ϕ ve dnech 21.3.2011, 21.6.2011 a 22.12.2011 24

KAPITOLA 2. URČOVÁNÍ ASTRONOMICKÉHO AZIMUTU Obrázek 2.4: Průběh azimutu ve dnech 21.3.2011, 21.6.2011 a 22.12.2011 Obrázek 2.5: Průběh zenitové vzdálenosti ve dnech 21.3.2011, 21.6.2011 a 22.12.2011 25

3 Systém pro automatické určování azimutu Klasická metoda určování astronomického azimutu z měření na Slunce spočívá v měření ve dvojskupinách a to tak, že se zacílí na orientační bod a přečte se hodnota vodorovného kruhu v I. poloze dalekohledu, zacílí se na levý okraj Slunce a při dotyku Slunce svislé rysky nitkového kříže se odečte čas a zároveň čtení vodorovného kruhu. Dalším krokem je proložení dalekohledu do II. polohy, zacílí se na pravý kraj Slunce a při jeho odtrhu od svislé rysky nitkového kříže se přečte čas a hodnota čtení vodorovného kruhu v II. poloze. Nyní se postup opakuje, dalekohled se znovu proloží do I. polohy, zacílí se na levý okraj Slunce, odečte se hodnota času při dotyku a vodorovný směr, poté se proloží dalekohled do II. polohy, zacílí se na pravý kraj Slunce, přečte se čas při odtrhu a hodnota vodorovného kruhu. Posledním krokem je zacílení na orientační bod v II. poloze dalekohledu. Časový rozdíl mezi měřením na Slunce v I. a II. poloze dalekohledu nesmí být větší než 2 minuty, aby pohyb Slunce mohl být považován za rovnoměrný. Celé měření se provádí ve třech dvojskupinách. V praxi se však měří 4 dvojskupiny, aby byl nadbytečný počet pro případné vypuštění vadné dvojskupiny.[6] Je zřejmé, že tento postup je velice náročný a nezkušený měřič se může dopustit mnoha chyb. Mým úkolem bylo vytvořit systém, který by práci značně usnadnil. Byl tedy vyvinut systém pro automatické snímání Slunce a ukládání naměřených hodnot. Základ systému tvoří motorizovaná totální stanice Geodimeter Pro, ke kterému byl namontován fotoaparát značky Canon tak, aby snímal obraz v okuláru dalekohledu, viz obrázek 3.1. Základní princip metody spočívá v pořizování snímků Slunce, čtení času a čtení hodnot vodorovného kruhu. O pořizování snímků se stará digitální kompaktní fotoaparát. Čas měření je dán časem pořízení snímku, který je uložen v metadatech fotografie. O čtení hodnot vodorovného kruhu se stará totální stanice. Celý postup je rozdělen do dvou kroků sledování a focení Slunce a analýza snímků a výpočet. 26

KAPITOLA 3. SYSTÉM PRO AUTOMATICKÉ URČOVÁNÍ AZIMUTU Obrázek 3.1: Motorizovaná totální stanice s fotoaparátem Protože efemeridy Slunce se vztahují ke středu slunečního disku, musí se i vodorovný směr měřit ke středu. To je ovšem technicky nemožné, a proto je nutné provést analýzu snímku a určit jak střed slunečního disku, tak i střed nitkového kříže. Je zapotřebí odečíst souřadnice pixelů těchto středů a přepočítat hodnotu vodorovného směru na střed slunečního disku. Aby se toto mohlo provést, musí se určit úhlová velikost odpovídající jednomu pixelu v obraze. Hodnota úhlového rozlišení jednoho pixelu se musí určit zvlášť a není implementována v mém softwaru. Metod, jak určit úhlové rozlišení jednoho pixelu, je hned několik. Vezmeme-li v úvahu, že Slunce má průměr 32 a zjistíme, kolik pixelů tvoří jeho průměr v obraze, jednoduchým výpočtem pak dostaneme úhlovou hodnotu jednoho pixelu. Tuto metodu lze považovat za nepřesnou, protože určit konkrétní okraj Slunce je velmi obtížné. Dalším způsobem může být pořízení 2 snímků ze stabilizované polohy totální stanice tak, že změříme čas pořízení snímků, vypočítáme dané azimuty pro záměry na Slunce a nalezneme odpovídající středy slunečních disků. Z rozdílů azimutů a rozdílů x-ových souřadnic pixelů středů slunečních disků vypočítáme úhlovou hodnotu jednoho pixelu. Výpočet astronomického azimutu záměry na pozemní cíl lze pak převést na následující vztah A C = A + ω + x px (3.1) A C je astronomický azimut záměry na pozemní cíl A je astronomický azimut Slunce ω je rozdíl vodorovných směrů záměry na pozemní cíl a Slunce x je rozdíl x-ových souřadnic středu slunečního disku a středu nitkového kříže ve snímku px je úhlové rozlišení 1 px 27

KAPITOLA 3. SYSTÉM PRO AUTOMATICKÉ URČOVÁNÍ AZIMUTU V rámci mé práce byly napsány dvě aplikace SunTraQ a Azimuth_CV, které jsou výhradně určeny pro operační systém GNU/Linux a jsou zveřejněny pod GNU/GPL licencí. Následující text popisuje aplikaci SunTraQ a Azimuth_CV z pohledu uživatele a návod, jak je ovládat. 3.1 Software pro automatické pořizování snímků Prvním úkolem bylo vytvořit aplikaci, která bude komunikovat s totální stanicí, bude jí posílat příkazy a ona bude zcela samostatně sledovat a pořizovat snímky Slunce během dne v předem definovaném intervalu. Aplikace je navržena tak, že uživatel musí provést první zacílení na Slunce ručně, a poté už se o vše postará aplikace sama. Po spuštění aplikace se objeví úvodní okno (viz. obrázek 3.2), kde si uživatel může zvolit jednu z nabídek založit nový projekt nebo, pokud již má uložen soubor s nastavením projektu, může průvodce nastavením přeskočit a rovnou začít se sledováním Slunce. Obrázek 3.2: SunTraQ - úvodní dialog Klikne-li uživatel na tlačítko Create New Project (Vytvořit nový projekt), objeví se průvodce nastavením nového projektu (viz obrázek 3.3). Uživatel nyní musí zadat název projektu a cestu. Pro nastavení cesty, kam má být projekt uložen, může využít tlačítko Browse (Prohledat) a nastavit adresář pomocí nově otevřeného dialogu. Obě pole Project Name (Název projektu) a Project Path (Cesta k projektu) musí být vyplněna, jinak uživateli není dovoleno pokračovat. Zadal-li uživatel pokračovat stisknutím tlačítka Next (Další), objeví se dialog s dalším nastavením (viz. obrázek 3.4). Uživatel nejdříve musí zvolit sériový port, kterým bude komunikovat s totální stanicí. Seznam portů dostupných na systému je automaticky vygenerován aplikací. Po výběru portu z vysunovacího menu, musí uživatel kliknout na tlačítko Connect (Připojit), objeví se okno s informací, zda byla komunikace navázána úspěšně nebo neúspěšně. Je-li seznam portů prázdný, znamená to, že na systému chybí zařízení /dev/ttyusb i /dev/ttys. Dále je nutné vyplnit pole Station Name (Stanoviště) a jeho zeměpisné souřadnice (ϕ, λ) ve formátu STUPNE.MINUTY.VTERINY. 28

KAPITOLA 3. SYSTÉM PRO AUTOMATICKÉ URČOVÁNÍ AZIMUTU Obrázek 3.3: SunTraQ - detaily projektu Obrázek 3.4: SunTraQ - základní nastavení projektu 29

KAPITOLA 3. SYSTÉM PRO AUTOMATICKÉ URČOVÁNÍ AZIMUTU Pro určování astronomického azimutu jsou důležité časové údaje potřebné k převodu mezi atomovým, slunečním a hvězdným časem. Aktuální hodnoty může uživatel nalézt na webové stránce, která se otevře po kliknutí na uvedený odkaz. Zaškrtnutím pole CEST uživatel potvrdí, že na jeho systému je nastaven středoevropský letní čas. Pokud toto pole nezaškrtne, tak se předpokládá, že čas vnitřních hodin počítače je nastaven na středoevropský zimní čas. V další části tohoto dialogu musí uživatel nastavit v jakém intervalu budou snímky pořizovány, dále musí zadat tlak a teplotu vzduchu pro pozdější korekci zenitového úhlu o refrakci. Kliknutím na tlačítko Next se zobrazí další okno průvodce, a to Camera Initialization (Inicializace fotoaparátu) (viz. obrázek 3.5). Obrázek 3.5: SunTraQ - nastavení fotoaparátu Kliknutím na tlačítko Configure Camera (Nastavení fotoaparátu) se nastaví nezbytné základní parametry fotoaparátu jako je synchronizace času fotoaparátu s časem počítače, clona, expozice, iso, zoom, atd. Uživatel nyní musí ručně zacílit na Slunce a kliknout na tlačítko Take Picture (Pořídit snímek). Aplikace nastaví hodnoty parametrů fotoaparátu pro iso, clonu a expozici, které jsou uvedeny v pravé části dialogu. Inicializace fotoaparátu a samotné pořízení snímku trvá určitou dobu, a proto je doporučeno necílit přímo na střed Slunce ale mírně před něj, protože se během přípravy fotoaparátu obraz posune. Fotografie se uloží do adresáře projektu, který byl nastaven v prvním kroku průvodce (viz obrázek 3.3). Spolu s fotografií je uloženo i čtení horizontálního a vertikálního kruhu a čas pořízení fotografie. Poté se tato fotografie objeví v okně průvodce. Uživatel si může fotografii zobrazit v plné velikosti, aby měl jistotu, že nitkový kříž je zaostřen. Pokud je fotografie tzv. přepálená nebo nitkový kříž není vidět, může uživatel změnit parametry fotoaparátu v pravé části dialogu a pořídit nový snímek. Tento postup může opakovat, dokud nebude spokojen s výslednou fotografií a poloha Slunce na fotografii bude blízko středu. Při tomto kroku musí být uživatel velmi pečlivý, protože na tomto kroku závisí celé další měření. Kliknutím na tlačítko Finish (Dokončit) se v adresáři projektu vytvoří soubor project_settings.xml, do kterého se uloží všechny údaje, které byly uživatelem zadány v průvodci nastavením. 30

KAPITOLA 3. SYSTÉM PRO AUTOMATICKÉ URČOVÁNÍ AZIMUTU Kliknutím na Finish se také spustí další okno aplikace SunTraQ Tracker, viz. obrázek 3.6, určené pro samotný proces sledování Slunce a pořizování snímků. Obrázek 3.6: SunTraQ - Tracker dialog Spuštěním tohoto dialogu se v adresáři projektu vytvoří nový adresář s názvem observ_pics, do kterého se budou ukládat všechny pořízené snímky. Dialog obsahuje tlačítko Go (Spustit), kterým se spustí proces sledování, tzn. vypočtou se nové lokální souřadnice slunce, pošle se příkaz totální stanici, kam se má posunout a pořídí se snímek. Tento snímek je poté stažen z paměti fotoaparátu do paměti počítače a je zobrazen. Uživatel má opět možnost si snímek zvětšit do originální velikosti a ujistit se, že Slunce i nitkový kříž jsou zaostřeny. Aplikace uloží informace o umístění snímku na disku počítače, jeho času pořízení a čtení horizontálního a vertikálního úhlu do XML souboru observation.xml, který je opět uložen v adresáři projektu. Tlačítkem Stop uživatel přeruší proces sledování, který může opět obnovit stisknutím tlačítka Go. Dialog dále obsahuje tlačítko na ukončení celého programu (tlačítko vrátka) a tlačítko nápovědy (tlačítko modrý otazník). Pořízené snímky a naměřené hodnoty se zpracovávají pomocí další aplikace nazvané Azimuth_CV. 3.2 Software pro zpracování obrazu Jestliže uživatel dokončil měření, může přejít na zpracování naměřených dat a analýzu pořízených snímků. Aplikace Azimuth_CV načte uložené hodnoty souborů observation.xml a project_settings.xml a začne procházet snímek po snímku, detekovat střed slunečního disku a střed nitkového kříže. Z hodnot x-ových souřadnic pixelů těchto středů přepočítá hodnotu vodorovného směru záměry na Slunce na vodorovný směr záměry na jeho střed. Poslední krok, který provede, je výpočet astronomického azimutu pozemního cíle podle rovnice 3.1 a jeho přesnost podle rovnice 2.14. Po spuštění aplikace Azimuth_CV se zobrazí úvodní dialog, viz 3.7. Uživatel nyní musí otevřít soubor s názvem observation.xml, který je uložen v adresáři projektu, výběrem položky Open (Otevřít) z hlavního menu nebo kliknutím na žluté tlačítko se symbolem otevření. Ze souboru se přečtou základní údaje o projektu 31

KAPITOLA 3. SYSTÉM PRO AUTOMATICKÉ URČOVÁNÍ AZIMUTU Obrázek 3.7: Aplikace Azimuth_CV úvodní dialog jako je den měření, čas začátku měření, čas ukončení měření, jak dlouho měření trvalo, kolik bylo pořízeno snímků a jaká byla nejmenší a největší zenitová vzdálenost Slunce. Po kliknutí na tlačítko Proceed (Zpracovat) se objeví dialog s výběrem metod pro detekci středu slunečního disku a detekci nitkového kříže, viz obrázek 3.8. Obrázek 3.8: Aplikace Azimuth_CV výběr metod pro zpracování obrazu Uživatel si může zaškrtnout až 3 metody pro detekci souřadnic pixelu středu slunečního disku. Problematika detekce středu slunečního disku je detailněji popsána v sekci 5.1. Dále je zaškrtnuta metoda pro detekci středu nitkového kříže, protože je nutno přepočítat naměřený vodorovný směr na střed slunečního disku. Důvodem jsou efemeridy Slunce, ze kterých se počítá azimut a které jsou vztaženy právě ke středu. 32

KAPITOLA 3. SYSTÉM PRO AUTOMATICKÉ URČOVÁNÍ AZIMUTU Dále musí uživatel zadat úhlovou hodnotu jednoho pixelu ve grádových vteřinách. Metoda určení úhlového rozlišení jednoho pixelu není součástí této práce a uživatel ji musí provést zvlášť. Poslední hodnotou, kterou uživatel musí zadat, je vodorovný směr na pozemní cíl, pro který určuje astronomický azimut. Nyní může uživatel kliknou na tlačítko Proceed, kterým se spustí výpočet. Nejdříve se provede detekce středu slunečního disku pro všechny snímky zvolenými metodami, poté se pro všechny snímky provede detekce středu nitkového kříže, přepočítá se vodorovný úhel na střed slunečního disku, vypočtou se lokální souřadnice Slunce (astronomický azimut a zenitová vzdálenost) a nakonec se vypočte astronomický azimut pozemního cíle. Průběh výpočtu je uživateli znázorňován pomocí indikátoru průběhu, viz obrázek 3.9. Obrázek 3.9: Aplikace Azimuth_CV průběh výpočtu Posledním krokem je zobrazení dialogu obsahujícího výsledný astronomický azimut a jeho přesnost, viz obrázek 3.10. Obrázek 3.10: Aplikace Azimuth_CV dialog s výsledky 33

4 Implementace aplikace SunTraQ Tato kapitola pojednává o samotné implementaci aplikace SuntraQ. Tato aplikace byla napsána v jazyce C++ a grafické uživatelské rozhraní bylo napsáno pomocí knihovny Qt. Jazyk C++ je objektově orientovaný programovací jazyk, který vyvinul Bjarne Stroustrup rozšířením jazyka C. C++ podporuje několik paradigmat jako je procedurální programování, objektově orientované programování a generické programování a není tedy jazykem čistě objektovým.[1] Knihovna Qt patří k populárním multiplatformním knihovnám pro tvorbu programů s interaktivním grafickým prostředím. Qt toolkit byl vytvořen v roce 1999 společností Trolltech, která ji později prodala firmě Nokia. Domovská stránka projektu se nachází na adrese http://qt.nokia.com Pomocí Qt toolkitu lze vytvářet jak konzolové aplikace, tak i aplikace s podporou GUI. Mimo jiné podporuje lokalizaci aplikací, SQL, zpracováni XML, správu vláken a mnoho dalšího. Aplikace využívající grafické uživatelské rozhraní používají nativní vzhled operačního systému, což znamená, že se daná aplikace vždy přizpůsobí do používaného desktopového prostředí (aplikace má jiný vzhled ve Windows, Mac OS, v prostředích GNOME nebo KDE). Qt knihovnu používají aplikace jako jsou Skype, Google Earth, desktopové prostředí KDE, webový prohlížeč Opera, Virtualbox a další. Díky tomu má Qt velmi kvalitně zpracovanou dokumentaci doplněnou o mnoho věcných příkladů. Pro usnadnění práce s Qt a C++ bylo vyvinuto prostředí Qt Creator, což je multiplatformní vývojové prostředí IDE. Mimo jiné poskytuje C++ a Javaskriptový editor zdrojových kódů, integrovaný UI designer, automatické doplňování textu, podporu pro správu verzí (cvs, svn, mercurial,... ) a mnoho dalšího. Qt knihovna funguje na bázi tzv. signálů a slotů, které jsou využívány pro komunikaci mezi objekty a tvoří velmi silný programátorský nástroj. 34

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ Aplikace se skládá ze 3 základních tříd SunTrackerUI, SunWizard a SunViewer. Následující digram 4.1 zobrazuje schéma aplikace. Obrázek 4.1: Schéma aplikace SunTraQ 4.1 Třída SunTrackerUI Třída SunTracker je potomkem objektu QMainWindow a vytváří hlavní okno aplikace. Třída implementuje následující signály a privátní metody: create_project() je slot pro založení nového projektu, vytváří nový objekt SunWizard, který dědí třídu QWizard print_help() je slot, který zobrazí nápovědu k programu print_about() je slot, který zobrazí základní informace o programu create_menus() je privátní metoda, která vytvoří základní nástrojové menu (File (Soubor) a Help) (Nápověda) v grafickém uživatelském rozhraní aplikace, jedná se objekt typu QAction create_actions() je privátní metoda, která propojí signály se sloty pro tlačítka v hlavním nástrojovém menu 35

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ create_buttons() je privátní metoda, která vytvoří tlačítka Create New Project (Založit Nový Projekt) a Go Tracking (Přejít na sledování). Stará se také o propojení signálů se sloty, která se vážou na daná tlačítka a jsou objektem třídy QPushButton 4.2 Třída SunWizard Třída SunWizard dědí objekt QWizard a vytváří průvodce nastavením projektu. Konstruktor třídy, kromě vytvoření objektu, také vytvoří konfigurační soubor aplikace, do kterého uloží informace o lokaci založeného projektu. V domovském adresáři vytvoří skrytý adresář.suntraq a uvnitř soubor config_file. Průvodce nastavením projektu (wizard) se skládá ze tří hlavních stránek, každá tato stránka je nastavena pomocí metody setup_page1(), setup_page2() a setup_page3(). Metoda setup_page1() se stará o nastavení názvu a umístění projektu. Vytvoří nový adresář podle nastavených hodnot v polích grafického uživatelského rozhraní typu QLineEdit. Metoda setup_page2() je rozsáhlejší metoda a stará se o následující navázání komunikace s totální stanicí nastavení parametrů časů (DUT1, TAI - UTC, SELČ) nastavení parametrů atmosférických podmínek (tlak, teplota) nastavení ostatních parametrů (databáze souřadnic Slunce, interval pořizování snímků, atd.) O otevření portu totální stanice se stará funkce open_port() s návratovou hodnotou typu int. Metoda vrací tzv. file descriptor v podobě celé hodnoty. Pokud se tato hodnota rovná -1, znamená to, že spojení s totální stanicí nelze navázat, pokud je hodnota fd různá od -1, tak navázání spojení s totální stanicí bylo úspěšné a hodnota fd se použije pro zápis a čtení ze zařízení. Detailněji je pojednáváno o této metodě v části komunikace prostřednictvím sériového portu (viz. sekce 4.5). Pomocí jednoduchého bash skriptu volaného systémovou funkcí system(char* _command) je získán seznam sériových portů nacházejících se v souborovém systému v adresáři /dev/. Seznam těchto portů je uložen do dočasného souboru /tmp/ports.txt, ze kterého si aplikace SunTraQ přečte seznam dostupných sériových portů. 1 #!/ bin / bash 2 3 ls / dev / grep ttyusb > / tmp / ports. txt 4 ls / dev / grep ttys >> / tmp / ports. txt Zdrojový kód 4.1: Seznam sériových portů Seznam portů v grafickém uživatelském rozhraní aplikace je reprezentován objektem typu QComboBox. Tlačítko Connect zavolá signál connect_to_port(), který neudělá nic jiného než, že zavolá implementovanou metodu open_port() a zkontroluje návratovou hodnotu v podobě celé hodnoty file descriptoru. 36

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ Pomocí objektů typu QLineEdit jsou nastaveny hodnoty parametrů pro název místa stanoviska, jeho zeměpisnou šířku a délku, časové údaje (DUT1,... ) a atmosférické podmínky teplotu a tlak. Nastavení intervalu pořizování snímku zaručuje objekt typu QSpinBox. Souřadnice slunce pro daný rok jsou vybrány pomocí objektu QComboBox, který je napojen na signál add_db() volající metodu create_db(). Více informací o uložení efemerid Slunce do databáze je popsáno v sekci 4.6. Metoda setup_page3() se stará o komunikaci s fotoaparátem, zajišťuje nastavení jeho správných parametrů (iso, zoom, čas expozice, clona, atd). Stará se také o pořizování a zobrazování snímků. Komunikace s fotoaparátem probíhá prostřednictvím utilitky gphoto2, která je součástí každé linuxové distribuce. Tato metoda volá 4 další metody take_picture() configure_camera() view_full_resolution() fit_to_window() Metoda take_picture(), jak z názvu vyplývá, slouží k pořizování a stahování snímků z paměti fotoaparátu do paměti počítače. Nejdříve vytvoří v adresáři projektu, pokud ještě neexistuje, adresář calib_pics, do kterého uloží pořízené snímky. Proces pořizování a stahování snímku pak běží v samostatném vlákně, protože docházelo k zamrznutí grafického rozhraní. Nové vlákno je reprezentováno objektem TakePictureThread, který dědí QThread. Vláknu jsou předávány hodnoty pro cestu, kam mají být snímky uloženy, expozici, clonu a iso. Systémová funkce system(char *_command) pak zavolá primitivní bash skript pro pořízení snímku. 1 #!/ bin / bash 2 EXPOSURE = $1 3 APERTURE = $2 4 ISO =$3 5 gphoto2 -- camera " Canon PowerShot A80 ( PTP )" -- port usb --set - config = syncdatetime =" Yes " 6 gphoto2 -- camera " Canon PowerShot A80 ( PTP )" -- port usb --set - config exposurecompensation = ${ EXPOSURE } 7 gphoto2 -- camera " Canon PowerShot A80 ( PTP )" -- port usb --set - config aperture = ${ APERTURE } 8 gphoto2 -- camera " Canon PowerShot A80 ( PTP )" -- port usb --set - config iso =${ ISO } 9 gphoto2 -- camera " Canon PowerShot A80 ( PTP )" -- port usb -- capture - image Zdrojový kód 4.2: Pořízení snímku Stažení snímku z paměti fotoaparátu vykoná další bash skript opět volaný funkcí system(char *_command) s parametrem jména adresáře pro uložení obrázku. 1 #!/ bin / bash 2 LATEST =$( gphoto2 -L grep \# wc -l) 37

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ 3 DIR =$1 4 yes gphoto2 -p $LATEST -- filename =${ DIR }/ img -${ LATEST }. jpg Zdrojový kód 4.3: Stažení snímku z paměti fotoaparátu Skript nejdříve vylistuje seznam všech souborů uložených v paměti fotoaparátu, vybere řádky, které obsahují #, tyto řádky spočítá, tím dostane číslo posledního pořízeného snímku, který stáhne do paměti počítače a zobrazí jej v GUI programu SunTraQ. Pomocí dalšího bash skriptu a volání utilitky exiftime, je extrahován čas pořízení snímku. 1 #!/ bin / bash 2 LATEST =$( gphoto2 -L grep \# wc -l) 3 DIR =$1 4 exiftime -tg -v+2h ${ DIR }/ img -${ LATEST }. jpg awk { print $4} > / tmp / date. txt Zdrojový kód 4.4: Čas pořízení snímku O zobrazení nejnovějšího pořízeného snímku se stará metoda display_image(). Tato metoda však musí počkat, až se ukončí proces vlákna a poté fotografii zobrazit. Metoda setup_page3() také v době pořízení snímku odečte čtení horizontálního a vertikálního kruhu totální stanice. Více v sekci o komunikaci prostřednictvím sériového portu 4.5. Metoda configure_camera() provede pomocí série skriptů nezbytná nastavení fotoaparátu. Protože tato operace trvá delší dobu, je v grafickém prostředí implementován indikátor průběhu pomocí objektu QProgressBar. Metoda view_full_resolution() zobrazí pořízený obrázek v plném rozlišení a metoda fit_to_window() zmenší obrázek, tak, aby se vešel do daného okna náhledu a zobrazí jej. Tlačítko Finish (Dokončit) zajišťuje import souboru s efemeridami Slunce do databáze. Všechny takto nastavené proměnné jsou uloženy do XML souboru project_settings.xml nacházející se v adresáři projektu. Uložení hodnot do XML zajišťuje třída XML_writer, viz sekce 4.4. 4.3 Třída SunViewer Třída SunViewer dědí objekt QDialog a stará se o sledování Slunce, resp. řízení totální stanice, pořizování a ukládání snímků, extrahuje čas pořízení snímku, ukládá horizontální a vertikální úhel. Všechny tyto hodnoty jsou ukládány do externího XML soubor s názvem observation.xml, který je umístěn v adresáři projektu. Implementuje metody start_tracking() pro start měření na Slunce stop_tracking() pro přerušení procesu měření na Slunce display_image() pro zobrazení pořízeného snímku 38

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ zoom_in() pro zvětšení snímku do velikosti 1:1 zoom_out() pro zobrazení snímku v takové velikosti, aby byl vidět celý obsah write_to_xml() pro zápis potřebných údajů do XML souboru Metody display_image(), zoom_in() a zoom_out() byly již popsány v sekci 4.2. V metodě start_tracking() je vytvořeno tzv. pracovní vlákno aplikace (worker thread) třídy TrackingThread, která se stará zejména o komunikaci s totální stanicí a fotoaparátem. Toto pracovní vlákno nejdříve načte XML soubor s nastavením projektu, který byl vytvořen třídou SunWizard. Samotný proces sledování Slunce se skládá z několika kroků, které jsou naimplementovány v metodě run(). 1. Nejdříve se vypočtou astronomické obzorníkové souřadnice Slunce (azimut, zenitová vzdálenost) pro čas pořízení prvního snímků, který byl vytvořen v průběhu nastavení projektu (ve třídě SunWizard). Rovníkové souřadnice Slunce se získají dotazem do databáze efemerid Slunce, viz sekce 4.6. 2. Nyní se pro aktuální čas vypočtou nové obzorníkové astronomické souřadnice Slunce. Za aktuální čas se považuje systémový čas, je tedy nutné mít správně nastavené datum a čas. Pro synchronizaci systémového času je možno použít například protokol NTP (Network Time Protocol). 3. Rozdíl ve vypočtených azimutech se přičte k horizontálnímu směru (získanému v průběhu nastavení projektu při pořízení inicializačního snímku). 4. Následuje krok volání metody move(), viz sekce 4.5, která pošle totální stanici instrukce, kam se má natočit. 5. Následuje vytvoření nového vlákna, pro pořízení snímku. 6. Jakmile je dokončen proces pořízení snímku a snímek je uložen na disk, zavolají se funkce pro extrahování času pořízení snímku a pro odečtení horizontálního a vertikálního úhlu. 7. Předposledním krokem je uložení těchto hodnot do XML souboru observation.xml, viz sekce 4.4. 8. Následuje poslední krok, opětovné volání funkce move(), která sklopí dalekohled totální stanice, aby nedošlo k poškození optiky příliš dlouhým cílením na Slunce. Tyto kroky jsou opakovány v intervalu, který nastavil uživatel v průvodci nastavením projektu, do té doby, než uživatel zavolá metodu stop_tracking() kliknutím na příslušné tlačítko v GUI aplikaci. Tato metoda neudělá nic jiného než, že ukončí vytvořené pracovní vlákno metodou start_tracking(). 39

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ 4.4 Čtení a zápis XML Jak již bylo zmíněno, všechny informace o projektu jsou ukládány do souborů project_settings.xml a observation.xml. XML (extensible Markup Language) je značkovací jazyk určený především pro výměnu dat mezi aplikacemi a pro ukládání strukturovaných dat do souboru. Byl vyvinut a standardizován konsorciem W3C. XML neobsahuje předdefinované značky a je třeba si definovat vlastní. Tyto značky lze definovat v souboru DTD (Document Type Definition). Knihovna Qt podporuje dva způsoby zacházení se XML soubory - DOM (Document Object Model) a SAX (Simple API for XML). DOM (Objektový model dokumentu) je objektově orientovaná reprezentace XML souboru. DOM umožňuje přístup k dokumentu jako ke stromu, což znamená, že jednotlivé elementy jsou reprezentovány uzly a vztahy mezi elementy reprezentují hrany. Kořenem stromu je první párový element. Hlavní výhodou této struktury je jednoduchá práce s dokumentem, snadné přidávání, mazání a editace elementů, ovšem na úkor toho, že se celý strom musí načíst do paměti počítače, což při rozsáhlejších dokumentech vyžaduje dostatečné množství paměti. SAX (Jednoduché API pro XML) umožňuje sekvenční čtení XML dokumentu, k dokumentu se nepřistupuje náhodně, ale sekvenčně. Dokument se rozdělí na jednotlivé jeho části a postupně se volají události, které pracují s konkrétními částmi. Výhoda této metody spočívá v rychlejším zpracování a menší paměťové náročnosti. Nevýhoda je složitější implementace. Třída XML_writer Aplikace SunTraQ ukládá hodnoty parametrů do xml souborů jako DOM. Proces vytvoření dokumentu lze rozdělit do tří kroků 1. vytvoření uzlů (nodes) 2. složení uzlů do stromu 3. uložení do externího souboru Dokument je v Qt reprezentován objektem QDomDocument, značky jsou reprezentovány objektem QDomElement a objekt QDomText reprezentuje data uvedená ve značce. Elementy ani značky nejsou vytvářeny pomocí konstruktoru, ale je třeba použít metody createelement(const QString&) a createtextnode(const QString&). Metodou appendchild(const QDomNode&) se elementy poskládají do stromové struktury. Ukázkový soubor project_settings.xml vypadá následovně 1 <? xml version =" 1.0 " encoding ="UTF -8"?> 2 <! DOCTYPE suntraq SYSTEM " suntraq. dtd " > 3 < suntraq > 4 < project > 5 <project - name > new_project </ project - name > 6 <project - path >/ home / kristyna /</ project - path > 7 </ project > 8 <station - name > Zahradni mesto </ station - name > 9 < latitude > 40

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ 10 < degrees >50 </ degrees > 11 < minutes >03 </ minutes > 12 < seconds >23 </ seconds > 13 </ latitude > 14 < longitude > 15 < degrees >14 </ degrees > 16 < minutes >30 </ minutes > 17 < seconds >48 </ seconds > 18 </ longitude > 19 <date > 20 <day >2</ day > 21 <month >6</ month > 22 <year >2011 </ year > 23 </ date > 24 <photo > 25 <image - path >/ home / kristyna / new_project / calib_pics /img -176. jpg < / image - path > 26 <time - stamp > 27 <hours >18 </ hours > 28 < minutes >02 </ minutes > 29 < seconds >04 </ seconds > 30 </time - stamp > 31 < exposure >0</ exposure > 32 < aperture >4</ aperture > 33 <iso >0</ iso > 34 </ photo > 35 <horizontal - angle > 164.065 </ horizontal - angle > 36 <vertical - angle > 328.901 </ vertical - angle > 37 <dut1 > -0.3 </ dut1 > 38 <Delta -TT >34 </ Delta -TT > 39 <CEST >2</ CEST > 40 < coordinates > 2011 </ coordinates > 41 <serial - port > ttyusb0 </ serial - port > 42 <picture - interval >2</ picture - interval > 43 <air - temperature >25 </air - temperature > 44 <air - pressure >1022 </air - pressure > 45 </ suntraq > Zdrojový kód 4.5: Ukázka souboru XML Třída XML_reader Třída XML_reader slouží k parsování dat uložených ve XML souboru. Parametrem konstruktoru je jméno XML souboru v podobě QString. Třída si tento soubor otevře a načte jeho stromovou strukturu, protože soubory vytvořené třídou XML_writer jsou typu DOM. Třída obsahuje asi 20 metod pro získání různých parametrů, např. pro název projektu, umístění projektu, stanovisko, jeho zeměpisnou šířku a délku,.... Všechny tyto parametry jsou vráceny jako QString. 41

START BIT 0 BIT 1 BIT 2 BIT 3 BIT 4 BIT 5 BIT 6 PARITY STOP KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ 4.5 Komunikace přes sériový port S totální stanicí lze komunikovat přes sériové rozhraní zasláním příslušného pokynu v podobě textového řetězce. Komunikace přes sériový port, také označována jako RS232, je standard definovaný pro sériovou komunikaci dvou zařízení, tzn. že jednotlivé bity dat jsou vysílány postupně za sebou po jediném vodiči. V dnešní době se ustoupilo od používání sériového rozhraní RS232, které bylo nahrazeno výkonnějším rozhraním USB (Univerzální sériové rozhraní). Počítače dokáží přenášet informace (data) v čase pomocí bitů. Rychlost přenosu je vyjádřena v jednotkách bit za vteřinu (bps) nebo také baud rate, který vyjadřuje kolikrát se změnil signál během jedné vteřiny. Každý sériový port na UNIXovém systému má jedno nebo více souborových zařízení umístěných v adresáři /dev. Na operačním systému GNU/Linux se jedná o zařízení /dev/ttys0, popř. /dev/ttys1. Pokud je zařízení připojené přes USB port, tak se jedná o /dev/ttyusb0, popř. /dev/ttyusb1. Asynchronní komunikace Každý systém, který s něčím komunikuje, potřebuje zajistit způsob, jak určit, kde jeden znak končí a druhý začíná. V asynchronním režimu, sériová linka zůstává ve stavu (+12V), viz obrázek 4.2, dokud se nevyšle znak. Nejdříve je vyslán první bit říkající systému, že nová data sériové komunikace jsou dostupná. Bezprostředně po něm následují bity zprávy, poté volitelné paritní bity a nakonec stop bity. Data mohou být poslána nebo přijata kdykoliv, a proto název asynchronní komunikace. -12 V Obrázek 4.2: Asynchronní komunikace[17] +12 V Volitelný paritní bit není nic jiného, než suma dat, která indikuje, zda data obsahují nebo neobsahují sudý nebo lichý počet jedniček. Jedná-li se o sudou paritu, potom je paritní bit roven 0, pokud znak obsahuje sudý počet jedniček. Jedná-li se o lichou paritu, tak je paritní bit roven 0, pokud znak obsahuje lichý počet jedniček. Žádná parita znamená, že žádný paritní bit nebyl vyslán. Zbývající bity se nazývají stop bity. Stop bity byly zpočátku vysílány proto, aby měl systém čas zpracovat předchozí přijaté znaky, dnes slouží k synchronizaci přijímaných dat. Nastavení portu je většinou vyjadřováno zkratkami 8N1, 7E1, kde 8N1 je zkratka pro 8-bitová data, žádná parita, 1 stop bit a 7E1 je zkratka pro 7-bitová data, sudá parita, 1 stop bit. V rámci komunikace s totální stanicí byly implementovány tři metody 1. open_port() otevře komunikaci mezi totální stanicí a počítačem, 2. read_from_totalstation() čte a vrací hodnoty čtení horizontálního a vertikálního kruhu, 42

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ 3. move() posílá totální stanici informace o tom, které hodnoty horizontálního a vertikálního úhlu má nastavit. Metoda open_port() je deklarována následovně 1 int open_ port ( const char * port, 2 long int baudrate, 3 long int databits, 4 long int stopbits, 5 int parity, 6 bool hwcontrol ); Zdrojový kód 4.6: Metoda open_port() Protože sériový port je reprezentován souborem, zavolá se systémová funkce open(), která zaručí komunikaci mezi zařízeními. Funkce open() vrací celočíselnou hodnotu, tzv. file descriptor portu. 1 int fd; // file descriptor for the port 2 fd = open (port, O_RDWR O_NOCTTY O_NDELAY ); Zdrojový kód 4.7: Otevření sériového portu Vlajka O_RDWR nastaví port do módu čtení a zápisu. Vlajka O_NOCTTY řekne systému, že tento program nechce být řídící terminál portu. Pokud se tato vlajka nenastaví, tak každý vstup (např. z klávesnice) ovlivní daný proces. Vlajka O_NDELAY řekne systému, že se program nestará o stav DCD 1 signálu. Další konfiguraci sériového portu jako je přenosová rychlost, velikost znaku, parita, stop bity a další se nastaví pomocí dvou systémových funkcí tcgetattr() a tcsetattr(), které jsou k dispozici po importu souboru termios.h. Struktura termios zahrnuje člen c_cflag, který řídí zmíněné vlastnosti portu. Obsahuje také dvě vlajky, které musí být povoleny. Jedná se o CLOCAL a CREAD, které zaručí, že se program nestane vlastníkem portu a dojde k zachycování signálu a čtení příchozích datových bitů. Nastavení přenosové rychlosti (baud rate) se provádí pomocí funkcí cfsetospeed() a cfsetispeed(), které jsou součástí termios struktury. 1 tcgetattr ( fd, & options ); // get the current options for port 2 switch ( baudrate ) { 3 case 1200: 4 cfsetispeed (& options, B1200 ); 5 cfsetospeed (& options, B1200 ); 6 break ; 7 case 9600: 8 cfsetispeed (& options, B9600 ); 9 cfsetospeed (& options, B9600 ); 10 break ; 11 case 19200: 12 cfsetispeed (& options, B19200 ); 13 cfsetospeed (& options, B19200 ); 14 break ; 1 DCD(Data Carrier Detect) jeden z pinů sériového konektorů 43

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ 15 default : 16 std :: cerr << " Wrong baudrate." << baudrate << std :: endl ; 17 return -1; 18 } 19 options. c_ cflag = ( CLOCAL CREAD ); 20 tcsetattr (fd, TCSANOW, & options ); Zdrojový kód 4.8: Nastavení přenosové rychlosti sériového portu Funkce tcgetattr() naplní termios strukturu s nastavením portu, které je momentálně k dispozici. Po nastavení přenosové rychlosti a vlajky CLOCAL, CREAD zapíše tyto hodnoty pomocí funkce tcsetattr(). Konstanta TCSANOW specifikuje, že se všechny změny mají provést okamžitě bez čekání na dokončení posílání a čtení dat, resp. na vyprázdnění vyrovnávací paměti. Na rozdíl od nastavení přenosové rychlosti, neexistuje pro nastavení velikosti znaku spolehlivá metoda a je nutné provést bitové maskování. Velikost znaku se udává v bitech, nejčastěji se jedná o 8-bitové znaky. 1 switch ( databits ) { 2 case 8: 3 options. c_ cflag &= ~ CSIZE ; /* Mask the character size bits */ 4 options. c_ cflag = CS8 ; /* Select 8 data bits */ 5 break ; 6 case 7: 7 options. c_ cflag &= ~ CSIZE ; /* Mask the character size bits */ 8 options. c_ cflag = CS7 ; /* Select 7 data bits */ 9 break ; 10 default : 11 std :: cerr << " Wrong databits." << databits << std :: endl ; 12 return -1; 13 } Zdrojový kód 4.9: Nastavení velikosti znaku pro sériovou komunikaci Stejně jako velikost znaku, musí se ručně nastavit i typ parita bitů. Unixové ovladače sériového portu podporují generování bitů se sudou, lichou nebo žádnou paritou. Parita se nastaví následovně 1 switch ( parity ) { 2 case 0: 3 default : // none 4 options. c_ cflag &= ~ PARENB ; 5 options. c_cflag &= ~ CSIZE ; 6 options. c_ cflag = CS8 ; 7 break ; 8 case 1: // odd 9 options. c_ cflag = PARENB ; 10 options. c_ cflag = PARODD ; 11 options. c_ cflag &= ~ CSIZE ; 12 options. c_ cflag = CS7 ; 13 break ; 14 case 2: // even 44

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ 15 options. c_ cflag = PARENB ; 16 options. c_ cflag &= ~ PARODD ; 17 options. c_ cflag &= ~ CSIZE ; 18 options. c_ cflag = CS7 ; 19 break ; 20 } Zdrojový kód 4.10: Nastavení parity sériového portu A konečně stop bity se nastaví pomocí konstanty CSTOPB. 1 switch ( stopbits ) { 2 case 1: 3 options. c_ cflag &= ~ CSTOPB ; 4 break ; 5 case 0: 6 options. c_ cflag &= CSTOPB ; 7 break ; 8 default : 9 break ; 10 } Zdrojový kód 4.11: Natavení stop bitů pro sériovou komunikaci Další metodou, která byla implementována v rámci komunikace s totální stanicí se nazývá read_from_totalstation(), která má za úkol vrátit hodnoty čtení horizontálního a vertikálního kruhu. Metoda read_from_totalstation() pošle totální stanici příkaz, aby ji vrátila informace o hodnotách čtení horizontálního a vertikálního kruhu. Návratovou hodnotou je vektor obsahující právě tyto hodnoty v podobě datového typu double. Zápis dat do portu se provádí pomocí systémového volání funkce write(). Čtení dat poté zajišťuje systémové volání funkce read(). Následující ukázka kódu nastiňuje zmíněnou komunikaci (jedná se o pseudokód). 1 GNU_gama :: Vec < double > read_totalstation ( int fd){ 2 const unsigned IBUFFLEN = 30; 3 char buff [ IBUFFLEN ]; 4 int nread ; 5 std :: string result ; 6 7 unsigned char send_read [] = "RG\r"; 8 int send_read_l = sizeof ( send_read ); 9 10 write (fd, send_read, send_read_l ); 11 12 nread = read ( fd, buff, IBUFFLEN ); 13 result = std :: string (buff, nread ); 14 // parsing values and saving them to vector and return 15 } Zdrojový kód 4.12: Čtení dat z totální stanice přes sériové rozhraní 45

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ Metoda move() zajišťuje posílání příkazů pro nastavení horizontálního a vertikálního úhlu, tedy pohyb totální stanice. Komunikace probíhá prostřednictvím ASCII protokolu. Nejdříve se totální stanici pošle příkaz pro nastavení hodnot úhlu, a poté příkaz pro nastavení požadované pozice. Pro nastavení horizontálního a vertikálního úhlu zašleme přes sériové rozhraní následující (opět se jedná o pseudokód). 1 void move ( int fd, double hz, double vz){ 2 unsigned char WG_ HA [] = " WG, 27=300. 00\ r"; // sets horizontal to 300 grads 3 unsigned char WG_ VA [] = " WG, 26=100. 00\ r"; // sets vertical to 100 grads 4 write (fd, WG_HA, len ( WG_HA )); 5 write (fd, WG_VA, len ( WG_VA )); 6 unsigned char WS_ PH [] = " WS = PH\ r"; // sets position for horizontal 7 unsigned char WS_ PV [] = " WS = PV\ r"; // sets position for vertical 8 } Zdrojový kód 4.13: Pohyb totální stanice přes sériové rozhraní 4.6 Databáze efemerid Slunce Jedním z otazníků této diplomové práce bylo zvolení mechanismu, jak přistupovat k efemeridám Slunce. Bylo nutné vymyslet způsob, jak se dotazovat na rovníkové souřadnice Slunce pro konkrétní den a kde vůbec tyto souřadnice získat. Nakonec jsem zvolila mechanismus uložení efemerid do databáze SQLite, tuto databázi při inicializaci aplikace načíst a pak už se jen dotazovat na konkrétní data. Efemeridy Slunce byly použity z Hvězdářské ročenky pro rok 2011, kterou každý rok vydává Planetárium Praha. Po zakoupení ročenky je možné se zaregistrovat na webových stránkách http://rocenka.observatory.cz a data si stáhnout v elektronické podobě. Efemeridy Slunce jsou počítány podle Bretagnonovy teorie pohybu Země kolem Slunce VSOP82. Vzhledem k přesnosti publikovaných efemerid jsou uváženy pouze ty periodické členy, jejichž amplitudy převyšují 30 km v heliocentrické poloze Země. Pro každý den v roce publikovány základní efemeridy Slunce. Je uveden den v měsíci a týdnu, juliánské datum a pro 0 h terestrického času zdánlivé rovníkové geocentrické souřadnice středu slunečního disku. Pro 0 h světového času každého dne je dán zdánlivý hvězdný čas. Pro padesátou rovnoběžku a středoevropský poledník jsou pak pro každý den spočítány okamžiky východu, pravého poledne a západu Slunce a jeho přibližný azimut v okamžiku západu. Západy a východy jsou vztaženy k hornímu okraji Slunce, refrakce při obzoru je uvážena hodnotou 34. [7] Databáze SQLite je softwarová knihovna, která implementuje transakční SQL databázi bez nutnosti její konfigurace, a proto patří mezi nejrozšířenější SQL databázi na světě. Binární balíčky této databáze jsou součástí velkého procenta linuxových distribucí a stačí tedy potřebný balíček nainstalovat z repositáře. Mezi důležité vlastnosti, které vedly právě pro volbu SQLite, jsou následující 46

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ 1. implementace knihovny je nenáročná na zdroje 2. databáze efemerid slunce obsahuje pouze 365 řádků, nejedná se tedy o velké množství dat, která by vyžadovala sofistikovanější datovou strukturu 3. celá databáze je uložena v jednom souboru na disku 4. databázový soubor může být přenášen mezi různými platformami, což znamená, že jeden soubor s databází lze použít na operačním systému GNU/Linux, Windows i Mac OS bez jakýkoliv dalších úprav 5. nevyžaduje, aby běžel databázový server, jak je tomu například u MySQL či PostreSQL, tzn., že v době, kdy se s databází nepracuje, neběží žádný další proces v systému související s databází 6. jedním z důležitých hledisek byla i podpora implementace v Qt knihovně Databáze SQLite je v knihovně Qt reprezentována objektem QSqlDatabase, který poskytuje rozhraní pro přistupování k datům v databázi pomocí podporovaných databázových ovladačů. Momentálně se jedná asi o 10 různých databází, z nichž nejznámější jsou MySQL, PostreSQL (verze 7.3 a výše), SQLite (verze 2 a 3), Oracle Call Interface a ODBC. Spojení s databází se provede statickou funkcí adddatabase() s parametrem ovladače, který chcete použít a spojení se naváže voláním funkce open() s návratovou hodnotou typu bool 1 QSqlDatabase db = QSqlDatabase :: adddatabase (" QSQLITE "); 2 db. setdatabasename ("./ sun_ephemeris / sunephemeris "); 3 bool open = db. open (); Zdrojový kód 4.14: Vytvoření spojení s databází SQLite Po vytvoření databáze následuje krok navržení tabulky, která bude reprezentovat efemeridy Slunce. Pomocí objektu QSqlQuery vytvoříme SQL dotaz pro vytvoření tabulky, která bude obsahovat 11 sloupců a po importu dat 365 řádků. V sloupcích tabulky jsou postupně ukládány hodnoty pro primární klíč, který není nezbytně nutný v této databázi, modifikované juliánské datum, rektascenze, deklinace a světový hvězdný čas. 1 if (db. tables (). indexof ( tbl ) == -1) { 2 QString db_ query = 3 " CREATE TABLE " + tbl + 4 " ( id INTEGER PRIMARY KEY AUTOINCREMENT," + 5 " MJD DOUBLE, " + 6 " RA_h INTEGER," + 7 " RA_min INTEGER," + 8 " RA_ sec DOUBLE, " + 9 " DEC_deg INTEGER," + 10 " DEC_min INTEGER," + 11 " DEC_sec DOUBLE,"+ 12 " t_h INTEGER," + 13 " t_min INTEGER," + 47

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ 14 " t_s ~ DOUBLE );"; 15 QSqlQuery query ; 16 if (! query. exec ( db_query )) { 17 QMessageBox msgerr ; 18 msgerr. settext (" Cannot create database table!"); 19 msgerr. exec (); 20 return -1; 21 } 22 } Zdrojový kód 4.15: Vytvoření tabulky v databázi Jak již bylo zmíněno, data efemerid Slunce byla stažena z webových stránek v elektronické podobě ve formátu html. Pro snazší import dat, byla data převedena do textového formátu txt a ručně upravena tak, že každý sloupec byl oddělen minimálně jednou mezerou. Takto upravená data byla poté načtena do databáze, jak demonstruje následující ukázka zdrojového kódu. Protože data ročenky obsahují Juliánské datum pro každý den v roce, byly při importu tyto hodnoty přepočítány na modifikované juliánské datum, se kterým se lépe pracuje. 1 QTextStream in (& source ); // opening file for import 2 QString line ; 3 while (! in. atend ()) { 4 line = in. readline (); // reading first line in file 5 QStringList list = line. split (" ", QString :: SkipEmptyParts ) ; 6 double MJD = list [ 0]. todouble () - 2400000. 5; 7 int RA_h = list [1]. toint (); 8 int RA_min = list [2]. toint (); 9 double RA_sec = list [3]. todouble (); 10 int DEC_deg = list [4]. toint (); 11 int DEC_min = list [5]. toint (); 12 double DEC_sec = list [6]. todouble (); 13 int t_h = list [7]. toint (); 14 int t_min = list [8]. toint (); 15 double t_s = list [ 9]. todouble (); 16 QString tbl_ prepare = " INSERT INTO " + tbl + "( MJD, RA_h, RA_min, RA_sec, DEC_deg, DEC_min, DEC_sec, t_h, t_min, t_s )" 17 " VALUES (: MJD, :RA_h, : RA_min, : RA_sec, : DEC_deg, : DEC_min, : DEC_sec, :t_h, : t_min, : t_s );"; 18 insert. prepare ( tbl_prepare ); 19 insert. bindvalue (": MJD ", MJD ); 20 insert. bindvalue (": RA_h ", RA_h ); 21 insert. bindvalue (": RA_min ", RA_min ); 22 insert. bindvalue (": RA_sec ", RA_sec ); 23 insert. bindvalue (": DEC_deg ", DEC_deg ); 24 insert. bindvalue (": DEC_min ", DEC_min ); 25 insert. bindvalue (": DEC_sec ", DEC_sec ); 26 insert. bindvalue (": t_h ", t_h ); 27 insert. bindvalue (": t_min ", t_min ); 28 insert. bindvalue (": t_s ", t_s ); 29 insert. exec () ;} Zdrojový kód 4.16: Import dat do databáze 48

KAPITOLA 4. IMPLEMENTACE APLIKACE SUNTRAQ Vstupuje-li do výpočtu, ať už aktuálních obzorníkových souřadnic Slunce nebo astronomického azimutu, některá z veličin uvedená v databázi, stačí pouze zavolat konkrétní metodu, která položí dotaz do databáze. Byly implementovány metody pro získání požadované hodnoty rektascenze, deklinace a světového hvězdného času. Následující kód nastiňuje implementaci metody pro získání hodnoty rektascenze pro zvolený den. Hodnota rektascenze je vrácena v hodinách datovým typem double. 1 double SunViewer :: get_ RA ( int day ) { 2 QDate actual_ date = QDate :: currentdate (); 3 int month = actual_ date. month (); 4 int year = actual_ date. year (); 5 int Ra_ hour = 0; 6 int Ra_ min = 0; 7 double Ra_ sec = 0; 8 QString query = " SELECT * FROM sun_ 2011 WHERE MJD =" + QString :: number ( compute_mjd (day, month, year )); 9 QSqlQuery select_all (db); 10 if ( select_all. exec ( query )) { 11 QSqlRecord records = select_ all. record (); 12 int Ra_h = records. indexof (" RA_h "); 13 int Ra_m = records. indexof (" RA_min "); 14 int Ra_s = records. indexof (" RA_sec "); 15 while ( select_all. next ()) { 16 Ra_hour = select_all. value ( Ra_h ). toint (); 17 Ra_min = select_all. value ( Ra_m ). toint (); 18 Ra_sec = select_all. value ( Ra_s ). todouble (); 19 } 20 double RA = Ra_hour + Ra_min /60.0 + Ra_sec /3600.0; 21 return RA; // hod 22 } else { 23 QMessageBox msgerr ; 24 msgerr. settext (" Cannot fetch Rectascense value! Something is wrong with database : -("); 25 msgerr. exec (); 26 return -1; 27 } 28 } Zdrojový kód 4.17: Metoda získání hodnoty rektascenze pro zvolený den v roce Metoda funguje tak, že si pro zadaný den vypočítá modifikované juliánské datum a poté vybere z databáze požadované hodnoty rektascenze na řádku s odpovídající hodnotou MJD. Předpokladem zde je, že uživatel má na systému správně nastaveno datum. Metody pro získání deklinace a světového hvězdného času jsou implementovány analogicky. 49

5 Software pro zpracování obrazu Druhou část této diplomové práce tvoří software Azimuth_CV určený pro zpracování obrazu a výpočet astronomického azimutu, který byl již částečně popsán v sekci 3.2. Jak již bylo řečeno, tato aplikace načítá snímek po snímku, určuje střed slunečního disku, střed nitkového kříže a ze zadané hodnoty horizontálního směru záměry na pozemní cíl počítá hodnotu astronomického azimutu pozemního cíle aritmetickým průměrem a jeho přesnost. Software byl opět napsán v jazyce C++ s použitím knihovny Qt. Pro zpracování obrazu byla pak ještě využita knihovna OpenCV. 5.1 Problematika detekce středu slunečního disku Nakonec se ukázalo, že nejtěžším úkolem bude implementace univerzální metody, která by spolehlivě detekovala střed Slunce pro všechny pořízené snímky. Byly implementovány tři metody, kterými lze detekovat určité vlastnosti obrazu. Tyto metody jsem zkusila porovnat a poté vybrat tu nejlepší. Jedná se o metodu Houghovy transformace, která hledá kružnice v daném obraze, metodu porovnávání zdrojového obrazu se šablonou a metodu prahování. 5.1.1 Houghova transformace Houghova transformace je metoda určená pro detekci geometrických tvarů v obraze, tzn. hledání linií, kružnic a jiných jednoduchých tvarů. Původní Houghova transformace byla určena pouze pro hledání linií, později však byla generalizována pro další geometrické tvary. Z této metody také vychází metoda pro hledání kružnic. Hlavní výhodou této metody je její robustnost vůči nepravidelnostem a porušení hledané křivky. Princip metody se nejlépe ukáže na příkladu detekce přímky v obraze. Rovnice přímky je vyjádřena následovně r = x cos θ + y sin θ 50

KAPITOLA 5. SOFTWARE PRO ZPRACOVÁNÍ OBRAZU kde r je vzdálenost přímky od počátku a úhel θ je úhel, který svírá normála přímky s osou x, viz obrázek 5.1 y r Θ O x Obrázek 5.1: Parametrické vyjádření přímky V algoritmu se využívá tzv. akumulační buňka. Všechny tyto buňky tvoří 2D graf, kde jsou na jedné ose vyneseny hodnoty pro r a na druhé ose jsou hodnoty θ. Postup detekce spočívá v tom, že pro každý bod obrazu o souřadnicích x a y a θ z intervalu < 0, 2π > se vypočtou hodnoty pro r. Vypočítaná hodnota pro r a hodnota θ se uloží do akumulační buňky, jejíž hodnota je poté inkrementována. Takto vznikne pro každý bod v obraze jedna přímka. Leží-li body na přímce, tak potom křivky spočítané pro tyto body se protínají v jednom bodě. Tím vzniknou lokální maxima a souřadnice toho bodu představují parametry θ a r. Algoritmus pro detekci kružnic v obraze funguje na podobném principu, ovšem místo dvou parametrů nyní hledáme parametry 3 a tím výrazně roste náročnost algoritmu. OpenCV knihovna neimplementuje tuto metodu přímo, ale implementuje metodu nazvanou Houghova metoda gradientu. Tato metoda funguje tak, že se nejdříve provede metoda pro detekci hran pomocí funkce cvcanny(), a poté se pro každý nenulový bod v detekované hraně vypočte lokální gradient pomocí funkce cvsobel(). Pomocí gradientu jsou označeny nejvzdálenější a nejbližší body a akumulační buňka je inkrementována jako v předchozím případě při detekci přímek. Zároveň je uloženo i umístění těchto bodů. Kandidáti na střed hledané kružnice jsou vybrány právě z těchto bodů. Tito kandidáti jsou seřazeni sestupně podle hodnot akumulačních buněk. Poloměr kružnice se určí z nenulových pixelů, které jsou vztaženy k danému středu. Tyto body jsou setříděné podle vzdálenosti od středu a nejvíce odpovídající poloměr je vybrán. Tento algoritmus je daleko rychlejší a robustnější. Deklarace metody v OpenCV knihovně je následující 1 CvSeq * cvhoughcircles ( 2 CvArr * image, 3 void * circle_ storage, 4 int method, 5 double dp, 6 double min_ dist, 7 double param1 = 100, 8 double param2 = 300, 9 int min_ radius = 0, 51

KAPITOLA 5. SOFTWARE PRO ZPRACOVÁNÍ OBRAZU 10 int max_ radius = 0 11 ); Zdrojový kód 5.1: Deklarace metody cvhoughcircles() Vstupním parametrem image je 8-bitový obraz (v odstínech šedi), circle_storage je alokované pole v paměti, do kterého se uloží nalezené kružnice. Argument metody method musí být vždy nastaven na CV_HOUGH_GRADIENT. Parametr dp určuje velikost akumulační buňky. Tento parametr umožňuje nastavit rozlišení akumulátoru menší než je rozlišení vstupního obrazu, protože se nepředpokládá, že se v obraze vyskytuje tolik kružnic, kolik je pixelů. Parametr min_dist definuje minimální vzdálenost, která musí existovat mezi nalezenými kružnicemi. Parametry param1 a param2 jsou vstupními parametry pro funkce detekce hran a prahování, které se volají interně. Poslední dva parametry min_radius a max_radius určují minimální a maximální poloměr kružnic, které se mají hledat. Jak se ukázalo, metoda Houghovy transformace není příliš vhodná, protože slunce na snímku není pravidelná kružnice. Následující snímek zobrazuje zpracování obrazu Slunce algoritmem Houghovy transformace se zobrazenou detekovanou kružnicí a středem. Z obrázku 5.2 je zřejmé, že slunce nemá tvar pravidelného kruhu. Obrázek 5.2: Detekce středu Slunce metodou Houghovy transformace 5.1.2 Metoda Template Matching Další metodou, kterou jsem použila pro detekci středu slunečního disku je metoda založená na porovnávání vzorů a obrazů. V OpenCV knihovně je tato metoda implementována pomocí cvmatchtemplate(). Metoda využívá vzor, který má přesně definovaný střed a tento střed se poté hledá v dané fotografii. Metoda cvmatchtemplate() je deklarována následovně 1 void cvmatchtemplate ( 2 const CvArr * image, 52

KAPITOLA 5. SOFTWARE PRO ZPRACOVÁNÍ OBRAZU 3 const CvArr * templ, 4 CvArr * result, 5 int method, 6 ); Zdrojový kód 5.2: Deklarace metody cvmatchtemplate() Vstupním parametrem je image, což je 8-bitový nebo barevný obraz. Šablonou je argument templ, jedná se o výřez obrazu, který hledáme. Parametr result je výsledný objekt buď 8-bitový nebo barevný obraz o velikosti (image->width - templ->width +1, image->height - templ->height +1). Posledním vstupním parametrem je parametr method. Metoda, kterou jsem zvolila je následující (I značí vstupní obraz, T značí obraz šablony a R značí výsledný obraz, souřadnice pixelu obrazu, ve kterém hledáme danou šablonu, jsou označeny x, y a souřadnice pixelu šablony jako x, y ) CV_TM_CCORR_NORMED metoda je založená korelaci hodnot, tedy na násobení hodnot šablony a vstupního obrazu, tzn. nejlepší shoda má vysokou hodnotu a nejhorší shoda je malá hodnota nebo 0 R ccorr_normed (x, y) = R ccorr(x, y) Z(x, y) R ccorr (x, y) = x,y [T (x, y ) I(x + x, y + y )] 2 Z(x, y) = x,y T (x, y ) 2 x,y I(x + x, y + y ) 2 Obrázek 5.3: Detekce středu Slunce metodou Template Matching Metodu template matching také nelze považovat za 100% spolehlivou, protože záleží na volbě šablony. Šablonou se v tomto případě volí oříznuté Slunce, viz. obrázek 5.4. Aby se tato metoda mohla použít pro detekci středu slunečního disku, musela by se šablona vytvořit pro každý snímek zvlášť, navíc výřez Slunce by musel být na pixel přesný, abychom ve fotografii našli střed slunečního disku a ne střed výřezu. 53

KAPITOLA 5. SOFTWARE PRO ZPRACOVÁNÍ OBRAZU Obrázek 5.4: Volba šablony pro metodu template matching 5.1.3 Metoda prahování (Thresholding) Prahování (thresholding) je metoda pro segmentaci obrazu. Algoritmus prahování funguje tak, že pokud je hodnota pixelu větší nebo menší než daná hodnota prahu, tak se vykoná požadovaná akce. Hlavním problémem je právě volba hodnoty prahu. Nejjednodušší je volba střední hodnoty (průměr hodnot pixelů) nebo mediánu. Pokud hledáme objekt, jehož pixely jsou světlejší než pozadí, pak je jasné, že jeho pixely budou světlejší i než průměrná hodnota pixelů celého obrazu. Sofistikovanější metoda je vytvoření histogramu intenzity pixelů a použití hodnoty peaku jako práhu, viz obrázek 5.5. Obrázek 5.5: Histogramy jednotlivých kanálu R, G a B 54