• No results found

Het visualiseren van afwijkingen in astronomische afbeeldingen

N/A
N/A
Protected

Academic year: 2021

Share "Het visualiseren van afwijkingen in astronomische afbeeldingen"

Copied!
32
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Het visualiseren van afwijkingen in astronomische afbeeldingen

Bachelor thesis

juli 2012

Student: Jurgen Jans & Ralph Kiers

Eerste begeleider: Michael Wilkinson

(2)

Abstract

In de astrografie is er belang bij een methode om de kwaliteit van sterrenfoto’s te beoordelen en hierbij mogelijke afwijkingen te detecteren. In dit onderzoek hebben we een programma gemaakt dat sterrenplaatjes kan inlezen en doormiddel van attribuut filters in staat is om de sterren te controleren op verschillende soorten afwijkingen. Van deze attribuut waardes kan het programma een kaart maken die een overzicht geeft van hoe de afwijkingen over het gehele plaatje verspreid zijn. Het resultaat van dit onderzoek vormt op zich zelf een goede basis en biedt voldoende ruimte voor verder onderzoek.

(3)

Inhoudsopgave

1 Introductie 1

1.1 Projectbeschrijving . . . 1

2 Literatuur onderzoek 1 2.1 Attribuut filters . . . 1

2.1.1 Grijsschaal . . . 3

2.1.2 Granulometrie . . . 4

2.1.3 Shape operatoren . . . 4

2.1.4 Vector attributen . . . 6

2.1.5 Moment invarianten . . . 6

2.2 Component-tree’s . . . 7

2.2.1 Algoritme . . . 8

2.2.2 Attributen berekening . . . 11

2.3 Aberraties . . . 11

3 Concept 12 4 Realisatie 13 4.1 Max-Tree . . . 13

4.1.1 Updaten . . . 13

4.2 Filters . . . 14

4.2.1 Rondheidsfilter . . . 14

4.2.2 Excentriciteitsfilter . . . 14

4.2.3 Driehoekigheidsfilter . . . 15

4.2.4 Massa zwaartepunt afwijking . . . 16

4.2.5 Oppervlakte filter . . . 17

4.3 Momenten . . . 17

4.3.1 Tweede orde correctie . . . 18

4.4 Kleurenkaarten . . . 19

5 Evaluatie 20 5.1 Filters . . . 20

5.1.1 Rondheidsfilter . . . 20

5.1.2 Excentriciteitsfilter . . . 20

5.1.3 Driehoekigheidsfilter . . . 21

5.1.4 Massa zwaartepunt filter . . . 22

5.2 Kleurenkaarten . . . 22

5.2.1 Kleurenkaarten gevoeligheid . . . 23

5.3 Praktijk voorbeelden . . . 24

5.4 Problemen . . . 26

6 Discussies en toekomstig werk 28

7 Bibliografie 29

(4)

1 Introductie

1.1 Projectbeschrijving

In astrofotografie is de kwaliteit van de optica zeer belangrijk. Ongeacht de gebruikte apparatuur kunnen er verschillende afwijkingen optreden in de gemaakte foto’s. Zo kunnen sterren er vervormd uit zien als de optica niet goed is gecollimeerd. Maar zelfs als de optica wel goed gecollimeerd is kunnen er nog verschillende vervormingen op de foto’s verschijnen zoals:

• Sterren aan de rand van het gezichtsveld die vervormd worden tot een komeetachtige vorm ook wel coma genoemd

• Sterren lijken over de gehele foto uitgerekt wanneer de camera niet goed volgt

• Sterren kunnen een driehoekige vorm op de foto’s hebben wanneer de schroeven van de optica te stevig zijn aangedraaid

Astronomen hebben daarom baat bij een systeem dat de kwaliteit van hun foto’s kan beoordelen, mogelijke opgetreden afwijkingen kan opsporen en mogelijke oplossingen kan suggereren. Ons doel is dan ook om een programma te schrijven dat ingevoerde foto’s kan analyseren en geobserveerde afwijkingen kan vergelijken met al reeds bekende afwijkingen. Het programma moet cross-platform portable zijn en verschillende veel gebruikte image formaten ondersteunen. Ook is het belangrijk dat het programma foto’s efficiënt kan verwerken. Dit hoeft niet in real-time te zijn maar het moet ook niet minuten lang duren. Hierbij is O(N log N) of beter, met N het aantal pixels, gewenst.

We beginnen dit project met het bestuderen van verschillende attribuut filters, shape descrip- tors(vorm omschrijvingen) en veel voorkomende optische afwijkingen, zodat we bekend worden met de huidige ontwikkelingen binnen het beeldbewerkings gebied en de gebruikte terminologie in de astronomie. In onze volgende stap selecteren we vervolgens verschillende shape descriptors die we gaan implementeren en kwantitatief met elkaar gaan vergelijken op echte data. Uiteindelijk leveren we een prototype van ons programma samen met een goed gedocumenteerde handleiding.

De indeling van dit verslag ziet er als volgt uit: als eerste beginnen we met het literatuur onderzoek.

Hier beschrijven we de werking van de verschillende elementen die we gaan gebruiken in ons project. Ook laten we hier de verschillende afwijkingen zien die plaats kunnen vinden in de astrofotografie. Vervolgens beschrijven we het concept van ons project. Hierin staat beschreven hoe we van plan zijn ons project op te zetten. Dit wordt gevolgd door de realisatie waarin we per onderdeel zullen behandelen hoe we dit uiteindelijk geïmplementeerd hebben. Hierna volgt de evaluatie waar we de verschillende functies van ons programma analyseren en de werking ervan beoordelen. Tenslotte eindigen we met de discussies en toekomstig werk sectie waarin we de problemen die we tegen zijn gekomen behandelen, mogelijke oplossingen voorstellen en we

(5)

worden aangeleverd, of naar grijsschaal worden omgezet, is het handig dat de attribuut filters ook uitgebreid kunnen worden om hier mee te werken. In deze sectie beschrijven we hoe de filters werken voor binair en grijsschaal formaat.

Attribuut filters kunnen worden gebruikt om aan de hand van bepaalde criteria samenhangende componenten uit een beeld te filteren of juist te behouden. Filters met toenemende criteria maken gebruik van binaire attribuut openingen. Deze zijn gebaseerd op binaire connectiviteit openingen Γx geïndexeerd als x ∈ E[8]. De definitie is

Γx(X) =

 Ci: x ∈ Ci als x ∈ X

∅ anders (1)

waarbij Ci een samenhangend component van X is. Dus Γx levert alleen het samenhangend component op waartoe x behoort en negeert alle overige samenhangende componenten. Attribuut criteria voor samenhangende componenten Ci⊆ X worden meestal gegeven in de vorm

Λ (Ci) = (Attr (Ci) ≥ λ) (2)

waarbij Attr een attribuutwaarde van Ci is en λ een attribuut drempelwaarde. Deze kunnen door middel van een triviale opening op de volgende manier gebruikt worden.

ΓΛ(C) =

 C als Λ (C) waar is

∅ anders (3)

Een attribuut filter ΨΛ van een set X met een attribuutwaarde Λ kunnen we dus als volgt definiëren.

ΨΛ(X) = [

Cj ∈C X

ΓΛ(Cj) (4)

waarbij CX de set met alle samenhangende componenten van X is.

(6)

(a)Origineel (b)Oppervlakte bovengrens 500

(c)Oppervlakte bovengrens 100

Figuur 1: Voorbeeld attribuut filter: in dit geval oppervlakte filter met afnemende grootte

2.1.1 Grijsschaal

Toenemende samenhangende filters kunnen worden uitgebreid tot een filter die werkt op grijsschaal beelden door middel van superpositie [4]. Een grijsschaal beeld f : E → R kan worden gethreshold in toenemende volgorde van hmin+ 1tot hmax. Dit resulteert in een stack van geneste binaire sets. Elke drempelwaarde set Th(f )op een level h kan als volgt worden weergegeven:

(5)

(7)

samenhangend component van de level set Lh[6]. Een flat zone is als volgt gedefinieerd:

Lh(f ) = {x ∈ E | f (x) = h} (7)

waarbij Lh een set is van pixels uit het beeld met alleen de level h. De definitie van Fh is als volgt:

Fh(f ) = Γx(Lh(f )) (8)

Wij gaan echter meer gebruik maken van piek componenten in plaats van flat zones aangezien de grijsschaal attribuut openingen hiermee werken. Een piek component van een grijsschaal beeld f op een bepaalde drempelwaarde set level h kan als volgt worden gedefinieerd:

Ph(f ) = Γx(Th(f )) (9)

Elke beeld kan op de volgende manier gedecomposeerd worden tot piek componenten:

f = _

h∈G

_

k∈Ih

˜

χ Phk(f ) + h (10)

Hierbij is G de set met grijswaarde levels en Ih de index set van de piek componenten op level h en ˜χ de karakteristieke functie:

( ˜χ (X)) (x) =

 0 als x ∈ X

−∞ anders (11)

2.1.2 Granulometrie

We kunnen granulometrieën maken met behulp van attribuut filters. Een granulometrie is een geordende set van operatoren die gebruikt kunnen worden om eigenschappen die kleiner zijn dan een bepaalde grootte uit een beeld te verwijderen. Een attribuut filter moet idempotent, anti-extensief en toenemend zijn en maken om deze reden dus gebruik van openingen. De granulometrie[9, 13] voor een filter αr wordt als volgt gedefinieerd:

αr(X) ⊂ X (12)

X ⊂ Y ⇒ αr(X) ⊂ αr(Y ) (13)

αrs(X)) = αmax(r,s)(X) (14)

voor alle r, s ∈ Λ

Waarbij (12) en (13) αrals anti-extensief en toenemend definiëren en (14) impliceert idempoten- tie.

2.1.3 Shape operatoren

Shape operatoren zijn voor ons project belangrijk aangezien de objecten in de beelden die we krijgen mogelijk iets geroteerd kunnen zijn of waar van bijv. de grootte van kan verschillen.

Het gebruik van shape operatoren is voor ons handig om zo te voorkomen dat we last krijgen van deze problemen. In deze sectie wordt uitgelegd wat shape operatoren precies zijn en hoe ze werken.

(8)

Een shape operator is een operator die schaal, rotatie en translatie invariant is. Hierbij behandelen we alleen de schaal invariantie, omdat dit een ongewone eigenschap is. De schaling tf van een grijsschaal beeld f is als volgt gedefinieerd:

(tf )(x) = f (t−1x) ∀t−1x ∈ E (15)

Een beeld operator ψ is schaal invariant indien geldt:

ψ(tf ) = tψ(f ) (16)

Schaal invariantie is niet een gebruikelijke eigenschap in beeld bewerking. De meeste filters maken gebruik van een schaal parameter zoals bijv. de grootte van de filter kernel in het geval van lineaire filters of het structurerend element. Om deze filters toch te kunnen gebruiken wordt meestal een filter meerdere malen uitgevoerd met verschillende schaalwaarden en de resultaten gecombineerd.

Shape filters zijn een specifieke vorm van attribuut filters, waarvoor geldt dat deze wel idempotent, anti-extensief moeten zijn maar in plaats van toenemend zijn ze schaal invariant. Dit komt door dat shape filters gebruik maken van niet toenemende criteria. Een grijsschaal shape granulometry[9, 13] kunnen we als volgt definiëren:

r(f )) (x) ≤ f (x) (17)

ψr(tf ) = t (ψr(f )) (18)

ψrs(f )) = Φmax(r,s)(f ) (19)

voor alle r, s ∈ Λ en t > 0

Waarbij (17) en (18) ψr als anti-extensief en schaal invariant definiëren en (19) impliceert idempotentie.

Filters met niet toenemende criteria maken gebruiken van thinnings in plaats van openingen. Een triviale thinning ΦT accepteert of verwerpt samenhangende sets op basis van een niet toenemende criteria T . We kunnen dus een binaire attribuut thinning[10] ΦT als volgt definiëren:

ΦT(X) = [

x∈X

ΦTx(X)) (20)

Een voorbeeld van thinnings is te zien in Figuur 2.

(9)

(a) X (b) Φ~τS

A,(X) (c) Φ~τS

B,(X) (d) Φ~τS

C,(X)

Figuur 2: Het verwijderen van de letters A, B en C uit (a) gebruikmakend van Φ~τSi,(X)met Si∈ {SA, SB, SC}

2.1.4 Vector attributen

Waar attribuut filters normaal een beeld filteren aan de hand van één criterium, kunnen we door gebruikt te maken van een vector attribuut filter[10] meerdere criteria gebruiken. Een bijbehorende multivariate attribuut thinning Φ{Ti} (X) met scalaire attributen {τi} en hun overeenkomstige criteria {Ti}kunnen we als volgt definiëren:

Φ{Ti} (X) =

N

[

i=1

ΦTi(X) (21)

Hierbij worden samenhangende componenten bewaard wanneer ze aan minstens één van de criteria Ti= τi(C) ≥ ri voldoen en anders verwijderd. De set met scalaire attributen τikan ook worden gedefinieerd als een vector attribuut ~τ ={τ1, τ2, . . . , τn}. Hiervoor is een vector-attribuut thinning nodig met het volgende criterium:

T

~r~τ

= ∃i : τ

i

(C) ≥ r

i

voor 1 ≤ i ≤ N

(22) Dit werkt echter niet bij vector attribuut filters voor binaire en grijsschaal 2D beelden. Hiervoor maken we gebruik van de binaire vector-attribuut thinning Φ~~τr,(X):

Φ

~~τr,

(X) = x ∈ X | T

~r,~τ

x

(X))

(23) Deze verwijderd de samenhangende componenten uit een beeld X waarvan de vector attributen meer dan een bepaalde drempelwaarde  verschillen van een referentie vector ~r. Dit gebeurt aan de hand van het volgende criterium: T~r,~τ (C) = d (~τ (C) , ~r) ≥ Waarbij d een ongelijkheidsmaat is, die het verschil tussen de vectoren voorstelt en berekend kan worden met bijvoorbeeld de euclidische afstand: d (~u,~v) = ||~v − ~u||.

2.1.5 Moment invarianten

Shape-based attributen moeten translatie, schaal en rotatie invariant zijn, daarom is het handig om hiervoor gebruik te maken van moment invarianten. Moment invarianten zijn hiervoor ontworpen.

Een 2D moment voor een samenhangend component van een gediscretiseerd beeld f(x, y) ziet er als volgt uit:

Mpq=X

C

xpyqf (x, y) (24)

(10)

Door het berekenen van centrale momenten verkrijgen we de translatie invariantie:

µpq=X

C

(x − ¯x)p(y − ¯y)qf (x, y) (25) Waarbij ¯x en ¯y centroïde coördinaten van de volgende dichtheidsfunctie zijn:

¯ x = m10

m00, ¯y =m01

m00 (26)

Schaal invariantie kunnen we krijgen door gebruik te maken van de normalisatie factor:

ηpq= µpq

µ

p+q 2 +1 00

(27)

Rotatie invariantie kunnen worden verkregen door gebruik te maken van de Hu momenten die gebaseerd zijn op de genormaliseerde centrale momenten:

I1= η20+ η02 (28)

I2= (η20− η02)2+ (2η11)2 (29)

I3= (η30− 3η12)2+ (3η21− η03)2 (30)

I4= (η30+ η12)2+ (η21+ η03)2 (31)

I5= (η30− 3η12)(η30+ η12)[(η30+ η12)2− 3(η21+ η03)2]

+ (3η21− η03)(η21+ η03)[3(η30+ η12)2− (η21+ η03)2] (32) I6= η20− η02[(η30+ η12)2− (η21+ η03)2] + 4η1130+ η12)(η21+ η03) (33) I7= (3η21− η03)(η30+ η12)[(η30+ η12)2− 3(η21+ η03)2] − (η30− 3η12)

+ (3η21− η03)[3(η30+ η12)2− (η21+ η03)2] (34)

2.2 Component-tree’s

Component tree’s zijn belangrijke data structuren bij het berekenen van samenhangende attribuut filters. Deze worden meestal gebruikt in de vorm van een Max-Tree[7]. In deze boom worden alle piek componenten van een beeld in een compacte vorm opgeslagen. De wortel van de boom is de grootste piek component en representeert het gehele beeld domein. Elke piek component Phk(behalve de wortel) is genest is een ander piek component Ph0j met h < h0. Zodoende kan de gehele decompositie van een beeld in de bijbehorende piek componenten compact worden weergegeven in een boom.

(11)

(a)Willekeurig grijsschaal plaatje (b)Max-Tree

Figuur 3: Max-Tree voorbeeld

In Figuur 3a is een grijsschaal plaatje te zien met 9 samenhangende componenten. De Max- Tree die bij hier bij hoort is te zien in Figuur 3b, hierbij geven de knopen de samenhangende componenten weer. De waarden in de knopen zijn als volgt gedefinieerd: V is de grijswaarde van het samenhangende component, A is het aantal pixels dat de samenhangende component bevat en T is een attribuutwaarde, in dit geval van een rondheidsfilter.

2.2.1 Algoritme

Voor de implementatie van een component tree zijn verschillende algoritmen beschikbaar.

Wilkinson[12] heeft in zijn paper een algoritme beschreven dat in O(N log N) werkt. Het grootste verschil tussen dit algoritme en de overigen is dat deze ook nog efficiënt blijft werken bij meer dan 18 bits per pixel terwijl de meeste algoritmen hier exponentieel in tijd toenemen.

Het algoritme werkt als volgt:

Als eerste beginnen we met die initialisatie. Dit doen we door bij de pixel met de laagste grijswaarde te beginnen. Deze pixel vormt de wortel van de boom en stoppen we in een pixel stack. Deze pixel stack gebruiken we om bij te houden wat de huidige grijswaarde is waarin we ons bevinden. Ook stoppen we de pixel in een pixel priority stack die aflopend gesorteerd is op de grijswaarden. Als laatste stoppen we deze pixel in de variabele nextpix die de volgende pixel bevat.

Vervolgens komen we in de main loop van het algoritme die net zolang door gaat totdat de pixel queue leeg is. Hierin pakken we de volgende pixel (nextpix) en gaan alle buurpixels langs om te kijken of we hier eerder zijn geweest. Indien dit niet het geval is voegen we de pixel toe in onze

(12)

priority queue. Wanneer we een buurpixel gevonden hebben die een grijswaarde heeft hoger dan onze huidige grijswaarde slaan we de overige buurpixels over en stoppen we de op dat moment eerste pixel uit de queue in onze next pixel variabele, zonder deze uit de queue te verwijderen (In dit geval is de pixel die we uit de queue gehaald hebben gelijk aan de gevonden pixel met de hogere grijswaarde). Deze pixel pushen we vervolgens op onze stack zodat we een grijswaarde level hoger kunnen. Wanneer we geen buurpixel met hogere grijswaarde gevonden hebben is de nextpix gelijk aan onze huidige pixel en halen we deze uit de queue. Wanneer de huidige pixel niet de bovenste pixel van onze stack is maken we van deze pixel de parent node van onze oorspronkelijke pixel. Vervolgens kopiëren we opnieuw de eerste pixel uit onze queue in de nextpix variabele en kijken of deze een lagere grijswaarde heeft dan onze huidige pixel. Is dit het geval dan moeten we onze boom verlagen door sequentieel pixels van onze stack te halen net zo lang totdat we een pixel tegenkomen die een grijswaarde heeft die gelijk of kleiner is dan de grijswaarde van onze nextpix (wanneer deze kleiner is zetten we nextpix op de stack). Vervolgens beginnen we de loop weer overnieuw.

(13)

Algoritme 1Component-tree algoritme van Wilkinson[12]

void Flood ( P i x e l ∗ gval , MaxNode ∗node ) { xm = p i x e l with s m a l l e s t grey l e v e l ; push xm in p r i o r i t y queue and s t a c k ; nextpix = xm;

i n i t i a l i z e node [xm ] ; do{p=nextpix ;

f o r a l l neighbours q o f p { i f q not v i s i t e d {

i n i t i a l i z e node [ q ] ; i f ( gval [ q]> gval [ p ] )

break ; } }

nextpix = f r o n t o f queue ;

/∗ does not remove from queue ∗/

i f ( gval [ nextpix ]> gval [ p ] ) { /∗ go to h i g h e r l e v e l ∗/

push nextpix on s t a c k ; } e l s e { /∗ nextpix == p ∗/

removes p from queue i f p != s ta c kt o p {

node [ p ] . parent = s ta ck to p ; add area o f node [ p ] to st a ck top ; }

nextpix = f r o n t o f queue ;

/∗ i f queue i s empty , nextpix=p ∗/

i f ( gval [ nextpix ]< gval [ p ] ) { /∗ descend to lower l e v e l ∗/

do {pop p i x e l s from s t a c k ; update parent p o i n t e r s ; increment a r e a s ;

} u n t i l gval [ st a ck t o p]<=gval [ nextpix ] ; i f ( gval [ s ta c k to p ]< gval [ nextpix ] )

push nextpix on s t a c k ; } }

} while ( ! IsEmpty ( queue ) ) ; f i x remainder o f s t a c k ;

node [ last_from_stack ] . parent=global_root ; }

(14)

2.2.2 Attributen berekening

Door het maken van een component tree en het berekenen van de attributen van elkaar te scheiden is het mogelijk om attributen te berekenen zonder hiervoor de complete boom opnieuw te moeten maken. Een geschikt algoritme hiervoor is het two-pass algoritme[3] onder de aanname dat de auxilary data makkelijk berekend kan worden door de data van de kinderen samen te voegen. Bij het gebruik van de momenten gegeven door vergelijking (24) is dit waar, omdat het gewoon sommen zijn. In dit algoritme wordt een boom twee keer doorlopen. De eerste keer wordt dit gedaan door middel van een depth-first traversal waarbij de auxiliary data wordt geaccumuleerd. De tweede keer wordt de boom in willekeurige volgorde doorlopen en worden de gewenste attributen door middel van de auxilary data berekend. In principe is het ook gewoon mogelijk om alles met een enkele depth-first scan te doen maar het two-pass algoritme heeft als voordeel dat de verschillende attributen allemaal met dezelfde set auxiliary data kunnen worden berekend.

Algoritme 2Het two-pass algoritme voor attribute computation[3]

procedure ComputeAuxData ( var c u r r e n t : MaxNode) InitAuxData ( c u r r e n t . AuxData ) ;

f o r i := 1 to c u r r e n t . numChildren do ComputeAuxData ( c u r r e n t . Child [ i ] ) ;

MergeAuxData ( c u r r e n t . AuxData : c u r r e n t . Child [ i ] . AuxData ) ; end ;

f o r a l l v o x e l s v ∈ c u r r e n t . Vo xelList do AddVoxel ( c u r r e n t . AuxData : v )

end ;

end ; (∗ ComputeAuxData ∗)

procedure ComputeAttributes ( var t r e e : MaxTree ) ComputeAuxData ( t r e e . r o o t ) ;

f o r a l l nodes node ∈ t r e e . nodes do

node . a t t r i b u t e := A t t r i b u t e ( node . AuxData ) ; end ;

end ; (∗ ComputeAttributes ∗)

2.3 Aberraties

(15)

(a)Ster (b)Coma (c)Sferische afwijking

(d)Astigmatisme (e)Astigmatisme (f )Pinched Optics

Figuur 4: Aberraties

maar meer komeetvormig afgebeeld. Dit kan gecorrigeerd worden met behulp van speciale comacorrectoren.

In Figuur 4c is een sferische afwijking te zien, waarbij er ringen om de originele ster heen komen.

Dit wordt veroorzaakt doordat het brandpunt van de lens niet over de hele oppervlakte gelijk is.

Deze afwijking komt tot stand bij de productie van de lens.

Er zijn verschillende vormen van astigmatisme, Figuur 4d, 4e, 4f zijn hier voorbeelden van.

Een astigmatisme wordt veroorzaakt wanneer de stralen in een horizontaal vlak van een optisch systeem een andere brandpuntsafstand hebben dan de stralen in een verticaal vlak. Dit heeft dan ook tot gevolg dat de ene as van het weergegeven object langer is als de andere as en het object dus in een richting wordt uitgerekt.

Pinched optics zijn een speciaal geval van astigmatisme en worden veroorzaakt wanneer een lens of een spiegel te strak aangedraaid is, waardoor het optiek verbogen wordt. Dit heeft als gevolg dat sterren driehoekig worden weergegeven zoals te zien is in Figuur 4f.

3 Concept

Ons doel is om een programma te maken dat in staat is om grijsschaal foto’s van sterren in te lezen en deze te analyseren op aberraties. Als eerste lezen we een foto in en zetten deze om naar een Max-Tree structuur. Vervolgens kunnen we filters gebruiken om verschillende attributen van de sterren te berekenen. Deze filters passen enkel de auxilary data van de knopen in de boom aan en deze worden steeds opnieuw gereset wanneer we een volgend filter toepassen, waardoor

(16)

de structuur van de boom intact blijft. Op deze manier hoeven we dus niet steeds opnieuw een Max-Tree te maken en kunnen we voortdurend de zelfde blijven gebruiken. Het programma gaat vervolgens alle samenhangende componenten in de Max-Tree langs en berekent voor elk samenhangend component zijn bijbehorende filterwaarde. Wanneer de gehele Max-Tree doorlopen is kan het programma een kaart maken die weergeeft hoe mogelijke afwijkingen over de gehele foto verspreid zijn en ook geeft het programma scores weer van de totaal afwijking van de gehele foto. De gebruiker kan via het grafische interface zelf kiezen op welke eigenschappen de foto gecontroleerd dient te worden en krijgt per eigenschap een kaart met de spreiding van de afwijking hiervan.

4 Realisatie

4.1 Max-Tree

Wij hebben onze Max-Tree geïmplementeerd aan de hand van het component-tree algoritme van Wilkinson[12]. Hierbij maken we gebruik van levelroot knopen. Dit is een knoop die als ouder een knoop met een lagere grijswaarde heeft. Ook is het zo dat alle andere knopen binnen het samenhangende component met dezelfde grijswaarde de levelroot knoop van dat grijswaarde level als ouder hebben. De gehele Max-Tree is dus opgebouwd uit levelroot knopen die met elkaar verbonden zijn. Dit heeft als voordeel dat we bij het uitrekenen van de attribuutwaarden van de filters voor de samenhangende componenten makkelijk de boom kunnen doorlopen en alleen de levelroot knopen in beschouwing hoeven te nemen in plaats van elke pixel knoop individueel.

Ook hebben we zelf een eigen priority queue en stack geïmplementeerd, omdat de standaard priority queue en stack uit de C library dynamisch geheugen alloceert waardoor ons programma aanzienlijk trager werd. Verder hebben we ervoor gekozen om een connectiviteit van vier te gebruiken, omdat we er niet van uit gaan dat de resultaten veel zullen verschillen ten opzichte van acht connectiviteit. Bovendien besparen we zo onnodig extra rekenwerk.

4.1.1 Updaten

Het is handig om plaatjes te kunnen pre-filteren om zo objecten waarvan we al weten dat het geen sterren zijn weg te halen. We zouden van de geprefilterde plaatjes weer een nieuwe Max-Tree kunnen maken, maar dit is inefficiënt. Daarom hebben wij er voor gekozen om de originele Max-Tree te bewerken, zodat deze het gefilterde resultaat representeert.

We updaten de Max-Tree door alle knopen van de boom te doorlopen en vervolgens hun grijswaarde gelijk te stellen aan het bijbehorende pixel uit het gefilterde resultaat. Omdat de gefilterde objecten in het resultaat zwart zijn zullen deze knopen nu dus ook zwart zijn. Filters(zie 4.2 Filters)

(17)

4.2 Filters

Er zijn verschillende manieren om structuren te kunnen detecteren in plaatjes. We hebben besloten om gebruik te maken van filters die gebruik maken van momenten. Hiervoor hebben we gekozen, omdat we hiermee makkelijk attribuutwaarden voor verschillende vormen kunnen berekenen. Bovendien kunnen we onze filters hiermee ook translatie, schaal en rotatie invariant maken.

De op momenten gebaseerde filters rekenen de momenten uit door bij de hoogste grijs waarden te beginnen en vervolgens de uitgerekende momenten door te geven aan hun ouder. Merk op dat we per grijswaarde niveau de root knopen als laatste moeten uitrekenen, omdat deze een ouder kunnen zijn van de niet root knopen op het zelfde niveau. Door op deze manier door de boom heen te lopen is de opsomming die nodig is voor momenten per knoop in O(1) te berekenen. Ook kan per knoop nu direct na het berekenen van de momenten de filterwaarde worden berekend.

Dus voor de hele boom is het berekenen van de filterwaarden O(N), met N het aantal pixels van het plaatje.

Bij het filteren berekenen we eerst alle filterwaarden en vervolgens vergelijken we deze met de drempelwaarde. Als de filterwaarde te laag is, dan wordt een knoop als ongeldig beschouwd. Als van alle knopen bekend is of ze geldig of ongeldig zijn gaan we nog een keer door alle knopen van de laagste naar de hoogste grijswaarde. Vervolgens kijken we dan of de ouder van een knoop geldig is, als dit het geval is dan wordt de knoop zelf ook geldig. Op deze manier zorgen we er voor dat we alle samenhangende componenten binnen een geldig samenhangend component behouden. Deze stap is ook O(N), omdat we alle knopen maar één keer bij langs gaan.

Zowel het berekenen van de filterwaarden als de post-processing zijn O(N), en aangezien beide operaties na elkaar worden uitgevoerd is het filteren zelf 2 · O(N) = O(N).

4.2.1 Rondheidsfilter

We verwachten dat we met behulp van een rondheidsfilter coma’s moeten kunnen detecteren aangezien deze uitgerekt en ovaal gevormd zijn en ze dus een afwijking vertonen ten opzichte van een perfecte cirkel. Bij de implementatie van dit filter hebben we gebruik gemaakt van de formule die beschreven staat in het artikel van Kiwanuka en Wilkinson[3] en gebaseerd is op centrale momenten.

τ = µ200

2π(µ20+ µ02) (35)

Waarbij 0 ≤ τ ≤ 1 en 1 de perfecte cirkel aanduidt.

4.2.2 Excentriciteitsfilter

Om objecten te herkennen waarvan de ene as langer is dan de andere as hebben we gekozen om een excentriciteitsfilter te implementeren. Hiermee zouden we in staat moeten zijn om verschillende soorten astigmatisme te detecteren. Voor de implementatie van het filter maken we gebruik van het artikel van Kilian[2] die gebaseerd is op de centrale momenten. We rekenen eerst de lange en

(18)

korte as uit die we vervolgens gebruiken om τ te berekenen.

langste as: d120+ µ02

2 +p4µ211+ (µ20− µ02)2 2

kortste as: d220+ µ02

2 −p4µ211+ (µ20− µ02)2 2

τ = r

1 − d2

d1 (36)

Waarbij 0 ≤ τ ≤ 1 en 0 een perfecte cirkel aanduidt en 1 een parabool.

4.2.3 Driehoekigheidsfilter

We hebben een driehoekigheidsfilter geïmplementeerd, omdat we verwachten dat deze geschikt is voor het detecteren van astigmatisme veroorzaakt door pinched optics aangezien deze driehoekig gevormd zijn. Hiervoor hebben we de formule gebruikt die beschreven wordt in het artikel van Rosin[5] en gebruik maakt van de centrale momenten.

I120µ02− µ211 µ400

τ =





108I1 if I1≤ 1 1 108

108I1 anders (37)

Waarbij 0 ≤ τ ≤ 1 en 1 de perfecte driehoek aanduidt.

(19)

4.2.4 Massa zwaartepunt afwijking

Figuur 5: Coma voorbeeld Het kan voorkomen dat alleen binair filteren per sa-

menhangend component op rondheid niet genoeg is. Bij coma’s kan dit bijvoorbeeld het geval zijn, zoals te zien in Figuur 5. Elke samenhangend component in Figuur 5 is een perfecte cirkel, maar de gehele samenhangende component voldoet niet aan de eigenschappen van een perfecte ster. Om dit probleem op te lossen rekenen we ook de momenten uit met grijswaarde inbegrepen. We kunnen niet zomaar de momenten vermenigvuldigen met de bijbehorende grijswaarden, omdat het gewicht dan niet lineair schaalt. Bijv. stel a is de grijswaarde van een samenhangend component en b is de grijswaarde van zijn ouder en stel a = 2 en b = 1. Nu isX

C

xpyqatwee keer zo zwaar alsX

C

xpyqb, stel nu a = 255 en b = 254 dan isX

C

xpyqaeen factor 255

254 keer zo zwaar alsX

C

xpyqb.

Om het lineair te laten schalen ongeacht de achtergrond gebruiken we het verschil tussen de grijswaarde van de samenhangende component en de grijswaarde van zijn ouder als het gewicht.

Als we dit invullen in (24) volgt:

M gpq=X

C

xpyq(f (x, y) − f (p))

= (f (x, y) − f (p))X

C

xpyq

= f (x, y)X

C

xpyq− f (p)X

C

xpyq

=X

C

xpyqf (x, y) − f (p)X

C

xpyq (38)

waar f(p) de grijswaarde van de ouder is.

Figuur 6: Maximale massamiddel- punt voor ronde objecten

De verschuiving van het massamiddelpunt van de binaire momenten ten opzichte van de grijswaarde momenten moet dicht bij 0 liggen voor een ster. Hoe meer het grijswaarde massamiddelpunt verschoven is ten opzichte van het binaire massamiddelpunt, hoe groter de kans op coma. Als we uitgaan van ronde objecten, dan kan bin- nen een samenhangend component het massamiddelpunt nooit meer verschuiven dan de straal van de cirkel, zoals te zien in Figuur 6.

(20)

Figuur 7: Massamiddelpunt afstand en opper- vlakte

Om een genormaliseerde waarde te krijgen voor de verschuiving maken we gebruik van de echte oppervlakte van de samenhangende component en de oppervlakte die een cirkel zou hebben. In Figuur 7 zijn het binaire massa- middelpunt Mb en het grijswaarde massamid- delpunt Mg van de samenhangende compo- nent weergegeven. De afstand tussen deze pun- ten wordt berekend met de euclidische afstand d = (M bx− M gx)2+ (M by− M gy)2. Als we

d als straal van de cirkel nemen, dan krij- gen we de lichtgrijze cirkel uit Figuur 7. De oppervlakte van de lichtgrijze cirkel is dus te berekenen door A1= πd. De oppervlakte van de donkergrijze cirkel A2is gelijk aan de opper- vlakte van de gehele samenhangende compo- nent, dus A2= m00. nu geeft A1A2 een waarde

τ met 0 ≤ τ ≤ 1. We kunnen τ nu gebruiken als attribuutwaarde voor de massamiddelpunt verschuiving met 0 is geen verschuiving en 1 is een verschuiving naar de rand. Maar om er voor te zorgen dat de attribuutwaarde meer lineair schaalt met de massamiddelpunt verschuiving nemen we de attribuutwaarde τ =q

A1

A2 met 0 ≤ τ ≤ 1.

4.2.5 Oppervlakte filter

Bij elk van de voorgaande filters hebben we ook een optie toegevoegd om op oppervlakte te filteren. Dit kan worden gedaan door een ondergrens en bovengrens aan te geven van het aantal pixels dat een samenhangend component moet bevatten. Alle samenhangende componenten die hier niet aan voldoen worden uit het plaatje gefilterd. Dit is handig om te gebruiken aangezien we geen eigenschappen van sterren kunnen berekenen als ze maar uit een paar pixels bestaan.

Ook kunnen we op deze manier grote objecten al buiten beschouwing laten aangezien sterren over het algemeen niet al te groot zijn.

4.3 Momenten

De geometrische momenten kunnen we berekenen aan de hand van vergelijking (24) en de centrale momenten met behulp van vergelijking (25). Echter, omdat het bij deze berekeningen noodzakelijk is om de som over alle pixels te nemen resulteert dit in aanzienlijk veel rekenwerk. Daarom hebben

(21)

De algemene formule[1] om geometrische naar centrale momenten om te zetten is als volgt:

µp,q=

p

X

k=0 q

X

l=0



(−¯x)p−k(−¯y)q−lmk,l

p k

q l



(39)

µ0,2 kan dus berekend worden met (39). Invullen van p = 0 en q = 2 geeft:

µ0,2 =

0

X

k=0 2

X

l=0

(−¯x)0−k(−¯y)2−lmk,l0 k

2 l



=

2

X

l=0



(−¯x)0(−¯y)2−lm0,l

0 0

2 l



=

2

X

l=0



(−¯y)2−lm0,l

2 l



= (−¯y)2m0,02 0



+ (−¯y) m0,12 1



+ m0,22 2



= (−¯y)2m0,0− 2¯y ∗ m0,1+ m0,2

= −m0,1 m0,0

∗ −m0,1 m0,0

m0,0− 2¯y ∗ m0,1+ m0,2

=m20,1 m0,0

− 2¯y ∗ m0,1+ m0,2

=m0,1

m0,0

− 2¯y +m0,2

m0,1

= −¯y +m0,2

m0,1

= −¯y ∗ m0,1+ m0,2 (40)

4.3.1 Tweede orde correctie

De geometrische momenten in vergelijking (24) zijn een benadering van de daadwerkelijke momenten. In het geval van hogere order momenten hebben we dan te maken met een afwijking.

Door deze afwijking kan het zo zijn dat filters die gebruik maken van momenten een deling door nul krijgen.

Volgens de parallel axis theorem[11] geldt:

Id= Icom+ M d2 (41)

met

M = massa

d =loodrechte afstand van de as door het massamiddelpunt naar een andere parallelle as Icom=traagheidsmoment van de as door het massamiddelpunt

Id=traagheidsmoment van de parallelle as

Met (24) rekenen we alleen Icom uit. Voor de 0de en 1ste orde momenten treedt er nog geen afwijking op, maar voor de tweede orde krijgen we wel een afwijking. De correctie factor per pixel

(22)

voor de 2de orde momenten m02+ m20is volgens (41) dan:

1

ˆ2

− 12 1

ˆ2

− 12

x2+ y2 dxdy =

1

ˆ2

− 12 1

ˆ2

− 12

x2dxdy +

1

ˆ2

− 12 1

ˆ2

− 12

y2dxdy

=

1

ˆ2

− 12

1 3x3

x= 12

x=− 12

dy +

1

ˆ2

− 12

1 3y3

y= 12

y=− 12

dx

= 2

1

ˆ2

− 12

1 3x3

x= 12

x=− 12

dy

= 2

1

ˆ2

− 12

1 3

 1 2

3

−1 3



−1 2

3! dy

= 2

1

ˆ2

− 12

1 12dy

= 1 6y

y= 12

y=− 12

= 1 6 1 2−1

6



−1 2



= 1

6 (42)

De correctie is voor m02+ m20 per pixel, dus volgens (24, 42) geldt in een samenhangend component:

m02= 1

12m00+X

C

y2f (x, y) (43)

m20= 1

12m00+X

C

x2f (x, y) (44)

(23)

5 Evaluatie

5.1 Filters

Hieronder zullen we de werking van de door ons geïmplementeerde filters evalueren en bekijken hoe gevoelig elk filter is voor een aantal verschillende vormen. Dit doen we door voor elk filter het zelfde plaatje te gebruiken met daarop een cirkel, ovaal, rechthoek en een driehoek. Vervolgens verhogen we stapsgewijs de drempelwaarde van elk filter en bekijken we welke vormen het filter nog door laat. Waarbij elk filter voor drempelwaarde 0 alles door laat en voor drempelwaarde 1 op zijn strengst is. Op deze manier krijgen we een goed overzicht van de gevoeligheid van de filters voor de verschillende vormen en hoeveel moeite de filters hebben om de vormen van elkaar te onderscheiden. Alleen het massa zwaartepunt filter kan op deze manier niet worden geëvalueerd omdat het plaatje met de verschillende vormen natuurlijk geen coma’s bevat. Hiervoor gebruiken we dan ook een ander plaatje waar verschillende variaties van coma’s op staan. Verder kunnen we ook hier de drempelwaarde stapsgewijs verhogen en de resultaten vergelijken.

5.1.1 Rondheidsfilter

Tussen 0.0 en 0.59 laat het rondheidsfilter alle vormen door zoals te zien in Figuur 8a. Vanaf 0.6 tot en met 0.82 krijgen we het resultaat zoals in Figuur 8b waarin alleen de ovaal is uitgefilterd.

Met 0.83 en 0.84 als drempelwaarde wordt ook de driehoek weggefilterd (Figuur 8c) en vanaf 0.85blijft alleen nog maar de cirkel over (Figuur 8d).

(a) (b) (c) (d)

Figuur 8: Rondheidsfilter resultaten

Het rondheidsfilter laat met een drempelwaarde van 0.85 dus alleen nog maar echte cirkels door.

Er is dus ook nog wat ruimte om het filter nog iets strenger te zetten wanneer een drempelwaarde van 0.85 niet genoeg blijkt te zijn bij het filteren van complexere plaatjes. Ovalen daarentegen worden er als eerste uitgefilterd. Alleen de tussenliggende vormen zoals driehoeken en vierkanten liggen dichterbij elkaar.

5.1.2 Excentriciteitsfilter

Tussen 0.0 en 0.05 laat het excentriciteitsfilter nog alle vormen door (Figuur 9a). Vanaf 0.06 tot en met 0.19 wordt alleen het ovaal eruit gefilterd. (Figuur 9b). Tussen 0.2 en 0.52 blijven alleen de driehoek en de cirkel over (Figuur 9c) en vanaf 0.53 tot 0.56 alleen nog maar de cirkel (Figuur 9d)

(24)

(a) (b) (c) (d)

Figuur 9: Excentriciteitsfilter resultaten

Het excentriciteitsfilter is dus heel gevoelig voor ovaal vormige objecten aangezien deze er al direct uitgefilterd worden bij hele lage drempelwaarden. Ook de rechthoek wordt relatief snel gefilterd. Het filter heeft alleen wat meer moeite met het onderscheiden van de driehoek en de cirkel aangezien deze waarden dicht bij elkaar liggen. Maar dit is ook wel logisch aangezien een driehoek en een cirkel qua excentriciteit niet zoveel van elkaar verschillen.

5.1.3 Driehoekigheidsfilter

Tussen 0.0 en 0.68 laat het driehoekigheidsfilter nog alle vormen door (Figuur 10a). Bij 0.69 vallen zowel de ovaal als de cirkel af. (Figuur 10b) en vanaf 0.76 blijft alleen de driehoek nog over. (Figuur 10c)

(a) (b) (c)

Figuur 10: Driehoekigheidsfilter resultaten

(25)

5.1.4 Massa zwaartepunt filter

Om het massa zwaartepunt filter te kunnen evalueren maken we gebruik van het plaatje dat is weergegeven in Figuur 11a. In het midden van dit plaatje staat een perfecte ster. Deze is omringd door sterren met coma’s die in de richting van de randen van het plaatje steeds groter worden.

(a) (b) (c) (d)

Figuur 11: Massa zwaartepunt filter resultaten

Het massa zwaartepunt filter laat tussen 0.0 en 0.7 nog het gehele plaatje door. Tussen 0.7 tot 0.98(Figuur 11b en Figuur 11c) verdwijnen er steeds meer coma’s en blijven er alleen nog witte punten over die de kern van de coma sterren voorstellen. Bij 0.99 blijft alleen nog de perfecte ster in het midden over met nog een ster kern van een coma ster (Figuur 11d)

5.2 Kleurenkaarten

Hieronder beschouwen we de verschillende soorten kleuren kaarten die we geïmplementeerd hebben.

Hiervoor gebruiken we weer het plaatje met de verschillende coma’s, omdat deze in afwijking toeneemt, waardoor het een goed voorbeeld is om de verschillende kleuren uit de kleurenkaart weer te geven. Bij het maken van een kaart wordt er eerst gekeken wat de minimale en maximale waarden zijn die in de afbeelding voorkomen, vervolgens wordt het kleuren spectrum hieraan verbonden. Op deze manier wordt het gehele kleuren spectrum goed benut.

(26)

(a)Rood blauw map (b)Warmte map

(c)Jet map

De rood blauw kaart zoals te zien in Figuur 12a begint bij blauw voor de minimale waarde en loopt door paars naar rood voor de maximale waarde. Dit heeft bij ons als gevolg dat de objecten die door de filters een lage score krijgen en dus niet genoeg voldoen aan een bepaalde eigenschap blauw gekleurd worden terwijl de objecten die hoog beoordeeld worden en dus wel aan een bepaalde eigenschap voldoen rood gekleurd worden.

De warmte kaart (Figuur 12b) begint bij rood en loopt over geel naar wit. Hierdoor worden objecten die voldoen aan de filter eigenschappen dus wit gekleurd en objecten die hiervan afwijken neigen meer naar geel/rood afhankelijk van hoe erg de afwijking is.

De jet kaart (Figuur 12c) begint bij blauw voor de minimale waarden en loopt via geel over naar

(27)

afwijkingen beter op, omdat deze dan voor een grotere kleur verandering zorgen. Dit kan handig zijn om afwijkingen te vinden in plaatjes die al grotendeels perfect zijn. In Figuur 12 hebben we de gevoeligheid in combinatie met de warmte kaart stapsgewijs verhoogd.

(a) (b) (c)

(d) (e)

Figuur 12: Gevoeligheid stapsgewijs verhoogd

5.3 Praktijk voorbeelden

Nu we alle mogelijkheden beschouwd hebben gaan we kijken hoe we dit in de praktijk kunnen gebruiken. In ons geval betekend dit dus dat we als input sterren foto’s gebruiken. Voordat we daadwerkelijk op bepaalde eigenschappen gaan filteren of kleurenkaarten gaan maken is het verstandig om eerst het gewenste plaatje te pre-filteren om ruis en andere objecten die geen sterren zijn uit het plaatje te halen. Volgens ons kan dit het beste gedaan worden met behulp van het excentriciteitsfilter. Dit komt omdat sterren over het algemeen al redelijk excentriek zijn en mogelijke ruis in de foto’s of andere objecten zoals een melkwegstelsel of een gaswolk dit niet zijn. Een drempelwaarde van minimaal 0.6 in combinatie met een oppervlakte beneden en bovengrens is in de meeste gevallen voldoende om alleen de sterren uit het plaatje over te houden. In Figuur 13 staan twee voorbeelden van excentriciteit in combinatie met oppervlakte als pre-filter. In het eerste geval hebben we een melkwegstelsel uit het plaatje gefilterd en in het 2e voorbeeld een gaswolk.

(28)

(a) (b)

(c) (d)

Figuur 13: Excentriciteit pre-filter met drempelwaarde 0.6, oppervlakte benedengrens 40 en oppervlakte bovengrens 1000

Nu we alleen nog de sterren uit de plaatjes over hebben kunnen we eenvoudig van deze plaatjes een kaart maken. Hieronder hebben we van beide resultaten een kaart van de rondheid gemaakt. In het eerste geval hebben we een jet kaart gemaakt en in het tweede geval een warmte kaart.

(29)

(a) (b)

Figuur 14: Kleurenkaarten van de pre-gefilterde resultaten

Uit de bovenstaande kaarten valt duidelijk te zien welke sterren niet rond genoeg bevonden zijn.

Dit zijn er maar een paar. We kunnen dus concluderen dat deze plaatjes over het algemeen redelijk goed zijn.

5.4 Problemen

Figuur 15: Vier connectiviteit pro- bleem

Bij plaatjes waar sterren met diffractie pieken in voor- komen zijn we tegen een geval aangelopen waarbij vier connectiviteit zorgt voor vreemde resultaten. Zoals te zien in Figuur 15 zijn de rode pixels allemaal losse samenhangende componenten. Dit zorgt er voor dat ze een hoge rondheidswaarde krijgen aangezien vierkanten een attribuutwaarden van ongeveer 0.96 hebben voor rondheid. Bij het gebruik van acht connectiviteit zal dit waarschijnlijk niet het geval zijn, want in dat geval wor- den ook de diagonale buren meegenomen bij het maken van de Max-Tree.

(30)

Figuur 16: Originele plaatje

Een ander probleem wat we tegen gekomen zijn is dat excentriciteit niet altijd goed werkt als pre-filter. In Figuur 17a is te zien dat een ex- centriciteitsfilter met attribuut drempelwaarde 0.6, oppervlakte ondergrens 30 en oppervlakte bovengrens 1000 op het plaatje in Figuur 16 geen bruikbaar resultaat oplevert. Als we de dezelfde filterwaarden gebruiken, maar de op- pervlakte bovengrens buiten beschouwing laten krijgen we het plaatje in Figuur 17b. Hier zien we één groot samenhangend component dat over de meeste sterren heen zit en mogelijk problemen oplevert bij het filteren. Zelfs als we al pre-filter een rondheidsfilter gebruiken met attribuut drempelwaarde 0.95, oppervlakte ondergrens 30 en oppervlakte bovengrens 1000 krijgen we een slecht resultaat, zoals te zien in Figuur 17c.

(a) (b)

(31)

6 Discussies en toekomstig werk

In ons programma hebben we vier filters geïmplementeerd die goed werken voor het filteren van een specifiek attribuut. We hebben hiervan zelf één gemaakt dat met behulp van grijswaarde momenten coma’s kan detecteren. Van een afbeelding kunnen we ook een kleurenkaart maken die de attribuut waarden voor de hele afbeelding in kaart brengt, waardoor makkelijk te zien is waar afwijkingen zitten en hoe groot ze zijn.

Ons programma vormt slechts een basis en biedt nog voldoende ruimte voor uitbreiding. Hieronder beschouwen we een paar mogelijke uitbreidingen.

In dit programma maken we gebruik van een vier connectiviteit waardoor we dus alleen kijken naar de boven, onder en zij buren. Zoals te zien in de vorige sectie kan dit in bepaalde gevallen voor problemen zorgen. Een mogelijke uitbreiding is om van de vier connectiviteit een andere connectiviteit functie te gebruiken bijvoorbeeld acht connectiviteit, zodat er ook rekening gehouden wordt met de diagonale buren.

Zoals gebleken werkt excentriciteit niet altijd goed als pre-filter. Een filter dat beter is in het filteren van alleen sterachtige objecten zal accuratere kaarten van attribuutwaarden opleveren.

Bovendien zullen de attribuutwaarden van het filter waarmee geprefiltert wordt minder beïnvloed zijn als er een kaart van gemaakt wordt. Wij hebben zelf iets geprobeerd te doen met grootte van het verschil in oppervlakte in geneste samenhangende componenten, maar ook dit werkt soms wel en soms niet.

Tot nu toe is het alleen mogelijk om van alle sterren de attributen te berekenen en hierop te filteren of ze in kaart te brengen. Een mogelijke uitbreiding zou kunnen zijn om gebruik te maken van attribuut vectoren. Dit kan worden gedaan door bijvoorbeeld een attribuut vector in het programma op te slaan die aangeeft wat de attribuutwaarden van een perfecte ster zijn.

Vervolgens kan dan voor elke ster in een plaatje ook een attribuut vector worden gemaakt waarmee er kan worden gekeken hoeveel deze afwijkt van de perfecte ster.

Ons programma bestaat uit slechts een enkele thread. De snelheid van het programma zou dus een stuk verbeterd kunnen worden door dit uit te breiden naar meerdere threads. Voor de generatie van de Max-Tree zijn algoritmen[14] beschikbaar die parallel werken. Het berekenen van de momenten zou in ons geval ook parallel kunnen, mits alle threads samen maar op één grijswaarde niveau tegelijk werken.

(32)

7 Bibliografie

[1] M. K. Hu. Visual pattern recognition by moment invariants. IRE Transactions on Information Theory, IT-8:179–187, 1962.

[2] J Kilian. Simple image analysis by moments. Open Computer Vision (OpenCV) Library documentation, 2001.

[3] F. Kiwanuka and M. H. F. Wilkinson. Radial moment invariants for attribute filtering in 3D.

In U. Koethe, A. Montanvert, and P. Soille, editors, Proc. of Workshop on Discrete Geometry and Mathematical Morphology (WADGMM), pages 37–41, Istanbul, August 2010. IAPR.

URL http://mdigest.jrc.ec.europa.eu/wadgmm2010/ProceedingsWADGMM2010.pdf.

[4] P. Maragos and R. D. Ziff. Threshold decomposition in morphological image analysis. IEEE Trans. Pattern Anal. Mach. Intell., 12(5):498–504, 1990.

[5] Paul L. Rosin. Measuring shape: ellipticity, rectangularity, and triangularity. Machine Vision and Applications, page 2003.

[6] P. Salembier and J. Serra. Flat zones filtering, connected operators, and filters by recon- struction. IEEE Trans. Image Proc., 4:1153–1160, 1995.

[7] P. Salembier, A. Oliveras, and L. Garrido. Anti-extensive connected operators for image and sequence processing. IEEE Trans. Image Proc., 7:555–570, 1998.

[8] J. Serra. Mathematical morphology for Boolean lattices. In J. Serra, editor, Image Analysis and Mathematical Morphology, II: Theoretical Advances, chapter 2, pages 37–58. Academic Press, London, 1988.

[9] E. R. Urbach and M. H. F. Wilkinson. Shape-only granulometries and grey-scale shape filters. In Proc. Int. Symp. Math. Morphology (ISMM) 2002, pages 305–314, 2002.

[10] E. R. Urbach, N. J. Boersma, and M. H. F. Wilkinson. Vector-attribute filters. In Mathema- tical Morphology: 40 Years On, Proc. Int. Symp. Math. Morphology (ISMM) 2005, pages 95–104, Paris, 18-20 April 2005.

[11] Berkeley Physics Course. Vol.1, C. Kittel, W.D. Knight, and M.A. Ruderman. Mechanics, pages 242–243. Berkeley physics course. McGraw-Hill, 2nd edition, 1973. ISBN 978- 0070048805.

[12] M. H. F. Wilkinson. A fast component-tree algorithm for high dynamic-range images and second generation connectivity. In Proc. Int. Conf. Image Proc. 2011, pages 1041–1044, 2011.

[13] M. H. F. Wilkinson and G. K. Ouzounis. Advances in connectivity and connected attribute

Referenties

GERELATEERDE DOCUMENTEN

(begeleider:) 05:09 Nou ja ik zou zeggen je moet ook je moet eerder op zoek gaan naar die geluiden die je die je werk zeg maar verbeteren. Dus je moet eigenlijk naar de

We kunnen de kans nu net als in het voorbeeld van de lotto berekenen: Er zijn k s  mogelijkheden om k slechte uit de s slechte stukken de vissen, dan zijn er m−k n−s  mogelijkheden

Soms zijn bijzondere persoonsgegevens wel belangrijk voor u en ons, dan kunnen we ze wel gebruiken.. Uw overzicht van inkomsten-

Het draaiboek dat de artsenfederaties in juni vorig jaar hebben opgesteld voor de triage van coronapatiënten voor IC-opname beschrijft hoe artsen moeten beslissen over wie er wel

• Ik begrijp hoe verschillende breuken met dezelfde noemer zich tot elkaar verhouden (bijvoorbeeld 1/5, 3/5 en 2 2/5). • Ik kan breuken in de juiste

[r]

In de bouw, waar steenach- tige materialen zoals beton en kalkzandsteen worden bewerkt, worden deze zakken niet veel gebruikt, omdat de stofzakken (de eerste filter) daarbij

In deze PBLQatie hanteren we een aanpak die is gebaseerd op de samen- hang tussen de burger en zijn digitale vaardigheden, het beleid dat de overheid voert bij het inrichten van