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
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.9.3 evaluateSeeds()<br />
Funktionen har til formål at implementere ønsket,<br />
om at kunne udvælge kim <strong>ved</strong> både at <strong>brug</strong>e<br />
boks- <strong>og</strong> ellipsoide-modellen. Fremgangsmetoden<br />
er som følger (figur 18.24):<br />
1. Først undersøges det om der ønskes<br />
anvendt boks- eller ellipsoide-model<br />
2. Hvis der anvendes ellipsoide-model<br />
udregnes x0, y0, z0, a, b <strong>og</strong> c<br />
3. Herefter gennemløber for-løkken alle<br />
kimene i seeds-objektet<br />
4. Det undersøges om det aktuelle kim<br />
falder inden for grænserne for den valgte<br />
model<br />
Koden i C++ er som følger:<br />
void Quality::evaluateSeeds(void)<br />
{<br />
float x0, y0, z0;<br />
float aSquared, bSquared, cSquared;<br />
…<br />
På 1. <strong>og</strong> 2. trin i fremgangsmetoden ovenover undersøges det, om der er valgt ellipsoide-modellen,<br />
<strong>og</strong> i så fald regnes x0, y0, z0, a, b <strong>og</strong> c ud:<br />
…<br />
if (selection!=0)<br />
{<br />
float temp;<br />
temp = (float(expandShrinkHigh)-float(expandShrinkLow))/2;<br />
x0 = expandShrinkHigh-temp;<br />
aSquared = float(pow(double(temp),2));<br />
}<br />
…<br />
temp = (float(symmetryHigh)-float(symmetryLow))/2;<br />
y0 = float(symmetryHigh)-temp;<br />
bSquared = float(pow(double(temp),2));<br />
temp = (float(areaHigh)-float(areaLow))/2;<br />
z0 = float(areaHigh)-temp;<br />
cSquared = float(pow(double(temp),2));<br />
På 3. trin gennemløbes for-løkken, <strong>og</strong> dataene hentes på kimet:<br />
…<br />
for(int i=0; i