Høgskolen i Østfold Avdeling for informasjonsteknologi Fag IAD33506 Bildebehandling og mønstergjenkjenning Laboppgave nr 4 Optisk lesing av en lottokupong Halden 22.10.2012 17.10.12 Mindre revisjon Log GKS 17.10.11 Mindre revisjon Log GKS 16.10.09 Revidert Log GKS 24.10.08 Log GKS 24.10.07 Log GKS 30.10.06 Log GKS 10.03.06 Log GKS 01.02.05 Ny oppgave Log LMN Log, LMN Rev. Dato. Beskrivelse. Skrevet av Kontrollert Godkjent Fil : Skrevet ut av : sl 22.10.2012 13:19:00 Antall sider : 6
Labkjøring: Alle gruppene må senest ha kjørt oppgaven i tidsrommet 22.10.2012-26.10.2012. Innleveres senest mandag 29.10.2012 kl. 12.00!! Dette er likt for alle laboppgavene med mindre annet er beskrevet særskilt i oppgaven. Skriftlig del: Det skal være en skriftlig labbesvarelse i kortversjon. Alle bilder som er krevd vedlegges. Pass på at de kommer i kronologisk rekkefølge. Alle spørsmål i laboppgaveteksten skal besvares! Dersom gruppen har skrevet egne MATLAB-programmer, skal de vedlegges. En beskrivelse av hvordan gruppen har jobbet med jobben. Her inngår hvem har gjort hva og hvor mange timer den enkelte har brukt. Til slutt skal rapporten inneholde en konklusjon som oppsummerer oppgaven: hva gruppen har lært, hvilke problemer oppsto underveis og hvilke forbedringer bør gjøres. Oppgavens vanskelighetsgrad? (1 (lett) 5 (meget vanskelig)). Innføring i bildebehandling - HIØ side 2
Innledning. Oppgaven går ut på optisk å avlese informasjon fra en lottokupong i form av et skannet bilde. Formål. Benytte teknikker fra bildebehandling på en industriell applikasjon. Få innsikt i problemstillingene som oppstår ved å benytte digitale verktøy til innhenting av informasjon skrevet for hånd. Koble sammen kunnskap fra bildeanalyse og mønstergjenkjenning. Utstyr. Datamaskin med installert MatLab med toolboksene Image Processing Toolbox (IPC) og Signal Processing Toolbox (SPT). En eller flere ikke utfylte lottokuponger. Litteratur. Læreboken i faget. Innføring i bildebehandling - HIØ side 3
Oppgaven Optisk innhenting av informasjon fra håndskrevne skjemaer, kuponger, etc. har etterhvert blitt vanlig for raskere å kunne systematisere informasjon samtisdig som rutinearbeid blir automatisert. Optiske system som benyttes til automatisk avlesning er avhengig av å være både robust og nøyaktig. Slike systemer bør også ha mulighet til å plukke ut enkelte skjemaer eller kuponger som er for dårlig utfylt i stedet for å avlese ukorrekt. I denne oppgaven skal vi benytte lottokupongen fra Norsk Tipping A/S. Feltene på den er designet for lettest mulig å avlese den hurtig og korrekt. Figur 1 viser en tom, ikke utfylt kupong av eldre årgang. Dagens kupong er svært beslektet. Lottokupongen har fire typer felter som kan utfylles avhengig av hvordan den som spiller ønsker å fordele innsatsen sin. Spilleren skal utfylle minst én enkelt lottorekke med sju kryss for at kupongen skal være gyldig. Ukefeltet angir hvor mange uker kupongen skal gjelde for. Gangefeltet benyttes for å øke innsatsen på rekkene som er utfylt. Systemfeltet benyttes bare ved systemtipping for å dobbeltkontrollere at antallet kryss er satt riktig når det er utfylt mer enn sju tall i én rekke,. Basert på kryssene satt i disse tre feltene, bestemmes antall rekker og spillerens innsats. For ordens skyld nevnes det at prisen for en enkelt rekke for tiden er kr 4,-. Figur 1: En lottokupong med rekker, ukefelt, gangefelt og systemfelt Innføring i bildebehandling - HIØ side 4
Oppgaven deles i én obligatorisk og én frivillig del Obligatorisk del Del 1 Innlesning og forprosessering Fyll ut to kuponger for hånd med blå kulepenn: Kryss av sju tall i én rekke på den ene kupongen, kall bildet lotto_enkel. Kryss av sju andre tall i én rekke og i tillegg kryss av ukefelt og gangefelt på den andre kupongen, kall bildet lotto_uker. Gjennomfør følgende skanningsprosess: Skann en tom (ikke-utfylt) kupong. Beskjær og skaler til passende størrelse. Kall den for lotto_tom. Skann de to utfylte kupongene. Beskjær og skaler dem slik at de får form lik den beskårne tomme kupongen. Husk at et fargebilde består av en rød, grønn og blå komponent. Undersøk fargebildenes fargekomponenter for å finne ut hvilken som egner seg best for laboppgaven. Start med å lese inn lotto_enkel og lotto_uker i MatLab. Vi skal så prøve å gjøre informasjonen i bildene lettere tilgjengelig, slik at vi unngår feil avlesning. Prøv noen av morfologioperatorene, som dere kjenner fra kapittel 7 (jf. laboppgave nr. 3) med egnet strukturelement med målet å få de håndskrevne kryssene klarere fram. (Det er også andre kjente teknikker.) Kommenter resultatene. Prøv deretter å terskle bildene på en smart måte, slik at kryssene blir fremhevet. Muligens må flere terskelverdier benyttes. Nå har gruppen gjennomført en preprossering på to kuponger. Er resultatet blitt bedre enn å terskle direkte på de opprinnelige bildene? Innføring i bildebehandling - HIØ side 5
Del 2 Avlesning av en kupong Oppgaven går ut på å skrive en rutine som oppdager kryssene på kupong lotto_enkel og dermed finner ut hvilke tall som er krysset av finner ut hvor mye det koster å levere inn kupong lotto_uker Dette kan gjøres på flere måter, hvor to relativt enkle forslag beskrives kort nedenfor. Gruppen trenger ikke benytte noen av dem, de er kun ment som forslag. Sammenlikning med en kjent kupong En mulighet er å skanne én ikke utfylt kupong og dimensjonere den slik at den er lik de utfylte kupongene i størrelse og farge. Differansen mellom de to bildene, muligens med en etterfulgt terskling, vil kunne gi en brukbar deteksjon av kryssene. Bildematrisens koordinater vil deretter kunne benyttes til geografisk å plassere kryssene på kupongen, slik at informasjon om selve lottorekken og systeminformasjonen kan avleses i forhold til den kjente kupongen. Direkte avlesning En mer sofistikert metode vil være å ha inndelt på forhånd kupongen i områder ut fra matrisekoordinatene, slik at en algoritme vil kunne sjekke de forskjellige områdene direkte for avkrysning. For eksempel kan det letes spesifikt etter visse pikselverdier i et område hvor det er mulighet for en avkrysning. På denne måten vil deteksjonen muligens bli bedre enn den forrige metoden. Del 3 Systemtesting Til slutt må dere rapportere om systemet klarte korrekt avlesning av kupongene, og gjerne hvor lang tid dette tok (funksjonene tic og toc i MatLab). Prøv gjerne med andre kuponger for å teste systemets robusthet. Frivillig del Utfyll en tredje kupong ved å krysse av i alle rekkefeltene og kall den lotto_flere. Oppgaven går ut på å lese ut nødvendig informasjon i tråd med det som ble gjort i obligatorisk del. Innføring i bildebehandling - HIØ side 6