Avläsning av en display med Java på Raspberry Pi

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
meconer
EF Sponsor
Inlägg: 491
Blev medlem: 27 april 2010, 20:07:46
Ort: Järfälla

Avläsning av en display med Java på Raspberry Pi

Inlägg av meconer »

Jag tänkte jag skulle dela med mig av koden till mitt projekt för att läsa av en display på en utrustning för att mäta in verktyg för cnc-maskiner. Koden ligger på https://github.com/Meconer/ZollerDisplayAnalyzer.

Den läser av bilder som tas med en Raspberry Pi med kameramodul. Bilderna ser ut så här:
zoller32.jpg
Jag hoppas att det kan väcka lite intresse. Hör av er om ni har några frågor.

Edit:
Jag har lagt in en beskrivning på github som förklarar hur sifferavläsningen går till. Kika gärna.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av meconer 22 maj 2016, 14:18:44, redigerad totalt 1 gång.
Användarvisningsbild
maDa
Inlägg: 4073
Blev medlem: 11 november 2005, 22:13:16
Ort: Malmö
Kontakt:

Re: Avläsning av en display med Java på Raspberry Pi

Inlägg av maDa »

Hur lång tid tar det för att analysera en bild med Java för RPi:n?
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Avläsning av en display med Java på Raspberry Pi

Inlägg av Andax »

Om man utnyttjar faktum att siffrorna är 7-segmentselement, så räcker det i princip att titta på 7 pixlar (eller 7 fält om man vill göra det lite mer robust) per siffra, och sedan avkoda dessa till ett tal mellan 0-9.
meconer
EF Sponsor
Inlägg: 491
Blev medlem: 27 april 2010, 20:07:46
Ort: Järfälla

Re: Avläsning av en display med Java på Raspberry Pi

Inlägg av meconer »

Det tar ungefär 4 sekunder från det att man trycker på knappen till att resultatet är klart.

Nu är det inte 7-segmentsdisplayer i det här fallet utan 12. En del tid går åt till att avgränsa
området som innehåller siffror. Armen där pajen sitter går att vika undan så jag vill ha lite
säkerhet om den inte hamnar i exakt samma läge som innan. Det innebär ett litet problem
om den sista siffran är en etta. Då lyser nämligen inte segmenten längst till höger utan det
är de två mittensegmenten som är tända. Om man då tittar på vilket område som har tända
pixlar så tappar man nästan halva sista siffran. Om man då delar upp området i nio delar
(en för varje sifferposition) så missar man lite. Därför görs en separat koll på sista siffran
innan den uppdelningen görs.

Decimalpunkten ställde till lite bekymmer i den förra versionen jag hade. I den här så plockar
jag helt enkelt bara bort den. Den är ändå alltid i samma position.
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Avläsning av en display med Java på Raspberry Pi

Inlägg av Andax »

Principen är ju samma för 12 eller 7-segment. Ett tips att hitta streck är hough-transform (https://en.wikipedia.org/wiki/Hough_transform). Mha av den borde man kunna hitta positionen på siffrorna hyffsat bra.
meconer
EF Sponsor
Inlägg: 491
Blev medlem: 27 april 2010, 20:07:46
Ort: Järfälla

Re: Avläsning av en display med Java på Raspberry Pi

Inlägg av meconer »

Intressant länk Andax. Jag har inte läst några formella teorier om teckenigenkänning utan gått efter eget huvud. Koden har fungerat bra i ett par år men den har läst fel någon enstaka gång. Till den senaste versionen har jag förändrat väldigt lite och också gjort ett testprogram så att jag lättare kan analysera avläsningen på problembilder. Det är testprogrammet jag har lagt upp på github. Där är analysdelen exakt samma som jag kör i det riktiga avläsningsprogrammet som körs på pajen.

Programmet som körs på pajen har en del andra funktioner förutom bildanalysen. Den översätter ju siffrorna till textrader i filer som man sedan kör in i våra olika cnc-maskiner. På så sätt kommer man undan en del felkällor och snabbar upp maskinriggningen en hel del. Den senaste versionen har också fått en liten knapp som man kan klicka på om man upptäcker att en felavläsning skett. Då sparas den bilden undan med en tidsstämpel så att jag kan analysera vad som gått fel i efterhand. Faktiskt så har jag ännu inte fått några rapporter om felavläsningar i den här versionen.

Kika gärna i koden om ni vill. Om man kör netbeans till exempel så kan det kanske vara idé att klona den från github och stega igenom koden om man är intresserad. Jag har försökt kommentera en hel del även om det såklart skulle kunna vara mycket mer. Ställ också gärna frågor. Jag ser det som ett sätt att bli bättre på att programmera.
meconer
EF Sponsor
Inlägg: 491
Blev medlem: 27 april 2010, 20:07:46
Ort: Järfälla

Re: Avläsning av en display med Java på Raspberry Pi

Inlägg av meconer »

Bumpar upp tråden eftersom jag lagt till en beskrivning av hur sifferavläsningen går till på github.
meconer
EF Sponsor
Inlägg: 491
Blev medlem: 27 april 2010, 20:07:46
Ort: Järfälla

Re: Avläsning av en display med Java på Raspberry Pi

Inlägg av meconer »

Jag lade upp en artikel om koden på codeproject.com

http://www.codeproject.com/Articles/110 ... ED-display
Skriv svar