Tagg: opencv

10 GB holkfilmer

Med en videoupplösning på 1024×768 så börjar de inspelade blåmesfilmerna ta lite plats. Just är det knappt 7000 filer som nu upptar 10 GB på serverns hårddisk och det är svårt (omöjligt faktiskt) att hinna gå igenom alla manuellt. Som ’hacker’ kommer man ju då på en lösning som är lite programmeringsinriktad…

Varför inte en bildanalys som kan räkna ägg och antalet blåmesar som samtidigt uppehåller sig i holken? Eller hitta sekvenser som det inte finns så många av dvs bryter nån sorts mönster?

Så nu är jag lite sugen på att ta fram openCv och lite självlärande algoritmer och börja bearbeta datat!

Dock är det några andra projekt på gång samtidigt så vi får se vad som händer…

DartScore rebirth!

Jag fick en kommentar på mitt projekt ’DartScore’ här om dagen och efter lite mailväxling med Hannes som har ett liknande projekt på gång så har mitt intresse återuppstått och jag har suttit och kodat en hel del idag. Hittills mest för att få igång hans kalibreringsrutin för darttavlan och se hur den funkar. Förhoppningsvis kan vi tillsammans få till något som funkar ’hela vägen’.

Ett annat problem jag haft är att inte kunna läsa in bilder till opencv från en videofil men det har jag också löst idag vilket gör att test och debug blir mycket lättare.

Efter detta har jag tagit tag i att sätta upp kameran på ett stadigt sätt men fortfarande återstår en bra och stabil ljussättning av tavlan som också är en kritisk detalj…  Nu funkar det åtminstone så pass att jag kan spela in en film som kan användas för kodning och testning.

Nytt takfäste för kamera… Det är en prototyp.

Tavlan och kameran. Nästa steg för prototypen blir att hitta en bättre och stabilare belysning. Helst en spotlight som går att ’dimma’.

En bild ur bildströmmen med kameran monterad enligt bilderna ovan. Kameran startar i ’monteringsläge’ vilket betyder att man vrider till den på ett visst sätt för att sedan kunna göra kalibreringen automatiskt.

Minihack 2017-02-11

Vi är några stycken som brukar träffas ca varannan månad och köra vad vi kallar ’minihack’. Vi sitter då en lördag och pular, ibland med samma projekt men ofta lite olika. Grejen är att man träffar likasinnade och har roligt och så kanske man får lite hjälp om det behövs…

Igår körde vi ett minihack och min holk-kamera (en raspberry pi 3 med IR-kamera) tog ett rejält kliv framåt. Jag fick hjälp av en jobbarkompis och vi snodde ihop en rörelsedetektering i mjukvaran med hjälp av opencvs ’backgroundsubtraction’.  Jag fortsatte själv hemma idag och nu fungerar även inspelningsfunktionen och lagring till en delad disk i mitt nätverk. All kod som körs i raspberry pi:en finns på mitt githubkonto.

Kameran monterad under taket på holken.

Kameran från framsidan. Den vita runda saken är en PIR detektor som reagerar på rörelse. Jag provar den tillsammans med detektering i bildströmmen. Den vita ’rutiga’ saken är en temperatur och luftfuktighetsmätare.

Skärmbild från videoströmmen som den ser ut just nu. Rörelse detekteras när jag viftar med pennan i hålet och den börjar spela in direkt.

CamDevice steg 1

Jag har knåpat vidare med kameramodulen till mitt ’övervaknings’ system. Nu används accelerometern för att veta hur kameran är vänd och sedan rotera bildströmmen rätt. Det går alltså att placera kamera godtyckligt och ändå få bilden rättvänd. Nästa steg är att få igång kompassen och kunna se åt vilket håll kamera tittar. Detta blir nog svårare då den behöver kalibreras på något sätt och dessutom ta hänsyn till hur kameran är roterad. Jag får börja med att läsa databladet och googla exempelkod…

Kameran använder opencv för att skapa bilderna till strömmen så nu är det ’bara’ att lägga till  tolkningar av konturer, rörelser etc. Just nu är kameran byggd med en raspberry pi B+ som ger en framerate på ca 5 i 640×480 utan bildbehandling eller optimeringar. Den lär ju sjunka ytterligare så fort jag lägger till olika bildbehandlingar men det går säkert att effektivisera lite också.Jag har lite ideer om att använda tex LCM eller någon annan teknik för att parallellisera bildhämtandet och bildbehandingen. Annars finns det ju raspberry pi 2 eller 3 att ta till. Allt beror av hur jag kommer att göra resten av systemet. Var ska tex bildströmmen utvärderas?

camdevice1

Kameran med bildströmmen i bakgrunden. Den gröna dioden indikerar att programmet är igång och den gula att bildströmmen skickas ut på nätverket.

camdevice2

Kameran är vänd upp och ner men bildströmmen är rätt roterad ändå. Roteringen fungerar om kamera vänds i steg om ca 90 grader. Däremot roterar jag inte bilden om kameran tittar uppåt eller nedåt.

HolkCam2 – 2017

Säsongssammanfattning:

2017-03-04: Holken sattes upp
2017-03-08: Första besöket!
2017-04-01: Det första bomaterialet börjar tas in efter mer än 120 besök
2017-04-11: Den första övernattningen!
2017-04-21: Första synliga ägget men det är kanske fler
2017-04-24: Tre synliga ägg
2017-04-25: Fyra ägg och honan blir matad i holken
2017-04-26: Fem ägg
2017-04-30: Nio ägg. Nu är det nog snart dags att börja ruva på riktigt!
2017-05-01: Nu har jag spelat in drygt 6800 videosnuttar som upptar 10.5 GB på serverns hårddisk
2017-05-02: Nu ruvas det på riktigt! Honan har varit i holken större delen av dagen.
2017-05-06: Snart har halva ruvningstiden gått
2017-05-15: Första ägget kläcks
2017-05-16: Alla ägg utom ett är kläckta
2017-05-21: Det är 7 eller 8 ungar som krälar runt och äter, sover, äter… Nu börjar också de första fjädrarna synas
2017-05-29: Nu är det 4 bara ungar kvar. Övriga har dukat under och blivit utkastade ur holken av föräldrarna
2017-05-31: Tyvärr har mamma blåmes och 3 ytterligare ungar dött i holken och det är bara en unge kvar som får mat av pappa blåmes. Jag publicerar inga videos på detta eller resten av säsongen då holkens innandöme inte är särskilt trevligt.
2017-06-03: Den unge som fått mat av pappa blåmes sitter i holk-öppningen ett bra tag innan den bestämmer sig för att flyga ut men till slut så vågar den. Nu är det bara döda fåglar och flugor kvar i holken…

HolkCam2 är därmed avslutat och nu är det bara att ta ner holken och rensa den eller slänga den.
Videofilerna finns kvar ett tag men avslutningen blev ju inte så trevlig i år heller så jag får se vad jag ska göra med materialet.

Mer spännande information om blåmesar finns på Wikipedia.

Säsongens höjdpunkter hittills på YouTube

All kod för kamera och server-backend finns på mitt github-konto.


Nedtagning och avslutning

Nedan är bilder när holken tömdes. Det var en rejäl bobale detta år, ca dubbelt så hög som förra året men djupet i holken var också större för att undvika skatattacker.

Kamera modulen, en raspberry pi 3 och en Arducam IR kamera med riktigt vidvinkelobjektiv ska jag återanvända. Jag rengjorde den och försökte torka av den med handdesinfektion men har också knutit in den i en plastpåse och lagt den i frysen några dygn så eventuella bakterier ska försvinna.

Själva holken kanske jag också använder igen då den har ganska bra mått och är målad som vår husfasad.

Holken när taket tagits av

Den höga bobalen. Hålet nederkant är i samma höjd som undersidan på ’ribborna’. Hålets diametar var 28mm.

Bobalen med den döda blåmesmamman och några döda ungar.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Bygget av holken, projektbeskrivning:

Steg 1 Trä-hårdvaran

20160716_114640Det började med att jag köpte lite prylar från ebay, en kameramodul med skruvfäste för riktiga objektiv och ett medföljande fish-eye objektiv. Jag ska prova det lite och så får vi se vad som händer.

Leveransen av kameramodulen drog ut lite på tiden och då började jag med själva holken. Ett mindre ingångshål, djupare och med inbyggt skatskydd blir den säkrare. Holken har även ett ’innertak’ precis ovanför ingångshålet så det blir ett litet ’maskinrum’ där kameran etc kan placeras. Till vänster syns delarna innan dom skruvades ihop.

Förutom kamera kommer holken att ha IR-belysning och någon form av temperaturgivare. Kanske kan jag även får plats med en andra kamera dvs ha både en IR-och en vanlig kamera.

Nedan är en bild när holken är hopmonterad men utan tak.
20160716_121510

Steg 2 Val av hårdvara

Nu har jag valt en kameramodul med lagom mycket vidvinkel, (NoIR Camera Board OV5647 /w M12x0.5)  och provat lite hur den ska få plats i holkens ’maskinrum’. Jag skulle även vilja ha en mikrofon och kanske någon mer givare förutom temperatur. Det vore kul att sätta upp en lysdiod eller motsvarande på holken som visar när någon är ’hemma’ tex. Hårdvaran för övrigt blir nog en raspberry pi 3 och ett stort minneskort.

Den utvalda hårdvaran. En raspberry pi 3 och IR-kameran kompletterade med en temperatur och luftfuktighetssensor och några IR-lysdioder. Ev tillkommer en vanlig röd lysdiod som ska sitta på utsidan för att visa om det är någon i holken.

Steg 3 Programvarutest

Nu ska jag prova programvaran där jag denna gång använder python och opencv samt en egen implementation för att detektera rörelser och spara videosnuttarna. Jag ska också automatisera hur jag sparar och publicerar klippen på en websida. Som tidigare kommer en videoström alltid att vara tillgänglig för att se ’live’ vad som händer i holken.

Steg 4 Färdigt koncept för hårdvaran

Nu har jag ett koncept på hur det hela ska monteras i holken.

Programvaran börjar också ta form och jag checkade just in en version av en opencv-genererad bildström som får en uppdateringsfrekvens på ca 5 när jag kör 1024×768 vilket är en rejäl förbättring mot tidigare. Det är också väldigt mycket bättre bildkvalitet och lättare att styra överlägg (tex text) i bildströmmen.

Kameran är monterad på rätt sätt och en temp/fuktighets-sensor finns på plats för montering i holken.

Steg 5 IR-belysning

Nu har jag en fungerande ljusramp av IR-dioder också där det går att styra ljusstyrkan mha en pwm-signal. Programvaran kan nu också spara videosekvenser och jag håller på att programmera rörelsedetekteringen så snart blir det skarpa tester.

En stillbild från videoströmmen. Det är tvärmörkt i holken men ir-dioderna lyser upp ganska bra även med 50% pwm. Texten visar tid, temperatur, luftfuktighet och bilder per sekund. Då det är ett fish-eye objektiv ser holken väldigt djup ut. Jag har ett objektiv till som inte är lika vidvinkligt så jag ska prova med det också och se vilket som funkar bäst.

Steg 6 Kameramodulen

Nu har jag en fungerande hårdvara! Allt monterat i en lite låda för raspberry-pi med kamera och IR dioder som tittar ut genom locket. Jag bytte ljusrampen mot fastmonterade dioder som jag tror funkar bättre.

Smältlim, gummiband och eltejp håller ihop det just nu. Nu fattas ’bara’ programmet som ska fixa rörelsedetektorn och videoinspelningen men det är på g. Sedan gäller det att hitta en bra plats att sätta upp holken på. Just nu lutar det åt att jag helt enkelt skruvar upp den på väggen utanför fönstret på övervåningen. Då blir det lätt att dra ut en strömsladd och även göra ’service’ om det skulle behövas.

Jag ska även göra en bättre ’backend’ än förra året då det är tänkt att videofilerna ska synkas till min egna webserver.

Raspberry-pi lådan med kamera och ir-belysning. Det vita är en temperatur och luftfuktighets sensor som ska sitta i holken.

Steg 7 Rörelsedetektor

Projektet tog ett rejält kliv framåt i helgen då det var ’Minihack. Jag fick hjälp av en jobbarkompis och vi snodde ihop en rörelsedetektering i mjukvaran med hjälp av opencvs ’backgroundsubtraction’.

Nu fungerar även inspelningsfunktionen och det finns två rörelsedetektorer. Förutom direkt i videoströmmen har jag även installerat en ’PIR’ detektor men den verkar falsklarma lite för ofta så kanske behövs det någon justering…

Steg 8 Sista touchen

Nu är den snart klart att sättas upp. Förutom att ’backend’ och övriga programvaran är klar (eller åtminstone tillräckligt klar) har jag även satt fast tätningslister runt taket och bättrings målat holken lite. Nästa steg blir att sätta upp den och det kommer jag att göra till helgen. Sen är det bara att hoppas på att blåmesarna gillar även denna nya generation av holk.

Kameran monterad under taket och temperatursensorn på sidan i bakre hörnet.

Tätningslisten. Taket skruvas fast mot denna så då blir det förhoppningsvis tillräckligt tätt.

Steg 9: Uppsättning och start

Nu är den uppsatt och startad på riktigt. Följ utvecklingen via http://sundback.ddns.net/

Holken uppsatt på samma ställe som förra året, dvs på en av stolparna till våran trappavsats.

’Talk Python To Me’

Rubriken är namnet på en podcast med temat ’Python’ (programmeringsspråket) och relaterade teknologier. Riktigt nördigt och kul 🙂

I senaste episoden intervjuas Adrian Rosebrock som driver en blogg som handlar om tekniker för bildigenkänning och hantering av detta med python och openCv vilket är ett kärt ämne för mig just nu. Jag har precis köpt och laddat ner ’premium bundle’ från hans websida som innehåller e-böcker, kod och en virtuell maskin så nu är det bara att sätta igång. Jag har ju två heta projekt just nu: känna igen vägskyltar och räkna poäng i dart. Båda projekten använder bildigenkänning, python och openCv samt är tänkta att köras på en raspberry pi med kameramodul. Jag planerar att lägga upp båda projekten på github som nån sorts ’team’-work men sedan får jag väl se om någon är intresserad av att hjälpa till.

dart1

Rå skärmdump från den raspberry pi som sitter över darttavlan.