Surfer dude
Surfer dude
perdalum, 14. juni 2019
Billede fra Toke Eskildsen (ekot.dk)
dude=
;
In[]:=
Udtræk surfer dude med ML?
ImageContents@dude
Out[]=
Nah, kun en dude. En anden funktion?
ImageCases@dude
In[]:=
Out[]=
Ikke bedre.
Hvad så med at finde nøgle punkter?
ImageKeypoints@dude
In[]:=
Out[]=
HighlightImage[dude,%]
In[]:=
Out[]=
Okay, det kræver vildsomme tweaks, og jeg har en deadline.
Så er prøver jeg at detektere linier i billedet.
HighlightImage[dude,ImageLines@dude]
In[]:=
Out[]=
Masser af fine linier, men ikke den vigtigste: snoren!
Så kan jeg heldigvis ty til manuelt af klikke på de punkter, som jeg er interesseret i. Dette gøres ved at klikke på billedet, vælger Point tool og klikke på ansigtet af de syv surfer-dudes
dude
In[]:=
Koordinaterne til disse valgte punkter er:
head={{1344.90220323741`,352.13676558753014`},{1134.479916067146`,424.19162170263814`},{934.1558003597121`,444.3411270983215`},{778.4584832134292`,428.510041966427`},{622.4333033573141`,366.8156474820146`},{432.4883842925659`,266.89246103117534`},{232.77315647482015`,243.06152577937678`}};
In[]:=
Og de er placeret her:
HighlightImage[dude,head]
In[]:=
Out[]=
Hvis vi bare vil se dem uden det forstyrrende billeder, ser det således ud:
Graphics[Point@head]
In[]:=
Out[]=
Nu er det nemt at udtrække Δx:
deltaX=Differences[head[[All,1]]]
In[]:=
{-210.422,-200.324,-155.697,-156.025,-189.945,-199.715}
Out[]=
For at gøre det nemmere at vurdere resultatet, tilføjer jeg enheder:
deltaXUnit=Quantity[deltaX,"Pixels"]
In[]:=
,,,,,
Out[]=
Okay, så skal vi have fundet omregningsfaktoren mellem billedets pixels og den virkelige verden. Umiddelbart vil jeg mene at det der er nemmest at vurdere er afstanden mellem surfer-dudes fødder.
Jeg finder koordinaterne til to fødder som med ansigterne:
HighlightImage[dude,{{471.7663369304556`,190.38803956834556`},{433.0972721822542`,176.87072841726638`}}]
In[]:=
Out[]=
surfFooting={{471.7663369304556`,190.38803956834556`},{433.0972721822542`,176.87072841726638`}}[[All,1]]
In[]:=
{471.766,433.097}
Out[]=
footDistancePixels=Quantity[Abs@Differences@surfFooting//First,"Pixels"]
In[]:=
Out[]=
Okay, hvor stor en afstand har han så i meter? Jeg stillede mig op i surfer-dude position og målte afstanden med min laser måler :-)
footDistanceEstimated=Quantity[0.6,"Meters"]
In[]:=
Out[]=
Så nu er det nemt at beregne omregningsfaktoren
scale=footDistanceEstimated/footDistancePixels
In[]:=
Out[]=
Den ganger vi på Δx
deltaXUnit*scale
In[]:=
{,,,,,}
Out[]=
Det første billede er taget xx:27 (minutter:sekunder) og det sidste xx:29. Der er seks ens intervaller, hvilket med en usikkerhed på 0.5s giver:
timeBetweenPicture=Around[,]/6
In[]:=
Out[]=
speed=Abs@(deltaXUnit*scale)/timeBetweenPicture
In[]:=
,,,,,
Out[]=
UnitConvertspeed,
In[]:=
,,,,,
Out[]=
Mean[%]
In[]:=
Out[]=