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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

18 Appendiks 18.9 Implementering<br />

18.9.7 TopDetection<br />

TopDetection-klassen er opbygget således, at den har en funktion<br />

execute(), som er ho<strong>ved</strong>funktionen, der eksekverer alle<br />

underfunktioner, som er nødvendige for at udføre klassens<br />

formål.<br />

18.9.7.1 execute()<br />

execute()-funktionen består <strong>af</strong> en stor for-løkke hvori der<br />

udføres en række operationer på hvert enkelt kim (figur 18.23).<br />

I tilfælde <strong>af</strong> det ønskes at fjerne urenheder i kanten, kan kimet<br />

shrinkes <strong>og</strong> expandes et antal gange. Herefter expandes <strong>og</strong><br />

shrinkes kimet 4 gange (<strong>af</strong>snit 11.3 Test s. 51 for nærmere<br />

information).<br />

Nu findes forskellen mellem billedet, hvor kanten er blevet<br />

renset, <strong>og</strong> det som er blevet expandet <strong>og</strong> shrinket 4 gange i<br />

funktionen subtract(). I denne funktion udregnes <strong>og</strong>så topmassemidtpunktet.<br />

Til sidst beregnes vinklen mellem det<br />

vandrette plan, som går igennem massemidtpunktet fra<br />

ellipseapproksimationen, <strong>og</strong> den linie som dette punkt danner<br />

med det nye massemidtpunkt beregnet i subtract(). Dette<br />

sker i funktionen findTop(). I denne funktion kontrolleres<br />

det <strong>og</strong>så hvilken ende <strong>af</strong> kimet, der er toppen:<br />

void TopDetection::execute(void)<br />

{<br />

for(int count = 0; count < numberOfSeeds; count++)<br />

{<br />

ExpandShrink expandShrink;<br />

}<br />

GrayScale expanded, shrinked, subtracted, forExpand, forShrink;<br />

expandShrink.shrink(pSeed[count].grayScale, forShrink, 0);<br />

expandShrink.expand(forShrink, forExpand, 0);<br />

expandShrink.expand(forExpand, expanded, 4);<br />

expandShrink.shrink(expanded, shrinked, 4);<br />

subtract(forExpand, shrinked, subtracted, count);<br />

}<br />

findTop();<br />

18.9.7.2 Subtract()<br />

Start<br />

execute()<br />

Count

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

Saved successfully!

Ooh no, something went wrong!