Optisk avläsning av vattenmätare

I detta forum hör diskussioner gällande teknik i största allmänhet och hemautomation i synnerhet hemma.

Moderator: elf98

Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
ahd71
Tar hemautomation på allvar
Inlägg: 65
Blev medlem: 15 jan 2009, 23:40
Ort: Stockholm

Optisk avläsning av vattenmätare

Inlägg av ahd71 » 16 jan 2009, 02:53

Efter att blivit mätgalning på temperatur och energi blev jag sugen på att mäta vattenförbrukning också. Att köpa en mätare med pulsutgång och koppla in kändes inte som mitt förstahandsval, antagligen bara för att jag inte gillar översvämningar och att jag ville ge mig själv en utmaning i bildanalys....
Vattenmätare som bilden blir innan den bearbetas
Vattenmätare som bilden blir innan den bearbetas
Jag behövde....
1 webbkamera
1 ds2413
2 motstånd
2 vita lysdioder
? timmar arbetstid (på tok för många sena kvällar under julhelgen men det var skoj....)
imagemagick (bildbehandling)
gocr (ocrprogram)
php + rrdtool för presentationen
bash script för all analys som sker autmatiskt förståss.

1wire kretsen, dioderna och motstånden är min belysning som tänds och släcks via owfs vid varje avläsning. Webkameran tar en stillbild i 640x480 upplösning. Ur den bilden croppar jag fem ytor, en för räkneverket och sen vardera av de fyra "röda hjulen".

Jag började med OCR av mätarställningen men det blev svårare än jag trodde, trots bildbehandling, tightare croppning är det ingen vidare säkerhet i avläsningen (okay att det inte funkar när visarna rullar över till nästa siffra men ändå på tok för många läsfel hitintills att den inte är användbar ännu utan lite databehandling efteråt...)

Hjälp mottages tacksamt med hur man bäst tolkar bilden som ser ut så här
Räkneverkt utcroppat för OCR
Räkneverkt utcroppat för OCR
counter.jpg (2.27 KiB) Visad 5923 gånger
som i detta fall missade 8:an - jag har inget problem att trimma in gocr att läsa siffrorna på en enstaka bild men jag har inte hittat någon inställning som fungerar på flertalet av inläsningarna (jag har en massa testdata nu i alla fall).
kör just nu med "gocr -C 0123456789 -f UTF8 counter.tiff -o stallning.txt -l 128 -d 200" där -l sätter threshold för nivåerna i bilden och -d reduceras "dust" som i mitt fall är skuggorna i masken som har hålen för de fem positionerna.

Nu till det skojjiga som däremot fungerar ALLDELES UTMÄRKT och ÖVER FÖRVÄNTAN.....

Jag klurade en stund på hur jag skulle tolka de fyra röda hjulen som visar 100-tals, 10-tals, 1-tals liter och inte minst, jo faktiskt minst, 1 dl's förbrukningen och gjorde några snabba experiment som verkade lovande och knåpade ihop följande:

- croppar ut de fyra mätarna ur bilden på vattenmätaren
- analyserar en mätare i taget (från minsta till högsta vilket visade sig bli nödvändigt)
- croppar ut en liten area ur mätarna i området mellan två siffror (se bild
En av 40 "debugbilder" för att centrera croppen rakt över mätarna och placera den magiska ytan att räkna pixlar på
En av 40 "debugbilder" för att centrera croppen rakt över mätarna och placera den magiska ytan att räkna pixlar på
debug-a-1-7.jpg (3.95 KiB) Visad 5922 gånger
)
- vrider mätarbilden 36 grader 9 gånger och croppar ut arean så jag nu har 10 små bilder, typ 20x20 pixlar
- drar upp färgmättnaden i bilden dramatiskt (med imagemagick) för att framhäva det röda (resten är ju svart text på vit bakgrund) samt ljusar upp bilden för att "överexponera" allt som är nästan vitt.
- reducerar antalet färger till 8 (Blir i praktiken nästan bara tre färger kvar, svart, vit och röd)
- kör histogramfunktionen i imagemagick och lägger antalet röda pixlar på minnet för vardera av de 10 områdena
- kollar om någon av dem har flerfaldigt fler röda pixlar än de andra 9 områdena vilket nästan alltid är fallet ! (tydlig markering var visaren står alltså)
- om marginalerna är sämre gör jag en ny bedömning av sannolikheten baserat på hur den mätare med den mindre valören står, är den 0-5 så har ju den mätare jag nu analyserar just slagit om, men är den andra 5 eller högre så är ju min visare på väg att slå om och då får jag ju avrunda upp eller ner beroende på den andra visarens värde - detta var nyckeln till säkerhet i avläsning, annars fick jag hopp på 1, 10 eller 100 liter då och då. Man kommer ALDRIG kunna definiera områdena perfekt men med denna metod har man ganska god slarvmån.... (visarna i sig står inte direkt på markeringen när den andra visaren passerar noll, ganska ofta faktiskt ser den ut att vara "tjugo över två" när den borde vara "två"....
- petar in siffrorna i rrdtool och plottar en graf

Så nu vet jag vad toaletten drar när man spolar det lilla och det stora, hur länge jag dushar, att frun dushar på halva tiden, att nån spolat på toaletten mitt i natten...och med lite fantasi kan man ju ha ett larm på om det går åt vatten när man inte är hemma.

Jag trodde inte detta skulle fungera men det gör det. Scripten kan jag dela med mig av, de ska städas till lite först bara. Svårigheten i projektet var att hitta ett optimalt område att detektera rödfärg i, att samt att komma på den enkla men avgörande bildbehandlingen med färgmättnad och ljushet samt implementera logiken för att kika på nästa värdesiffra. Jag gjorde en bra debugsida som visade alla fyra mätarna roterade i alla 10 positioner med analysområdet markerat plus den lilla croppade ytan för sig som fått reducerade färger och höjd färgmättnad vilket gjorde det ganska lätt att trimma in det hela. Den sidan visade också statistiken för antalet pixlar per mätområde, tolkad siffra, sannolikhet för den tolkningen, när "domarfunktionen" trädde in och gjorde en ny tolkning baserat på en annan visare etc.

Min webkamera sitter inte helt vinkelrätt mot mätaren så alla visare är mer eller mindre ovala och det konvexa glaset gör sitt till också, trots detta har jag hitintills inga mätfel över 1dl vad jag vet. Reflexer från de två lysdioderna har jag inte fått tack vare att de har en vinkel på kanske 25 grader relativt kameran (är man hobbyfotograf så är man)

Overkill? Ja visst, men alternativet hade varit att äta julmat och se på repriser på TV - och då tyckte jag det var mycket mer kreativt att göra detta i stället ;-)

mvh /Anders
Senast redigerad av 2 ahd71, redigerad totalt 16 gång.
Användarvisningsbild
Dowser
Hemautomation - det är mer än en hobby
Inlägg: 811
Blev medlem: 10 mar 2007, 09:44
Ort: Trosa
Kontakt:

Re: Optisk avläsning av vattenmätare

Inlägg av Dowser » 16 jan 2009, 03:02

Woho!
Du bara spottar ur dig användbara inlägg ikväll!

Detdär skall jag kopiera rakt av!

Jag klurade på samma sak för ett tag sedan och har en kamera monterad mot min vattenmätare också, http://reimer.nu/tmp/webcam.jpeg (ej uppdaterad just nu då den inte följt med till nya hem-auto servern) som förvisso jobbar med IR istället för diod-belysning.

Jag började labba med gocr, men la aldrig den tiden på det som du gjorde. Måste bli något att pyssla med till helgen!

Edit: Jo, kan man tigga lite exempel-script också måntro? :)
ahd71
Tar hemautomation på allvar
Inlägg: 65
Blev medlem: 15 jan 2009, 23:40
Ort: Stockholm

Re: Optisk avläsning av vattenmätare

Inlägg av ahd71 » 16 jan 2009, 03:54

Jo visst kan man det... Jag har mailat dig scripten, men de är som sagt inte mogna för att publiceras ännu men har du några förbättringar/kommentarer så maila mig gärna.

/Anders
Användarvisningsbild
elf98
Hemautomation - det är mer än en hobby
Inlägg: 5228
Blev medlem: 27 okt 2006, 13:49
Ort: Linköping
Kontakt:

Re: Optisk avläsning av vattenmätare

Inlägg av elf98 » 16 jan 2009, 08:16

Jag har pillat _massor_ med gocr, en av mina slutsatser är att det spelar stor roll hur stor (i pixlar) bilden som skall analyseras är.

Testa att öka och minska storleken helt enkelt. I ditt fall där åttan ligger mot kanten av bilden kanske det även kan vara värt att padda lite så inte siffran som skall tolkas ligger mot kanten av bilden?
Grundade m.nu & temperatur.nu

Bild Bild
ahd71
Tar hemautomation på allvar
Inlägg: 65
Blev medlem: 15 jan 2009, 23:40
Ort: Stockholm

Re: Optisk avläsning av vattenmätare

Inlägg av ahd71 » 16 jan 2009, 10:42

Bra, tack för tipsen, jag har inte provat att ändra storleken men ska prova det till helgen. Jag hade först en mindre tight croppning men då blev skuggorna runt om väldigt avgörande för resultatet.

/Anders
Användarvisningsbild
CirruZZ
Master Moderator
Inlägg: 1621
Blev medlem: 13 feb 2008, 16:46
Ort: Ystad
Kontakt:

Re: Optisk avläsning av vattenmätare

Inlägg av CirruZZ » 16 jan 2009, 11:05

Mycket intressant, det här hamnar på "att göra listan"!
Projekt tråd | Blogg | Hemautomation
Rapporterar för : Ystad & Duved
ahd71
Tar hemautomation på allvar
Inlägg: 65
Blev medlem: 15 jan 2009, 23:40
Ort: Stockholm

Re: Optisk avläsning av vattenmätare

Inlägg av ahd71 » 16 jan 2009, 11:06

Glöm inte att avsätta tid bara ;-)

/Anders
Användarvisningsbild
CirruZZ
Master Moderator
Inlägg: 1621
Blev medlem: 13 feb 2008, 16:46
Ort: Ystad
Kontakt:

Re: Optisk avläsning av vattenmätare

Inlägg av CirruZZ » 16 jan 2009, 11:24

Halva dygnet är ju outnyttjat! Bara att strunta i att sova. :wink:
Projekt tråd | Blogg | Hemautomation
Rapporterar för : Ystad & Duved
Användarvisningsbild
hanpa
Tar hemautomation på allvar
Inlägg: 59
Blev medlem: 25 jun 2007, 18:21
Ort: Linköping
Kontakt:

Re: Optisk avläsning av vattenmätare

Inlägg av hanpa » 17 jan 2009, 17:16

Man kan ju använda en reflexdetektor också och koppla till en pulsräknare:http://elektronikforumet.com/forum/view ... re#p308743
ahd71
Tar hemautomation på allvar
Inlägg: 65
Blev medlem: 15 jan 2009, 23:40
Ort: Stockholm

Re: Optisk avläsning av vattenmätare

Inlägg av ahd71 » 17 jan 2009, 18:46

Har du fått det att fungera? Jag var också inne på det först, har ju dessutom en outnyttjad räknaringång som fysisk inte är allt för långt bort (8m). Glaset ovanför det lilla svarta hjulet är konvext och de är ganska smala områden ljuset i så fall behöver avskärmas till, antar att man måste köra IR eftersom annars kan jag ju inte tända lampan i matkällaren....

Nån som provat?

/Anders
Användarvisningsbild
Dowser
Hemautomation - det är mer än en hobby
Inlägg: 811
Blev medlem: 10 mar 2007, 09:44
Ort: Trosa
Kontakt:

Re: Optisk avläsning av vattenmätare

Inlägg av Dowser » 24 jan 2009, 20:40

Hmm, måste fixa en bättre kamera.
Denhär känns inte som den duger som in-data.
Vattenmätare
Vattenmätare
showimg_pda.cgi.jpg (6.58 KiB) Visad 5687 gånger
safecast
Tar hemautomation på allvar
Inlägg: 141
Blev medlem: 10 nov 2006, 00:06
Ort: Stockholm
Kontakt:

Re: Optisk avläsning av vattenmätare

Inlägg av safecast » 24 jan 2009, 22:11

Jag kan inte låta bli att fråga..

I en del länder är vatten rätt dyrt.
Jag har sätt vattenmängdbegränsare och mätsystem för flöde.

Mitt kostar dock typ 16kr/kbm

Vad är syftet?
Mvh
Rickard
Användarvisningsbild
Dowser
Hemautomation - det är mer än en hobby
Inlägg: 811
Blev medlem: 10 mar 2007, 09:44
Ort: Trosa
Kontakt:

Re: Optisk avläsning av vattenmätare

Inlägg av Dowser » 24 jan 2009, 22:45

Bitvis "för att det går" :)
Sen så gillar jag generellt att ha koll på vad jag förbrukar och hur det förbrukas.
Som jag nämnt så har jag även en mindre vattenmätare med puls-utgång som jag skall montera på varmvattnet, något som tillsammans med temperatur och elmätning av varmvattenberedaren kommer visa på dess effektivitet. Något som direkt går att omvandla i pengar och blir väldigt intressant när jag kopplar in solvärmen i framtiden.
Dannemannen
Wannabe
Inlägg: 4
Blev medlem: 02 apr 2010, 22:28
Ort: Västra Frölunda

Re: Optisk avläsning av vattenmätare

Inlägg av Dannemannen » 02 jun 2010, 12:19

Imponerande! Skulle jättegärna vilja komma över scripten.
Skall prova att implementera detta och koppa det som larmfuktion om det går åt vatten när man inte är hemma. Skulle passa bra när jag nu har fått till närvaro avkänning mha bluetooth.

/Daniel
Skriv svar