Fick en liten vild idé här på arbetet, så här innan hemfärd! <b>>fånga upp inströmmen av data från kameran </b> <code>Det räcker väl helt enkelt att kolla på bilden, identifiera området på något sätt (t.ex. en variant av Hough-transform som innefattar en rotation), alternativt säga att det är allt inom ett visst område av bilden. Streckkodsläsare är dyra av en anledning, det finns flera olika internationella och nationella streckkods-fonter, de flesta brukar vara implementerade i läsarens hårdvara. Att läsa en specifik font borde dock inte vara så svårt med kamera, mobil eller något annat, det finns ocr-pennor som fixar streckkoder också... Problematiken med kameravarianten som jag ser det är ev. suddighet och vinklar som streckkoden läses av i. Det är ju inte helt smidigt om det är lite suddigt. Dock finns det flera mjukvaror som kan läsa av streckkoder (såväl 1D som 2D streckkoder) med hjälp av en vanlig scanner. <code>Problematiken med kameravarianten som jag ser det är ev. suddighet och vinklar som streckkoden läses av i. Det är ju inte helt smidigt om det är lite suddigt. Dock finns det flera mjukvaror som kan läsa av streckkoder (såväl 1D som 2D streckkoder) med hjälp av en vanlig scanner. Inget större problem. Har du testat att scanna en streckkod som är det minsta suddig så vet du att det är RIKTIGT RIKTIGT lurigt. Oavsett om det är med en ICA-maxi scanner eller en Intermec scanner för professionelt bruk. Jag är inte jätteinsatt i streckkoder, men har sysslat en hel del med bildbehandling och -analys. Jag tror att problemet med suddigheten har att göra med hur streckkodsläsare fungerar. Jag vet att i Japan är det helpoppis med "kvadratiska" streckkoder. istället för bara streck är det punkter som är fördelade över en kvadrat. Man använder mobilkameror för att läsa av dessa, det borde ju rimligtvis främst vara mjukvara i telefonerna som översätter det korrekt. Då bör man väl ha lite högre noggrannhet, men knappast mycket svårare, nej. Som sagt, det här vör vara en förhållandevis enkel operation. http://en.wikipedia.org/wiki/QR_Code Tror den stora fördelen att köra QR code är att hörnorna är bra riktpunkter. Blir väl rimligtvis enklare att tolka koden om man har exakta förnkringspunkter . 2D Streckkoder har blivit mer och mer använda. T ex DHL och UPS. DHL Använder PDF417 och om jag inte missminner mig så använder UPS Maxicode.Tyda streckkoder, hur komplicerat är det?
Såg att en streckkodsläsare är hyfsat dyr!
Hur pass komplicerat skulle det vara att via ex. en kamera (mobiltelefon) etc kunna fånga upp inströmmen av data från kameran och läsa av den för att se ex. om det finns en streckkod där?
Inte för att jag behöver det, men för utmaningens skull i alla fall, kan ju vara lite roligt att leka med bilder! :)
Kanske kan bli en ansiktsavkodning :)Sv: Tyda streckkoder, hur komplicerat är det?
Är inte det samma sak som att kolla på bilden?
Det räcker väl helt enkelt att kolla på bilden, identifiera området på något sätt (t.ex. en variant av Hough-transform som innefattar en rotation), alternativt säga att det är allt inom ett visst område av bilden.
Sen borde det inte vara några större problem; ta fram totala bredden, hitta alla övergångar svart->vit och vice versa, räkna ut proportioner för varje intervall och översätt sen till vilken kod det motsvarar.Sv:Tyda streckkoder, hur komplicerat är det?
Sen borde det inte vara några större problem; ta fram totala bredden, hitta alla övergångar svart->vit och vice versa, räkna ut proportioner för varje intervall och översätt sen till vilken kod det motsvarar.
</code>
Ah det är sant.. ja man skulle kunna säga att det är ett visst område av bilden, ex. allt inom den utritade rektangeln..
måste leka med det där! :) Skall bara fixa fram den där webkameran så man har något att leka med.. :)Sv: Tyda streckkoder, hur komplicerat är det?
Sv:Tyda streckkoder, hur komplicerat är det?
//JohannesSv: Tyda streckkoder, hur komplicerat är det?
//Johannes</code> Ja det är ju kanske det som är det svåraste när det kommer till kameravarianten.. Om inte annat så blir det lärorikt att försöka sig på det!
Visst det blir det svåra eftersom sannolikheten att de blir sudiga är stor, men programmet skulle ju även kunna användas till att läsa av streckkoder på inscannade dokument om så..
Men det finns algoritmer för det mesta... hur som helst så skulle det vara intressant som ett litet hobbyprojekt. nå väl... det är ju absolut ingen brådska med det.. :)Sv:Tyda streckkoder, hur komplicerat är det?
Vinklar: Borde inte ge någon som helst skillnad.
Suddighet: Vad man får är en sannolikhet för en viss bredd. Alltså; en bredd och en liten diff (standardavvikelse, kan låtsas att den är gaussisk, inte riktigt korrekt).
Det sätter man ihop och får en sannolikhet för en specifik kod. Sen väljer man den koden som är mest sannolik, om den är tillräckligt säker.Sv: Tyda streckkoder, hur komplicerat är det?
Det finns en anledning till att man måste få sin streckkod godkänd innan man får använda den inom t ex transport och logistiksektorn när man använder företag som DHL, Schenker, Posten, PNL, Frigoscandia med flera.
Jag säger inte att det är omöjligt, det går säkert att lösa på något sätt, men det kan nog vara jäkligt svårt med tanke på att streckkoden måste vara läsbar utan suddighet eller liknande.
Eftersom majoriteten av de streckkoder man använder också använder vanliga, läsbara, tecken under, vore det inte lämpligare att med, t ex, en webbkamera läsa av den läsbara delen?
//JohannesSv:Tyda streckkoder, hur komplicerat är det?
Min spontana uppfattning är att det är betydligt lättare att hantera streckkoden än texten i en bild. Så här skulle jag lösa det:
1. Ange på något sätt vilket område som är relevant, t.ex. ett streck tvärs över streckkoden.
2. Varje punkt på detta strecket har ett värde i [0, 255]. Rita upp ett histogram över alla punkter. En bra bild har alla punkter ute i hörnen av histogrammet, i en sämre så rör sig punkterna inåt mitten.
3. Välj ett tröskelvärde (förmodligen ett medelvärde ur histogrammet). Detta avgör när vi slår om från vitt till svart och vice versa.
4. Vi tittar också efter en "högsta punkt" och "lägsta punkt" som motsvarar "definitivt vitt" och "definitivt svart", i en riktig bild kanske det motsvarar 10 och 230. Vi skalar sen om bildens pixelvärden så att de ligger i [0, 1]. Färg över högsta punkt eller under lägsta punkt trunkerar vi till 1 resp. 0.
5. Börja med att kolla från vänster till höger tills vi hittar första vit->svart, och motsvarande från höger.
Detta ger nu totala längden. På så vis blir rotationer, zoomar etc. irrelevanta.
6. Vi börjar sen att gå från vänster till höger, pixel för pixel. För varje ny pixel använder vi pixelvärdet, och adderar. Genom att vi gör detta så får vi en uppfattning om att en linje är suddig genom att längden blir mer osäker. Detta ger en grov uppskattning.
En annan, bättre variant är att vi sparar pixelvärdena och sen för varje övergång får fram en graf, av typ s-kurva. Vi deriverar kurvan och får en typ gauss. Den kan vi sen göra en kurvanpassning på, och får då fram både en standardavvikelse och medelvärde.
7. Med standardavvikelsen från båda ändarna av fältet får vi en fördelning av längden på själva fältet. Med hjälp av denna fördelning så kan vi få fram sannolikheter för olika bredder. Detta bör då vara ganska robust.Sv:Tyda streckkoder, hur komplicerat är det?
Så omöjligt ska det inte vara.
Så här ser den ut:
http://www.adams1.com/pub/russadam/gif/2dsymbolqr.gif
Heter QR Code och är framtagen av Nippodenso ID Systems.Sv: Tyda streckkoder, hur komplicerat är det?
Sv: Tyda streckkoder, hur komplicerat är det?
Ja det blir väl att läsa en hel del.. vore väl kanske mest lämpligt det.. :)
matriser så underbart... Sv:Tyda streckkoder, hur komplicerat är det?
Sv: Tyda streckkoder, hur komplicerat är det?