STAR DETECTIONS

FOTOGRAFIKUS CSILLAG ÉRZÉKELÉS

By Agócs László alias Stella_209

 

Bevezető gondolatok

2008.11.04.

 

Mostanában, a csillagok fényképezése mellett (helyett) a felvételek kiértékelése foglalkoztat.

A legtöbb asztrofotóssal ellentétben, akik híres objektumokról készített szebbnél-szebb felvételeikkel gyönyörködtetnem meg bennünket, engem a kevésbé fotogén csillagvidékek és célobjektumok érdekelnek: Egyrészt jelenlegi műszereim mérete, másrészt a megfigyelő helyem nem mindennapi fényszennyezése nem teszi lehetővé, hogy a mélyég objektumokkal foglalkozzam.

 

A fentiek okán elhatároztam, hogy a felvételekben rejlő látható vagy rejtett információk mind hatékonyabb kinyerésével foglalkozom. Egy automatizált asztrofotókat elemző rendszer: StarFactory – STAF – kifejlesztését tűztem ki célul. Ennek a nyílt forráskódú programnak fő előnye abban rejlik, hogy bárki részese lehet a fejlesztésnek és bárki módosíthatja, javíthatja és tökéletesítheti a rendszert igényei szerint.

 

A legfontosabb megoldandó probléma, a csillagoknak a felvételeken történő automatikus detektálásának megoldása volt, amennyiben ez alapfeltétele a:

 

·         Több felvétel automatikus illesztésének (eltolás, elforgatás);

·         Archív felvételekkel való összehasonlításnak a változások kiszűrésére;

·         Csillagkatalógus adatok objektumokhoz rendelésének;

·         És nem utolsó sorban pl. változó csillagok sorozatfelvételeinek automatizált elemzésének ill. ennek tovább fejlesztéseként a változók intenzitás diagramjainak automatikus generálása céljából.

 

Az alább vázolásra kerülő StarDetec teszt program, mely reményeim szerint némi tovább fejlesztés után korrekt módon megoldja ezt az alap feladatot, több évi előtanulmány és tipródás előzte meg.

 

Az első kísérletemben – több mint tíz évvel ezelőtt – Visual Basic-ben íródott algoritmusom lényege az volt, hogy ha ráböktünk egy csillagra, akkor a rámutatási pont x,y koordinátájából kiindulva a teljes csillagkorongot bejárva sorról-sorra meghatározva a küszöb érték feletti intenzítású pixeleket, számítással meghatároztam a csillag képének geometriai középpontját és a korongnak véve a csillag képét, annak sugarát.

 

Ez egy jó első közelítő módszernek bizonyult, két szembeötlő hiányossága ellenére: minden csillagra külön-külön kellett manuálisan rápozícionálni, valamint a csillag fotografikus képében a pixelek eltérő intenzítás értékeit nem véve figyelembe, azokat egyenrangúként kezelte. Az alapötletet megtartva annak finomítására törekedtem.


STARDETECTION TESZT PROGRAM   Letöltése

 

A legegyszerűbb logika szerint elemzi az asztrofotókat és kigyüjti a csillag pozíciókat a felvétel relatív koordináta rendszerében: bal felső sarok az origó. Némi fotometria előkisérlet is be van építve, persze még nem komoly, de gyúrom nagyon!

 

 

Program funkciók:

 

Kép betöltés:  Jelenleg csak BMP. Ha a saját képedet akarod elemezni, IntanView-al vagy más grafikus programmal mentsd ki windows bitmap formátumban és úgy töltsd be.

 

Eredeti kép:  gombbal

 

Black&White konverzió:  gombbal. Fekete-fehér átalakítás;

 

Akció manuális kijelölésekhez: , Fotometria

 

Új mérés: Minden adatot töröl;

 

Háttér levonás: a manuálisan mért háttérzaj levonása a képből.

Ha az akció=Háttérzaj mérés, akkor a kép csillagmentes területeire bal egérgombbal klikkelve egyedi háttérzajszintet mérünk a mérő Kör sugara-val meghatározott körben. Ennek értéke egy kis csúszkával állítható. Az egyedi méréseket a Háttérzaj táblázat sorai jelenítik meg és alul az átlag értékeket számítja a program.

 

Diagram panel elemei:

Kurzor pozíció a képen

 

Threshold (háttérzaj küszöb érték) faktor : ezzel módosíthatod a küszöbértéket a zaj levágásához és kivonásához. Kísérletezz!

 

A mérő kör sugara pixelben. A csúszka állítja.

 

 

 

Mérőkörbe eső képrészlet kinagyítva

 

 

 

 

INTENZITÁS DIAGRAM

A mérőkör vizszintes középvonala mentén méri a pixelek intenzitását a 3 színcsatornában: R,G,B

 

Vörösebb csillagoknál a piros grafikon magasabb

 

 

 

Megjelenítendő színek a diagrammon

  

Automatikusan levonja a háttérzaj átlagát a fenti szorzó figyelembe vételével.

 

AUTOMATIKUS CSILLAG ÉRZÉKELÉS

 

Manuális fotometria menete:

  1. Néhány csillagmentes területen (Akció: Háttérzaj mérés) zajszintet mérünk;
  2. Háttér levonás: gombbal; vagy Automatik Háttérzaj gombbal;
  3. Akció=Fotometria: A mérendő csillagokat egyenként kell a mérőkörbe pozícionálni és bal gombbal rákattintani. A pixel átlaglás eredményét a Fotometria táblázat sorai tartalmazzák. Még fejlesztés alatt!

 

A teszt program fotometria részét fejlesztem: több mérési módszert fogok kipróbálni ismert csillagokkal tesztelve.

 

A program logikáját az alábbi leírásban találod, a részleteket pedig a (Delphi) Pascal forráskódban. Észrevételeket email-ben várom!

 


STAR DETECTION ALGORITMUS

 

A csillagok egy felvételen domb vagy tű szerű lokális intenzitás maximumokként jelentkeznek.

 

 

Ez a felvételpár jól mutatja a lényeget. Hozzáteszem, hogy az eredeti felvétel már előzetes feldolgozáson ment keresztül. Gauss elmosás és kontraszt javítás eredményeként szabadultam meg az alap zajtól. Már ránézve is kecsegtető célként jelentkezik az egyedi csillag csűcsok megmérése. A 3d-s ábrázolás jól mutatja a lokális csúcsok Gauss-féle exponenciális görbékkel jól közelíthető lokális maximum helyeket. Nosza rajta: meg kell határozni a csillagok intenzitás maximumaihoz tartozó relatív x,y koordinátáit; a maximális intenzitás értékét, ill. a domb(harang) görbe félérték szélességét.

 

1. THRESHOLD ELIMINATION algoritmus

 

Elsődlegesen a felvételeket terhelő alap(háttér) zajtól (threshold) kell megszabadulni. Ez a zaj – mely a légkör állapotából, a fényszennyezésből ill. a fotografikus és optikai rendszer hibáiból, a detektor elektronikus zajából (elktrosmoog) származik:

 

Ismernünk kell az alapzaj küszöbértékét, azaz a zaj átlagos intenzitását. Ha különböző körülmények között készült felvételeket tanulmányozunk arra a megállapításra jutunk, hogy a zaj szintje a pixeleknek R,G,B csatornáin mért 0..255 közé eső intenzitás skáláján 5-60 között változik. Egy kiváló egű helyen 5-10, a párás és fényszennyezett helyeken 50-60-as intenzitási szintű zaj is rakódhat a képekre.


Az átlagos threshold szint meghatározása: A teljes képet szkennelem és az R,G,B színcsatornákban szeparáltan mérem a 100-as intenzitás szint alatti pixelek intenzitás átlagát.

 

A módszer kritikája: Bár az önkényesen kinevezett 100-as intenzitás szint alatt zömében a háttérzaj pixelei foglalnak helyet, de óhatatlanul is beleesnek a nagyon halvány csillagok ill. a fényesebb csillagok külső, halványabb gyűrű alakú tartományai. Ily módon az átlagos zajszint küszöbértéke (threshold) kissé magasabbnak adódhat, mint valójában, de ez minket nem túlságosan zavar, mert, bár néhány igen halvány csillag odaveszik, de ellenértékként megszabadulunk a kellemetlen zajtól. Megemlítendő, hogy a nagyon halvány csillagokat oly mértékben terheli a háttér zaj, hogy mérésük nem lenne objektív.

A módszer már önmagában látványos képminőség javulást eredményez: lásd. StarDetect tesztprogram Automatik háttérzaj gombjával elérhető hatás.

 

 

 

A zajtól megszbadultunk és a halvány csillagok jó részét is megmentettük.

Az átlagos threshold értéket minden csatornára a kép minden pixeléből kivontam. Ily módon viszont a nagyon fényes ’beégett’ csillagok maximális intenzitás értékei – eredetileg 255 – is 255-threshold értékre estek le. Olyan ez, mintha az intenzítás diagrammot a küszöbérték magasságában egy éles késsel elmetszettük volna vizszintesen és a zajos alsó zónát alóluk kihúzva a kép értékes tartományai lehuppantak az x tengely szintjére.

 

Egy kis átskálázással – vagy másképpen inzenzitás széthúzással kicsit megnöveljük a kép kontrasztját. A 0-s szint 0 maradjon, de a maximális értékek ujra vegyék fel a 255-ös értéket.

Minden pixel értékét (Ics0) megszorozzuk 255/(255-threshold) értékkel, mely 1-nél nagyobb érték.

 

Ics = Ics0 * 255/(255-threshold)

 

A küszöb érték egy önkényesen választott 100-as érték miatt egyenletes zajszintet tételez fel. A gyakorlatban a zaj inhomogén módon oszlik el, ezért egyetlen küszöb érték kivonása a képből nem veszi figyelembe a csillagok képére is rárkódó inhomogenitásokat. Ez kis mértékű pontatlanságokat okozhat a későbbi fotometria során. Ennek hatását majd vizsgálnom kell!


2. BLACK AND WHITE CONVERSION algoritmus

 

Miután a kellemetlen zajtól többé-kevésbé megszabadultam, most átkonvertálom a képet fekete-fehér verzióvá oly módon, hogy a 0-s szint fekete lesz, a többi fölötte pedig fehér.

A StarDetect tesztprogramban a 2 (2 bit) feliratú gombbal érhető el.

 

 

                  Szorzó = 1.00                                                       Szorzó = 1.35

 

Két különböző zajszint szorzót alkalmazva láthatjuk, hogy az 1.00-ás faktorral számolva rengeteg fals, félrevezető pixel nyom maradt a képen, melyek nem valódi csillagok, inkább a zajszint inhomogenitásának lokális csúcsai. A magasabb 1.35-ös faktorú képen már csak néhány téves pixelnyom maradt. A képenként egyedileg más és más faktor meghatározása külön vizsgálatot igényel. Tudniillik: ha a szorzó alacsony, akkor számolnunk kell a téves detekciók tömegével; túl magas faktor értéknél viszont elveszítjük a halvány csillagokat.

Van még egy kellemetlen tény: az egyedi pixelhibák- egy pontban telített (zaj szint fölötti) pixelek ugyanolyan nyomot hagynak a konverzió után, mint a halvány csillagok, melyeknek szintén csak a csúcsuk emelkedik ki a küszöb fölé. Ennek eldöntésére utólagos vizsgálatot kell majdan alkalmaznom.

 

Még akkor is, ha halvány csillagokat fogok veszíteni, kissé magasabbra kell emelni a faktort, mert rengeteg téves (fantom) csillag maradhat az elemzés után, ami nagyon zavaró lehet!

 

Most már – az előkészítő lépések után elérkeztünk a legizgalmasabb részhez - csak az egyedi csillag pöttyök kimérése maradt hátra.


3. STAR DETECTIONS algoritmus

 

Először nézzük meg egyetlen csillag detektálásának logikáját:

 

1.      A kép szkennelése során megtaláljuk a csillagpötty első, legfelső sorában lévő pixelt;

2.      Egy festő rutinnal a kezdeti pixelből kiindulva pirosra (R=255;G=0;B=0) festjük a teljes csillag felületet;

3.      A kezdő sortól lefelé addig szkennelek soronként lefelé haladva amíg piros pixeleket találok;

4.      A szkennelés során minden érintett sorban megjegyzem az első és utolsó piros pixel helyzetét. Ezen adatokból a rutin végén kiszámítom a befoglaló téglalap adatait.
(Azért beszélek téglalapról, mert ugyan ideális esetben a csillag képe korong alakú, így befoglalója négyzet lenne, de a valóságban a csillagok kissé deformáltak, ami a vezetés és a légköri vibráció eredménye.)

5.      Kiszámítom a befoglaló geometriai középpontját és egy tömbben tárolom a sugarával együtt. A csillagpötty sugarát a befoglaló x irányú dimenziójának felezésével kapom.

6.      A meghatározás végső lépéseként a csillagot eliminálom (eltüntetem) feketére festéssel, így nem fogja zavarni a további csillag detektálást. (Őt már letudtuk.)

7.      Mivel ismeretes az egyedi csillag első detektált pontja, innen folytatom a szkennelést, míg ujabb csillagot nem találok. Akkor a fenti folyamatot ujra lefuttatom.

 

HIBA LEHETŐSÉGEK, FEJLESZTÉSI LEHETŐSÉGEK:

 

  1. Jelenleg nem vettem figyelembe azt a tényt, hogy az optika az optikai tengelyen kívól, sőt az attól való távolság függvényében torzítja, egyre jobban szétkeni a csillagokat. Ezért a kép középpontjától távolodva hamis módon egyre fényesebbnek fogjuk mérni a csillagokat, amit ha számszerűsíteni tudok, akkor utólagos korrekciókkal figyelembe kell venni!
  2. Az széleknél tapasztalható elkenődés kisebb hibákat okozhat az asztrometriában, a csillagok pozícióiban is! Ennek korrigálására is ki kell dolgozni egy eljárást.
  3. A kép peremvidékén előfordulnak ’csillag-törmelékek’, olyan csillagok melyek csak részben esnek a felvételre. Ezek elkerülésére – és ezt a legegyszerűbb megoldani – el kell tekintenünk a kép dx méretű külső zónájától. Jelenleg még ezzel sem törődtem!

 


EREDMÉNYEK A STARDETECT PROGRAMMAL SZEMLÉLTETVE:

 

Az Auto Csillag Detect gomb megnyomására a következők történnek:

 

  1. Az eredeti kép betöltése a háttér bitmap-ből;
  2. Zaj szűrés: automatikus threshold elimináció;
  3. Fekete-fehér konverzió: Black&White konverzió;
  4. Csillag centrumok meghatározás és adattömb generálás: Star Detection.
  5. Az eredeti képen piros körökkel való találati eredmények megjelenítése;

 

 

Példaként az egyik leggyengébb, ködben fényszennyezésben készített felvételem elemzésén keresztül szemléltetem a módszer hatékonyságát: (Optika: SW 80 ED APO; Canon EOS 400D; ISO 1600; exp.:30 sec, JPEG Large, Előfeldolgozás: nuku (nincs) – abszolút nyers kép!)

 

 

 

Threshold küszöb faktor = 1.35

 

Ezen az igen gyenge (fogalmazzunk egyértelműen: igen ramaty!) felvételen (részleten) 22 csillagot talát az algoritmus és alig veszítettünk halvány csillagokat! Sőt, ha megnézzük a körök méretét, még azok is nagyjából arányosak a csillag fényességével.

 

 

Threshold küszöb faktor = 2.00

 

 

A küszöb megemelésével már számos halvány csillagot veszítettünk, melyek a zajszint közelében vannak. Mérve: 15 csillag;

 

Nézzünk egy tisztességesebb felvételt: Azonos műszrrel és módszerrel: M39 részlete.

 

 

                      Nyers felvétel                                               Threshold küszöb faktor = 1.00

              Threshold küszöb faktor = 1.35                          Threshold küszöb faktor = 2.00

Konklúzió: Alacsony küszöbnél fals csillagok, magas küszöbnél csillagveszteség.
Erre a felvételre 1.35-1.45 közötti küszöb adja az optimális érzékelést, amikor a fals csillagok már nem nagyon jelentkeznek, és még sok halványat is megmentettünk.

 

Egy szélsőségesen nagy = 10-es küszöbnél csak a legfényesebb csillagok maradnak meg.

 

 

Ennek jelentőségét majd a több felvétel egymásra illesztésénél fogjuk megtapasztalni. Ugyanis itt csupán néhány támpont csillagra lesz szükségünk, hogy az illesztési transzformáció minél egyszerűbb legyen.

( Gondoljuk el, hogy egy éjszakán át fotózunk egy változó csillagot. Ez idő alatt a képek egymáshoz képest elmozdulhatnak, esetleg a pólus állítás pontatlanságai miatt a képmező el is fordulhat. No, kéremszépen: ezeket a képeket kell fedésbe hoznunk!)


A következő felvétel, az előbbinek háttérlevonás és durva kontraszt javítással tuningolt verziója:

 

 

                   Előfeldolgozott kép                                                                     Küszöb = 1

 

Megfelelő előfeldolgozás után a csillag meghatározás majdnem ideális eredményt ad!

Természetesen ezzel elveszítjük az eredeti kép dinamikáját és valóság hűségét, de cserébe pontosabb eredményhez jutunk. Ez a feldolgozás csupán a mérés érdekében szükséges és nem akarjuk legszebb fotóink galériájába rakni. A vizualitás érdekében más feldolgozást kell foganatosítani.

 

M27

Erről nem mondok semmit, de valami még nem oké!

 


HIÁNYOSSÁGOK, HIBÁK, FEJLESZTÉSI ELKÉPZELÉSEK

 

 

  1. Háttérzaj inhomogenitások még nincsenek figyelembe véve;

  2. Pontosabb módszert igényel a háttérzaj küszöb meghatározása;

  3. A képtorzulásokat is figyelembe kell venni;

A csillag pozíciók és fotometriai meghatározásokhoz a jelenlegi módszer egy közelítő eljárás. Második körben minden egyes csillagra automatice rá kell illeszteni a mérőkört és egymással párhuzamosan több módszerrel ki kell mérni a pozíciót és az instrumentális magnitudót.

STAR CENTROID algoritmusok:

Csillag pixelek súlyponti átlagolásával:  Töltsd le a StarCentroid teszt programomat.

        

ahol : x,y        : x,y koordináták (pixelek pozíciója a képen);

           Ixy             : A vizsgált pixel intenzitása.


Csillagokra illesztendő Gauss görbe illesztéssel csúcspont meghatározása.

Fotometriában:

Hagyományos appertúra fotometria módszere;
Gauss illesztő függvény elemzésével: csúcs (peek) és félérték szélesség meghatározásával az R,G,B csatornákra külön és relatív színindex kalkuláció.

  1. Nincs megoldva az ismert referencia csillagokhoz való viszonyítás matematikája;

  2. Nincs megoldva a kiterjedéssel bíró (pl. mélyég, üstökös) objektumok kimérése;
     
  3. Súlyos probléma: a közeli – érintkező – vagy fényesebb csillagok uszályában lévő halványabb csillagok elkülönítése és környezet függő kimérése. Ez a lokális maximumok kiszűrésével érhető el, de még nem tudom, hogyan.

  4. Több kép illesztése még nem megoldott;

  5. Nem megoldott csillagkatalógusokkal való együttműködés;

  6. Változó csillag sorozatokból automatikus fénygörbe generálás;

  7. Bemozdult képek pontos kimérése, esetleg visszakorrigálása;

  8. Tranziens jelenségek: nóva, szupernóva, kisbolygó, stb. változások érzékelése.

  9. Kép előfeldolgozás automatizálása előre definiált paraméterekkel megadott profiluk/stílusok alapján.

 

 

Egyenlőre több rosszat nem tudok mondani, ill. nem jut eszembe. De bízom benne, hogy Ti tudtok, avagy vannak építő jellegű elképzeléseitek is.

 

Irodalom:

 

Számtalan Nasa és más forrásból származó dolgozatot és fejtegetést olvastam át angol szakirodalomban a net-ről. Jó részükhöz a honlapom linkjei alapján (Doksik) eljuthatsz.

Sajnos magyar nyelvű dokumentációra alig akadtam, olyanra meg, mely földi halandó számára is érthető egyáltalán nem! Miért nem?

 

MINDEN ÖTLETED ÉS ELKÉPZELÉSED ÉRDEKEL!

 

Csináljuk meg az első Magyar, nyílt forráskódú csillagászati képfeldolgozó programot.

STAF

 

- End - egyenlőre!