21.07.2013 Views

Detektering og klassificering af kimplanter ved brug af computer vision

Detektering og klassificering af kimplanter ved brug af computer vision

Detektering og klassificering af kimplanter ved brug af computer vision

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

14 Implementering 14.3 Pr<strong>og</strong>ramstruktur<br />

Når alle kimene har været igennem TopDetection, tages Symmetry-klassen i <strong>brug</strong>. Klassen <strong>brug</strong>es til<br />

at fastlægge kvalitetsparameteren, symmetri, for hvert <strong>af</strong> kimene. For at <strong>af</strong>vikle klassen sendes de to<br />

parametre pSeed <strong>og</strong> numberOfSeeds til constructoren:<br />

Symmetry symmetry(pSeed, numberOfSeeds);<br />

symmetry.execute();<br />

Nu er tiden inde til at beregne kvaliteten <strong>af</strong> kimene ud fra kvalitetsparametrene. Igen beregnes<br />

kvaliteten for hvert enkelt kim. Det første der sker, er at der oprettes en instans <strong>af</strong> klassen Quality,<br />

med de to parametre pSeed <strong>og</strong> numberOfSeeds som input. I Quality indlæses kvalitetsparametrenes<br />

grænser fra ”settings.ini”-filen. Det er ud fra disse parametre, at det beregnes hvilke kim der bliver<br />

godkendt.<br />

Quality quality(pSeed, numberOfSeeds);<br />

quality.execute();<br />

Når de godkendte kim er fundet, udskrives deres x,y-koordinater samt θ til tekstfilen<br />

”robotData.txt”.<br />

quality.saveRobotData("Data/robotData.txt");<br />

For at visualisere resultaterne <strong>af</strong> algoritmerne, genereres der en række billeder. Hertil anvendes<br />

klassen Draw (Appendiks 18.9.10 Draw s. 121). Det første billede der oprettes, tager udgangspunkt i<br />

originalbilledet ”kim.bmp”. Der tegnes på billedet med funktionen drawEllipse(). Dette billede<br />

viser alle de fundne kim <strong>og</strong> deres approkismerede ellipser. Billedet gemmes i ”Data”-mappen som<br />

”ellipse.bmp”.<br />

Draw draw;<br />

draw.load("kim.bmp");<br />

draw.drawEllipse(pSeed, numberOfSeeds, true);<br />

draw.save("Data/ellipse.bmp");<br />

Herefter tegnes der et nyt billede, som <strong>og</strong>så er baseret på det originale ”kim.bmp”. På dette billede er<br />

kun de godkendte kim med, samt en markering for hvert enkelt kim hvor toppen er fundet.<br />

Procesgangen er som følger: Først slettes alle tidligere data fra objektet draw med clear()<br />

funktionen. Herefter loades det originale billede ind. Derefter tegnes de approksimerede ellipser på<br />

de godkendte kim. Derefter indtegnes topmarkeringen med funktionen drawCenterTop(). Til sidst<br />

gemmes billedet i filen med navnet ”topBottomAppro<strong>ved</strong>.bmp”:<br />

draw.clear();<br />

draw.load("kim.bmp");<br />

draw.drawEllipse(pSeed, numberOfSeeds, false);<br />

draw.drawCenterTop(pSeed,numberOfSeeds, false);<br />

draw.save("Data/topBottomAppro<strong>ved</strong>.bmp");<br />

Billedet ”topBottomAppro<strong>ved</strong>.bmp” viser resultatet <strong>af</strong> den samlede algoritme.<br />

Side 71 <strong>af</strong> 131

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!