Ett enkelt OCR-system



Relevanta dokument
Tentamen Bildanalys (TDBC30) 5p

Bildanalys för vägbeläggningstillämplingar

Projekt i bildanalys Trafikövervakning

Grafisk Teknik. Rastrering. Övningar med lösningar/svar. Sasan Gooran (HT 2013)

Tentamen, Programmeringsteknik för BME, F och N

Laboration 4: Digitala bilder

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder

Ansiktsigenkänning med MATLAB

Bildanalys. Segmentering. Föreläsning 7. Split and Merge. Region Growing

Bildbehandling, del 1

Histogramberäkning på en liten bild

Signaler, information & bilder, föreläsning 15

Grafisk Teknik. Rastrering. Övningar med lösningar/svar. Sasan Gooran (HT 2004)

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder

Övervakningssystem. -skillnader i bilder. Uppsala Universitet Signaler och System ht Lärare: Mathias Johansson

Grafiska pipelinens funktion

Kamerans sensor. I kameran sitter bildsensorn som består av en rektangulär platta med miljontals små ljuskänsliga halvledare av CCD eller CMOS typ.

Redigera bilder snabbt och enkelt!

Att använda bildhanteringsprogram, del 2

Lösning till fråga 5 kappa-06

L A B R A P P O R T 1

Tips och idéer för Chrome OS och Google Dokument

3-5 Miniräknaren Namn:

Digitala bilder. Matris, pixel, pixeldjup, signal, brus, kontrast

BILDBEHANDLINGSMETOD INNEFATTANDE BRUSREDUCERING I BILD MED LOKALT ADAPTIV FILTERKÄRNA

DigitalBild del 2 Adobe Photoshop Elements ver 6.0

Bildförbättring i spatial domänen (kap. 3) Bildförbättring (enhancement) Spatial domän. Operatorer. Tröskling (threshold) Gråskale-transformationer

Grunder. Grafiktyper. Vektorgrafik

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Tillämplingar av bildanalys

Medicinska Bilder, TSBB31. Lab3: Mätvärden på Medicinska Bilder

Programmering. Den första datorn hette ENIAC.

Fånga och redigera bilder

Samling och kaffe. Temakväll Bildhantering i släktforskningen Genomgång kring temat. Forska själv. Forska själv. Diskussion kring temat

Digitalt säkrade fingeravtryck

Observera också att det inte går att både se kanten på fönstret och det där ute tydligt samtidigt.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Utskrift av sidindelade antavlor med Disgen

Uppgift 1 ( Betyg 3 uppgift )

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Stackning av bilder JAN NILSSON

Filformat / bildformat

A N D E R S 2 0. En liten informationsbroschyr om RASTRERING VÄND

På en dataskärm går det inte att rita

Skärmtangentbordet som är enkelt att använda både med mus, touchskärmar och interaktiva whiteboards

NATIONELLT KURSPROV I MATEMATIK KURS B VÅREN

Att skapa en bakgrundsbild och använda den i HIPP

Hur jag tänker innan jag trycker på knappen? Lasse Alexandersson

Laboration i Fourieroptik

Torstens Digitalbildguide

Programmering för avläsning och avkodning av QR-koder i MATLAB

Ljusets böjning & interferens

DigitalBild del 2 Adobe Photoshop Elements ver 3.0

ETT FÖRSTORINGSPROGRAM PÅ DATORN ANVÄNDARHANDLEDNING

2 Dataanalys och beskrivande statistik

Matematikundervisningen har under

RACCOON DEVELOPMENT AB

Hjälpmedel: Typgodkänd räknare, Physics Handbook, Mathematics Handbook.

3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.

2011 Studsvik AB PANORAMA-BILDTAGNING. Tony Björkman

Grunderna i. Digital kamerateknik. SM3GDT Hans Sodenkamp SK3BG

Projekt i Bildanalys: Mönsterigenkänning inom bioinformatik

Föreläsning 9 10: Bildkvalitet (PSF och MTF)

Kvalitetsmått: Skärpa

DigitalBild del 2 Adobe Photoshop Elements ver 5.0

Ljusets böjning & interferens

WWAAC Layout Editor. 1. Standard för knapp (kolla att fliken Standard för knapp är vald)

behövs för enhetlighet, tala samma språk, så att användaren kan lära sig och använda det vidare.

En trevlig form av utskrift från Disgen är en grafisk antavla med foton.

PRODUKTINFORMATION. ELFA artikelnr Slav display 4x77mm Slav display 4x165mm

TMS136. Föreläsning 4

Sammanfattningar Matematikboken X

Steg för Steg Att använda Statistics explorer med data från SKLs databas

Bygga linjära modeller! Didrik Vanhoenacker 2007

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Introduktion till begreppet ortsfrekvens

Kristian Pettersson Feb 2016

SE/Rapport_tillganglig_webb_2004_14.pdf 2 webzone.k3.mah.se/k99ac3hl/helenalackmagisterkogniton2003.

Microsoft Office Excel, Grundkurs 1. Introduktion

KOKBOKEN 1. Håkan Strömberg KTH STH

Arbeta med bilder. Lathund kring hur du fixar till bilder från digitalkamera eller Internet så att de går att använda i ett kommunikationsprogram.

Manual Kontrollenhet SMUC EM-100 EM-10

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Kort om optisk inläsning av text

bilder för användning

Brusreducering och Skärpning av bilder. Kalle Prorok Okt 2010

Ett urval D/A- och A/D-omvandlare

Att skriva på datorn

Bildbehandling i frekvensdomänen

WordPad Windows 10 för seniorer

Algoritmer i Treviso-aritmetiken.

Det första du behöver göra är att ta reda på vilken storlek bilden har. Öppna en bild i Photoshop. Välj Bild; Bildstorlek i övre menyn

Laboration 3. Redovisning Uppgifterna skall vara demonstrerade och godkända av en handledare senast måndag 22/2.

Np MaB vt 2002 NATIONELLT KURSPROV I MATEMATIK KURS B VÅREN 2002

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Bonad ca 21,5 x 21,5 cm. Du behöver ;

Perkins Smart Brailler Manual

Stokastisk geometri. Lennart Råde. Chalmers Tekniska Högskola och Göteborgs Universitet

TEM Projekt Transformmetoder

Algoritmer, datastrukturer och komplexitet

Transkript:

P r o j e k t i B i l d a n a l y s Ett enkelt OCR-system av Anders Fredriksson F98 Fredrik Rosqvist F98 Handledare: Magnus Oskarsson Lunds Tekniska Högskola 2001-11-29 - Sida 1 -

1.Inledning Många människor har upptäckt fördelen med att arbeta med ordbehandlare. Detta kräver dock att texten finns i digital form, dvs sparad som en datorfil. Vanligtvis sker detta genom att texten skrivs direkt i ordbehandlaren med hjälp av ett tangentbord. I många fall fungerar detta väldigt bra, men det finns situationer då en annan form av inläsning skulle vara praktisk. En sådan situation är då texten man vill redigera endast finns på papper. Alternativen är då att skriva in texten för hand i en ordbehandlare eller att använda ett datorprogram som skapar en datorfil av texten på pappret. Detta senare alternativ kallas Optical Character Recognition (optisk teckenigenkänning) och systemet som gör detta kallas således OCR-system. Detta är grundprincipen bakom en produkt kallad C-Pen som är en elektronisk överstrykningspenna. På själva pennspetsen sitter en liten kamera som läser in bilder av texten. Ett inbyggt OCR-system gör sedan om dessa bilder av texten till digital text. Då detta är gjort kan den digitala informationen överföras till en dator med ordbehandlare för redigering eller så kan orden i texten översättas till något annat språk med hjälp av en databas och visas på en display på sidan av pennan. Ett annat användningsområde är som hjälpmedel till synskadade. Då texten finns i datoriserad form kan denna översättas till blindskrift för att sedan skrivas ut som sådan på en specialskrivare. Alternativt kan texten, med hjälp av en dator, omvandlas till tal ( eller i alla fall något man kan likna vid tal.) I detta projekt har vi skapat ett enkelt OCR-system i MATLAB. Anledningen till att det kallas enkelt är att det endast fungerar för typsnittet Times New Roman samt för ett begränsat antal tecken, de små bokstäverna a-ö. Texten som skall bearbetas antas dessutom var inläst rakt, dvs raderna är parallella med bildunderkanten. Vikten i detta program har lagts på segmentering och identifiering medan inläsning och brusreducering endast behandlas ytligt. Detta beror på att vi fann de förstnämnda stegen mer intressanta. 2. Inläsning och brusreducering En bild med 256 gråskalenivåer läses in på något sätt, exempelvis via scanner eller digitalkamera. I vårt fall har vi använt oss av bilder från Adobe Photoshop. Därefter konverteras den till bitmaps-format och importeras till MATLAB. För att undertrycka eventuellt brus i bilden och för att få en binär bild till segmenteringen trösklas denna, dvs intensiteter över ett visst värde sätts till ett (i fortsättningen kallade svarta pixlar) och de under till noll (vita pixlar), varpå en binär bild fås.( Se Appenix. OCRThreshold) Om ingångsbilden är av god kvalitet samt om trösklingsnivån är lämpligt vald kommer denna bild att innehålla tillräcklig information för att kunna segmentera ut bokstäverna. Om bilderna varit av sådan kvalitet att tröskling inte varit tillräckligt kan ett medelvärdesfilter användas. Brus kännetecknas av att det är - Sida 2 -

högfrekvent, d.v.s. skiljer sig markant i intensitet från sin omgivning. Då ett medelvärdesfilter används minskas denna till medelnivån av denna och dess näraliggande pixlar. Eftersom brus var högfrekvent sänks dess intensitet till ett påtagligt lägre värde som troligen hamnar under trösklingsvärdet och bruset försvinner. Nackdelen med denna metod, som gör att vi inte använder denna, är att skarpa kanter i bilden smetas ut på samma sätt som brus. Detta får till följd att bredden och höjden på bokstäverna ändras och således även pixelantalet. Vår identifieringsmetod bygger på dessa, varför en ändring av dessa är klart olämplig. Ett bättre alternativ hade varit att använda ett medianfilter, men vår test av detta visade att det tog alldeles för lång tid. För att ytterligare undertrycka en del av bruset kan man utnyttja av att väldigt små segment, i detta sammanhang sammanhängande svarta pixlar, troligtvis är brus och således kan sorteras bort.(se Appendix OCRSegment ) 3. Segmentering Efter att merparten av bruset filtrerats bort är nästa steg att segmentera ut de sammanhängade svarta pixlarna, vilka senare i programmet skall identifieras som bokstäver. Det finns olika metoder att göra detta på. I detta system börjar sökandet efter svarta pixlar högst upp i vänstra hörnet och fortsätter nedåt rad för rad tills en svart pixel påträffas. När väl en svart pixel påträffas börjar själva segmenteringen. De närliggande pixlarna undersöks om också dessa är svarta och om så är fallet undersöks även deras grannar. Allting sker genom rekursiva anrop av en funktion findsegment. För att inte en granne ska identifiera den pixel, som hittade grannen, som svart, tas alla funna pixlar bort, dvs deras värde sätts till 0 (= vit pixel). Koordinaterna för alla svarta grannpixlar sparas och efteråt beräknas en bild utifrån dessa. Även koordinaterna för övre vänstra hörnet beräknas och sparas, liksom bredden och höjden. Med närliggande pixlar menas i detta fall pixlar som ligger rakt under eller ovan, rakt åt höger eller vänster samt diagonalt från pixeln. Detta synsätt på närliggande pixlar kallas närliggande pixlar i D-8- metriken. (Se Appendix OCRSegment) - Sida 3 -

4. Identifiering En bra identifiering skall bygga på egenskaper som är specifika för varje bokstav. Om detta inte går att uppnå får man använda sig av många olika egenskaper som tillsammans ger en bra identifiering av vilken bokstav det rör sig om. Detta OCR-system bygger på följande egenskaper (Se Appendix. OCRClassify): - Kvoten mellan höjd och bredd. Bredden och höjden sparades för varje segment. Detta gör att man t.ex. kan skilja på om segmentet innehåller ett a (kvot nära ett) eller h (kvot större än ett). I och med att en kvot används blir egenskapen oberoende av teckenstorleken. - Kvoten mellan antalet svarta pixlar och totala antalet pixlar i segmentet. Genom att beräkna medelintensiteten för ett segment får man en teckenstorleksoberoende egenskap som motsvarar arean, dvs antalet svarta pixlar dividerat med totala antalet pixlar. - Kvoten av medelintensiteterna i de båda segment som bildas då segmentet delas på bredden. Ovanstående två kvoter har svårt att skilja på vissa bokstäver t.ex. b, d, p, q, r och g. Alla dessa har nämligen samma höjd-bredd-förhållande och medelintensitet av svarta pixlar. För att lösa detta delas segmentet upp i två halvor, en vänsterhalva och en högerhalva. Därefter beräknas medelintensiteten i dessa varpå en egenskap erhålls som kan identifiera många av dessa bokstäver. - Kvoten av medelintensiteterna i de båda segment som bildas då segmentet delas på höjden. Vissa bokstäver, exempelvis e och o (Se Fig.2), ger liknande resultat i alla tre ovanstående identifieringskvoter. Detta löses på motsvarande sätt som ovan fast att uppdelningen i nya segment sker på höjden så att en undre och övre halva av segmentet bildas. - Specialfallet o och z samt n och x. Bokstäverna o och z samt n och x är trots ovanstående identifieringsalgoritmer fortfarande svåra att skilja på. Detta löses genom en kontroll av mittpixelns intensitet. I o och n är denna vit medan i z och x är denna svart. (Se Appendix OCRIdentify) - Sida 4 -

För att veta vilken bokstav den uträknade egenskapen, i detta fall kvoten, tillhör, har en databas skapats för varje egenskap för alla bokstäver. Denna innehåller en undre gräns och en övre gräns. Den undre gränsen är beräknad som två standardavvikelser under medelvärdet och den övre två standardavvikelser över medelvärdet. Databasen byggdes upp genom inläsning av bildfiler med fem bokstäver av samma sort men av olika storlek. Bokstavens medelvärden och standardavvikelser för de olika egenskaperna beräknades med hjälp av dessa fem fall. (Se Appendix OCRCreateDatabase). Antalet testbokstäver är alltså väldigt litet ur statistisk synvinkel. Av praktiska (tidsmässiga) skäl användes dock enbart dessa fem. Identifieringen sker geonom successiv utsållning efter samma ordning som de olika egenskaperna presenterades på föregående sida. Först jämförs alltså den uträknade bredd-höjd-kvoten med motsvarande databas. I detta skede sållas alltså bokstäver som g, f och andra avlånga bokstäver bort om segmentet innehåller ett e, a eller annan kvadratisk bokstav. De möjliga kandidaterna går sedan vidare till nästa steg där medelintensiteten jämförs. I detta skede skiljs bokstäver som innehåller mycket håligheter ut från de som är av mer kompakt natur. Om t.ex. både f och l har klarat sig vidare från förra steget är det stor sannolikhet att en utsållning sker i detta steg då l är av mer kompakt natur än f. På samma sätt jämförs de två sistnämnda egenskaperna. För att kontrollera om det rör sig om någon av våra svenska specialtecken används följande algoritmer: Algoritmen för att identifiera å är följande: - En ring upptäcks. - Kontrollerar om det finns ett a under denna. - Om detta är fallet ändras detta a till ett å. - Ringen tas bort oberoende om ett a hittas eller inte. - Sida 5 -

Algoritmen för att identifiera ä och ö är följande: - En punkt upptäcks. - Kontrollerar om det finns en punkt på lämpligt avstånd åt höger. Finns detta inte tas punkten bort. - Om ytterligare en punkt påträffas undersöks segmentet under. - Är detta ett a ändras detta till ett ä och är det ett o ändras detta till ett ö. - De båda punkter tas bort oberoende av om ett a eller o hittas eller ej. Anledningen till att punkten kan kastas bort beror på att i och j är definerade i vårt program utan prickar. Att man endast ser efter om det finns en prick åt höger beror på att segmenteringen går uppifrån nedåt från vänster till höger. Alltså kommer den vänstra pricken att upptäckas först. Systemet kontrollerar även radbyten. Detta görs genom att kolla ifall en rad endast består av vita pixlar. Även mellanslag kontrolleras genom att mäta avståndet mellan två tecken och jämföra det med en tredjedel av bredden på ett av tecknen. 5. Sammanfattning Optisk teckenigenkänning (OCR) sker i följande steg: - Inläsning Bilden läses in på lämpligt sätt t.ex. via scanner eller digitalkamera. De bilder vi provat programmet på är skapade med Adobe Photoshop. - Brusreducering Bilden filtreras så att endast bokstäverna finns kvar. I detta system sker detta genom tröskling och segment som är mindre än de minsta bokstäverna nonchaleras. - Segmentering Alla svarta sammanhängande pixlar i bilden segmenteras ut med hjälp av en rekursiv algoritm som undersöker varje svart pixels grannar enligt D-4-metrik. Till varje segment sparas positionen i ursprungsbilden samt bredd och höjd. - Identifiering För att urskilja vilken bokstav som finns i segmentet används bredd-höjd-kvoten, medelintensiteten i hela segmentet, kvoterna mellan medelintensiteterna i vänster och höger halva samt övre och undre samt en funktion som undersöker intensiteten på mittpixeln i segmentet. Alla dessa är storleksoberoende, vilket ökar användningsområdet. - Sida 6 -

Själva identifieringen sker genom successiv utsållning, dvs de bokstäver som ej är möjliga efter jämförelse med databasegenskaperna stryks. - Sida 7 -

A. Testkörningar Följande bilder gjordes i Adobe Photoshop och kördes i OCRsystemet med följande resultat: Test 1. >anders >och >fredrik Test 2. >detta_program >är_så_grymt >coolt - Sida 8 -