PAINETUN KOODIN LUKEMINEN KAMERAPUHELIMELLA



Samankaltaiset tiedostot
PANKKIVIIVAKOODI-OPAS. Versio 5.3

PIKSELIT JA RESOLUUTIO

Viivakoodin viiteopas

Tehdään laadukas painotuote

Kuvan pehmennys. Tulosteiden hallinta. Tulostaminen. Värien käyttäminen. Paperinkäsittely. Huolto. Vianmääritys. Ylläpito.

S Havaitseminen ja toiminta

VERKOSTO GRAAFINEN OHJE

Älypainatus. Mikko Nuutinen. Mikko Nuutinen /

KVPS Tukena Oy Graafinen ohjeisto 04/2018

Digitaalinen signaalinkäsittely Kuvankäsittely

KÄYTTÖLIITTYMÄT. Visuaalinen suunnittelu

Tämän värilaatuoppaan tarkoitus on selittää, miten tulostimen toimintoja voidaan käyttää väritulosteiden säätämiseen ja mukauttamiseen.

Kirjoita ohjelma jossa luetaan kokonaislukuja taulukkoon (saat itse päättää taulun koon, kunhan koko on vähintään 10)

Matterport vai GeoSLAM? Juliane Jokinen ja Sakari Mäenpää

Tulostuslaatuopas. Tulostuslaatuongelmien selvittäminen. Tyhjiä sivuja. Tulostuslaatuopas

ViNOn graafinen ohjeisto, alpha

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

JOHDATUS TEKOÄLYYN TEEMU ROOS

Graafinen ohjeisto 1

VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA. Lauri Karppi j SATE.2010 Dynaaminen kenttäteoria DIPOLIRYHMÄANTENNI.

d sinα Fysiikan laboratoriotyöohje Tietotekniikan koulutusohjelma OAMK Tekniikan yksikkö TYÖ 8: SPEKTROMETRITYÖ I Optinen hila

Tunnuksen päivitys

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma

Elisa Kirja. PDF e-kirjojen käsittelyohjeet

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä?

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Opetusmateriaalin visuaalinen suunnittelu. Kirsi Nousiainen

Bluetooth-yksikkö BU-20 Tulostusopas. Sisällys Ennen käyttöä...2 Varotoimet...3 Tulostaminen...4

Kenguru 2010 Benjamin (6. ja 7. luokka) sivu 1 / 5

Digitaalitekniikan matematiikka Luku 13 Sivu 1 (10) Virheen havaitseminen ja korjaus

3D-kuvauksen tekniikat ja sovelluskohteet. Mikael Hornborg

Passihakemukseen liitettävän valokuvan on täytettävä tässä ohjeessa annetut vaatimukset.

SKANNAUSVINKKEJÄ. Skannausasetukset:

Helsingin seitsemäsluokkalaisten matematiikkakilpailu Ratkaisuita

4. Varastossa on 24, 23, 17 ja 16 kg:n säkkejä. Miten voidaan toimittaa täsmälleen 100 kg:n tilaus avaamatta yhtään säkkiä?

Digikuvan peruskäsittelyn. sittelyn työnkulku. Soukan Kamerat Soukan Kamerat/SV

FlyMarker PRO merkintälaite. Mark like a Professional

JOHDATUS TEKOÄLYYN TEEMU ROOS

Kenguru 2011 Benjamin (6. ja 7. luokka)

Malleja ja menetelmiä geometriseen tietokonenäköön

Tee-se-itse -tekoäly

1 Laske ympyrän kehän pituus, kun

LED VALON KÄYTTÖSOVELLUKSIA.

1. STEREOKUVAPARIN OTTAMINEN ANAGLYFIKUVIA VARTEN. Hyvien stereokuvien ottaminen edellyttää kahden perusasian ymmärtämistä.

KUVAMUOKKAUS HARJOITUS

Tänään ohjelmassa. Kognitiivinen mallintaminen Neuraalimallinnus laskarit. Ensi kerralla (11.3.)

Opasteet. Helsinki kaikille -projekti, Vammaisten yhdyskuntasuunnittelupalvelu (VYP) ja Jyrki Heinonen

Miehittämättömän lennokin ottamien ilmakuvien käyttö energiakäyttöön soveltuvien biomassojen määrän nopeassa arvioinnissa

Algebralliset menetelmät virheenkorjauskoodin tunnistamisessa

Pelaajat siirtävät nappuloitaan vastakkaisiin suuntiin pelilaudalla. Peli alkaa näin. Tuplauskuutio asetetaan yhtä kauas kummastakin pelaajasta.

Luento 6: 3-D koordinaatit

SISÄLLYS JOHDANTO 5. KUVAT 1. TUNNUS - SANOMA 6. VERKKOSIVUT 2. TUNNUS - KÄYTTÖ 7. TUOTEKORTIT JA ESITTEET. 2.1 Suoja-alue. 7.

Osoitin ja viittaus C++:ssa

Nimettömien tietojen lähettäminen Lenovolle

Esittelyssä AutoDome Easy Täydellinen keskikokoisiin kohteisiin

Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä

Ohjelmoinnin perusteet Y Python

Ostolasku: 100 % verkkolaskuja CloudScanratkaisun avulla.

1 LOGO JA SEN KÄYTTÖ 1.1 LOGO JA TURVA-ALUE VÄRILLINEN LOGO LOGO VÄRILLISELLÄ POHJALLA MUSTA LOGO 7 1.

Suorakulmainen kolmio

11.4. Context-free kielet 1 / 17

Kenguru 2019 Benjamin 6. ja 7. luokka

Verkkodatalehti. Lector65x System Core Lector65x System SEURANTA- JA DIMENSIOINTIJÄRJESTELMÄT

Suomi Finland 100 -tunnus. Graafinen ohjeisto Lokakuu 2015

Kenguru 2019 Mini-Ecolier 2. ja 3. luokka Ratkaisut Sivu 0 / 11

Aki Taanila LINEAARINEN OPTIMOINTI

1. Skannaus ja tekstintunnistus (OCR) verkkoskannerilta

Vapo: Turveauman laskenta 1. Asennusohje

esimerkkejä erilaisista lohkokoodeista

Ohjeet e kirjan ostajalle

OHJE RFID - Suoraohjauskoodin muodostamiseen Toshiba SX sarjan tulostimilla

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Ohjelmoinnin perusteet Y Python

Kenguru 2011 Cadet (8. ja 9. luokka)

Eye Pal Solo. Käyttöohje

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Toinen harjoitustyö. ASCII-grafiikkaa

Kun yritän luoda täydellisen kuvan, käytän aina tarkoin määriteltyjä

Ulko- ja sisärenkaiden merkinnät ja sopivuudet

Verkkodatalehti. Systemtyp IRS100-x53xxxx ICR89x System SEURANTA- JA DIMENSIOINTIJÄRJESTELMÄT

Tehtävä Vastaus

y=-3x+2 y=2x-3 y=3x+2 x = = 6

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

Mobiilit luontorastit

Puzzle-SM Loppukilpailu Oulu

Datatähti 2019 loppu

S OPTIIKKA 1/10 Laboratoriotyö: Polarisaatio POLARISAATIO. Laboratoriotyö

Koodausteoria, Kesä 2014

MONISTE 2 Kirjoittanut Elina Katainen

Projektisuunnitelma. Projektin tavoitteet

FOTONETTI BOOK CREATOR

Ratkaisu: Maksimivalovoiman lauseke koostuu heijastimen maksimivalovoimasta ja valonlähteestä suoraan (ilman heijastumista) tulevasta valovoimasta:

Differentiaali- ja integraalilaskenta

QR-koodit INNOSTAVAA HAUSKAA PALJON KÄYTTÖTAPJA HELPPOA ILMAISTA MOTIVOIVAA

Tulostuslaatuopas. Tyhjät tai valkoiset sivut. Tumma tuloste. Tulostuslaatuopas. Sivu 1/16

Kenguru 2012 Junior sivu 1 / 8 (lukion 1. vuosi)

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

Kenguru 2014 Student sivu 1 / 8 (lukion 2. ja 3. vuosi)

Transkriptio:

TEKNILLINEN KORKEAKOULU Puunjalostustekniikan osasto Juha Koivu PAINETUN KOODIN LUKEMINEN KAMERAPUHELIMELLA Diplomityö, joka on jätetty opinnäytteenä tarkastettavaksi diplomi-insinöörin tutkintoa varten Espoossa 20.2.2004. Valvoja ja ohjaaja Professori Pirkko Oittinen

TEKNILLINEN KORKEAKOULU Puunjalostustekniikan osasto DIPLOMITYÖN TIIVISTELMÄ Tekijä Päiväys Juha Koivu 5.2.2004 Sivumäärä Työn nimi Painetun koodin lukeminen kamerapuhelimella 106 Professuuri Graafinen tekniikka Työn valvoja Professori Pirkko Oittinen Työn ohjaaja Professori Pirkko Oittinen Diplomityön tavoitteena oli selvittää, minkälaisia painettuja koodeja voidaan lukea digitaalisen kameran avulla. Erityisesti haluttiin tutkia mobiililaitteiden soveltuvuutta kyseiseen käyttötarkoitukseen. Tämän kaltaisten sovellusten on oltava käytettävyydeltään korkeatasoisia, jotta käyttäjät kokisivat ne hyödyllisiksi ja miellyttäviksi. Yksi käytettävyyden tärkeimmistä osatekijöistä on koodin luettavuus, johon tässä tutkimuksessa perehdyttiin. Kirjallisuuden avulla tutustuttiin erilaisiin menetelmiin, joilla painettuja koodeja voidaan lukea digitaalista kameraa käyttäen. Käytetyimmät menetelmät ovat viiva- sekä matriisikoodit, joilla tietoa voidaan koodata kaksisävyisiin symboleihin. On olemassa myös monimutkaisempia menetelmiä, mutta tämänhetkisten mobiililaitteiden suorituskyky ei riitä niiden käsittelyyn. Laitteissa olevien kameroiden alhainen laatu luo teknologisia haasteita, joiden ratkaiseminen on tärkeää tämän kaltaisten sovellusten käytettävyyden kannalta. Kokeellisessa osassa tutustuttiin erilaisten symbolivaihtoehtojen luettavuuteen. Lisäksi tämänhetkisissä mobiililaitteissa olevien kameroiden laatua ja ominaisuuksia verrattiin hyvälaatuisiin digitaalisiin kameroihin tulevaisuuden mahdollisuuksia ajatellen. Mittauksissa selvitettiin, miten symbolityyppi sekä kameran laatu ja kuvausasetukset vaikuttivat luettavuuteen. Muuttujina olivat kameran resoluutio, kuvanpakkaussuhde, kuvausetäisyys ja -kulma sekä linssien polttoväli. Lisäksi tarkasteltiin symbolityypin, koodatun tietomäärään ja symbolin koon vaikutusta luettavuuteen. Erityisesti linssin tarkennuskyvyn ja kuvausresoluution havaittiin vaikuttavan voimakkaasti luettavuuteen. Sekä viiva- että matriisikoodien luettavuus oli kohtuullinen, mutta matriisikoodien monipuoliset ominaisuudet soveltuvat paremmin tällaiseen käyttötarkoitukseen. Mittausten perusteella voidaan todeta, että painettujen koodien lukeminen on mahdollista tämänhetkisillä mobiililaitteilla. Toimivuutta kuitenkin rajoittaa laitteiden alhainen tiedonkäsittelyteho, linssien heikko lähitarkennuskyky sekä kameroiden pieni resoluutio. Teknisten ominaisuuksien parantuessa voidaan lukea pienempiä ja monimutkaisempia koodeja entistä helpommin ja luotettavammin. Kieli Suomi

HELSINKI UNIVERSITY OF TECHNOLOGY Department of Forest Products Technology ABSTRACT OF MASTER S THESIS Author Date Juha Koivu February 5, 2004 Pages Title of Thesis Reading a Printed Code With a Camera Phone 106 Chair Technology of Graphic Arts Supervisor Professor Pirkko Oittinen Instructor Professor Pirkko Oittinen The object of the master s thesis was to study what kind of printed codes can be read using a digital camera. Especially the applicability of mobile devices for the use in question was studied. In order to make the users experience of reading printed codes useful and appealing, applications have to provide a high-level of usability. One of the most important factors of usability is readability, which is examined in this research. Different kind of methods to read printed codes using a digital camera were explored. Applicable methods include bar codes and matrix codes which are used to encode data in bi-level symbols. More sophisticated methods also exist but the performance of present-day mobile devices is insufficient to process them. The low quality of the cameras in these devices introduces technological challenges which have to be addressed in order to achieve good usability. Readability of various symbol types was studied in the empirical portion of this research. In addition the imaging quality and properties of cameraphones were compared to digital cameras of good quality considering future possibilities. The tests measured the effect of symbol type, quality of the camera and imaging properties. The variables used were camera resolution, image compression ratio, imaging distance and angle as well as focal distance of the lens. In addition the effect of symbol type, amount of encoded data and symbol size were studied. Especially the close focusing ability of the lens and imaging resolution had strong influence on readability. The readability of both bar codes and matrix codes was reasonable but the versatility of matrix codes is better suited for this kind of use. Reading of printed codes is possible with present-day mobile devices on the basis of these measurements. However usability is limited by low data prosessing power, poor close focusing ability and low resolution of cameras. As technical properties improve smaller and more complex codes can be read more easily and reliably. Language Finnish

Alkusanat Tämä diplomityö on tehty osana PrintAccess-projektia Teknillisen korkeakoulun Viestintätekniikan laboratoriossa. Haluan kiittää professori Pirkko Oittista asiantuntevasta opastuksesta sekä osoittamastaan mielenkiinnosta tätä työtä kohtaan. Työtovereilleni suuri kiitos neuvoista, kannustuksesta ja innostavasta ilmapiiristä. Perhettäni ja ystäviäni haluan kiittää loputtomasta tuesta ja kaikesta siitä, mitä olemme vuosien saatossa touhunneet. Espoossa 19.2.2004 Juha Koivu

SISÄLLYSLUETTELO KÄSITELUETTELO 1 J OHDANTO...1 2 PAINETUN KOODIN TUNNISTUSHAASTEET MOBIILILAITTEIDEN KAMEROILLA... 2 2.1 Teknologiset haasteet... 3 3 SYMBOLITYYPIT... 6 3.1 Koneellisesti tapahtuva tunnistus... 7 3.2 Viivakoodit... 8 3.3 Symbolien rakenne... 8 3.3.1 Marginaalit... 9 3.3.2 Viivojen ja välien leveydet... 9 3.3.3 Viivakoodin kallistus... 9 3.4 Yksiulotteiset symbologiat... 10 3.4.1 UPC ja EAN... 10 3.4.2 Interleaved 2/5... 11 3.4.3 Code 39... 11 3.4.4 Code 128... 12 3.5 Kaksiulotteiset symbologiat... 12 3.5.1 DataMatrix... 13 3.5.2 QR Code... 14 3.5.3 PDF-417... 15 3.6 Muunlaiset symbolit... 16 3.6.1 Circular DataMatrix fiducial... 16 3.6.2 Fiducial-symbolit... 16 3.6.3 Image Barcodes... 17 3.6.4 Digitaaliset vesileimat... 18 3.7 Digitaalinen vesileimaus painotuotteissa... 19 4 VIIVAKOODIEN LUOMINEN JA PAINAMINEN... 21 4.1 Tarkkuus ja luotettavuus... 21 4.2 Koodin painamiseen liittyvät tekijät... 23 4.2.1 Tulostimen resoluutio... 24 4.2.2 Tulostuskontrasti... 24 4.3 Painotoleranssit... 26 5 KAMEROIDEN SUORITUSKYKY... 27 5.1 Yleistä... 27 5.2 CMOS-teknologia... 29 5.2.1 Pikselirakenne... 29 5.2.2 Pikselikoon vaikutus... 29 5.2.3 Mikrolinssit ja värisuodatinrakenteet... 30 5.3 Elektroniset tekijät... 31 5.3.1 Digitaalisen kameran arkkitehtuuri... 31 5.3.2 Kohina... 32 5.3.3 Bayer-suodattimen vaikutus... 32 5.4 Optiset ominaisuudet... 33 5.5 Kameran ohjelmiston ominaisuudet... 34 5.6 Kamerapuhelimien kehitys... 35 6 PAINOTUOTTEET JA DIGITAALISEN SISÄLLÖN YHDISTÄVIÄ SOVELLUKSIA...38 6.1 CodePoint... 39 6.2 MediaBridge... 41 6.3 DataGlyph... 42 6.4 Imagecode... 43 6.5 CueCat... 44 6.6 GoCode... 45

7 KOKEELLISEN OSAN JOHDANTO...46 8 MITTAUSJÄRJESTELYT... 47 8.1 Käytetyt ohjelmistot... 47 8.1.1 Symbolien valmistus... 48 8.1.2 Symbolien tunnistus... 49 8.2 Käytetyt digitaaliset kamerat... 51 8.2.1 Nokia 7650 ja Nokia 3650 -kamerapuhelimet... 52 8.2.2 Canon A60 PowerShot... 53 8.3 Kameran kiinnitysteline... 54 8.4 Tulostuksen laatu... 55 9 KAMERAMITTAUKSET...58 9.1 Linssivääristymä... 58 9.2 Erottelutarkkuus... 59 10 MATRIISIKOODIMITTAUKSET... 60 10.1 Matriisikoodin luettavuus Canon A60 -kameralla... 60 10.2 Matriisikoodin tunnistamiseen tarvittava pikselimäärä... 61 10.3 Kameran laadun vaikutus DataMatrix-symbolin luettavuuteen... 62 10.4 Kuvauskulman vaikutus DataMatrix-symbolin luettavuuteen... 62 10.5 JPEG-pakkauksen vaikutus DataMatrix-symbolin luettavuuteen... 62 10.6 DataMatrix-symboliin koodatun merkkimäärän vaikutus luettavuuteen... 63 11 VIIVAKOODIMITTAUKSET... 64 11.1 Viivakoodin koon ja symbologian vaikutus luettavuuteen eri kuvausetäisyyksillä... 64 11.2 Resoluution ja JPEG-pakkauksen vaikutus EAN-8 -symbolin luettavuuteen... 64 11.3 Viivakoodin tunnistamiseen vaadittava pikselimäärä... 64 11.4 Kuvauskulman vaikutus viivakoodin luettavuuteen... 65 11.5 Viivakoodin luettavuus kamerapuhelimella... 65 12 KAMEROIDEN MITTAUSTULOKSET... 66 12.1 Linssivääristymä... 66 12.2 Erottelutarkkuus... 68 13 MATIRIISIKOODIEN MITTAUSTULOKSET...71 13.1 Matriisikoodin luettavuus Canon A60 -kameralla... 71 13.2 Matriisikoodin tunnistamiseen tarvittava pikselimäärä... 75 13.3 Kameran laadun vaikutus DataMatrix-symbolin luettavuuteen... 78 13.4 Kuvauskulman vaikutus DataMatrix-symbolin luettavuuteen... 80 13.5 JPEG-pakkauksen vaikutus DataMatrix-symbolin luettavuuteen... 83 13.6 DataMatrix-symboliin koodatun merkkimäärän vaikutus luettavuuteen... 84 14 VIIVAKOODIEN MITTAUSTULOKSET... 86 14.1 Viivakoodin koon ja symbologian vaikutus luettavuuteen eri kuvausetäisyyksillä... 86 14.2 Resoluution ja JPEG-pakkauksen vaikutus EAN-8 -symbolin luettavuuteen... 88 14.3 Viivakoodin tunnistamiseen vaadittava pikselimäärä... 90 14.4 Kuvauskulman vaikutus viivakoodin luettavuuteen... 91 14.5 Viivakoodin luettavuus kamerapuhelimella... 93 14.6 Kuvauskohdan vaikutus viivakoodin luettavuuteen... 93 15 TULOSTEN TARKASTELUA...95 15.1 Symbolityypin valintaan vaikuttavia tekijöitä... 95 15.2 Symbolin esteettisyys ja käytettävissä oleva pinta-ala... 96 15.3 Käytettävyys ja lukutapahtuma... 96 15.4 Tunnistusalgoritmit ja lukulaitteen kuvankäsittelyteho... 97 15.5 Merkkimäärä... 98 15.6 Matriisikoodien ja viivakoodien luettavuus... 98 15.7 Valmistus... 98 16 YHTEENVETO... 99 LÄHDELUETTELO... 101 LIITTEET

Käsiteluettelo Alku- ja loppumerkit ovat kullekin symbologialle erilaisia ennalta määrättyjä viivojen ja välien sarjoja, joilla merkitään symbolin alku ja loppu. Datamerkit ovat niitä viivakoodin merkkejä, jotka käsittävät symbolin sisältämät varsinaiset numerot ja kirjaimet. CODE 39 -symbologia voi pitää sisällään vaihtelevan määrän datamerkkejä, kun taas joissain symbologioissa merkkien määrä on aina vakio. Elementti on symbolin yksi viiva tai väli. Jaksotetuissa symbologioissa ainoastaan viivat sisältävät tietoa. Tästä johtuen kukin merkki alkaa ja päättyy viivalla, ja merkit on erotettu vaalealla välillä toisistaan. Jatkuvissa symbologioissa sekä viivat että välit sisältävät tietoa. Tästä johtuen kukin merkki alkaa viivalla ja päättyy väliin. Niissä ei ole merkkejä erottavia tyhjiä välejä, koska kaikki välit sisältävät tietoa. Kontrasti on koneellisesti luettavan viivakoodisymbolin tummien viivojen ja vaaleiden alueiden välinen ero valon heijastuskyvyssä. Lukulaite on elektroninen laite, jolla luetaan viivakoodeja ja muunnetaan ne tietokoneen ymmärtämiksi sähköisiksi signaaleiksi. Marginaali (tyhjä alue) on symbolia ympäröivä alue, jossa ei ole mitään painatusta. Erottaa symbolin muusta sisällöstä tunnistusta varten. Merkki on sarja viivoja ja välejä, jotka yhdessä muodostavat yksittäisen numeron, kirjaimen, välimerkin tai jonkun muun symbolin. Merkkitiheys on se merkkien lukumäärä, joka voidaan esittää tietyllä pituusyksiköllä ilmaistulla matkalla. Yksikkönä käytetään usein CPI (Characters Per Inch = merkkiä/tuuma). Symboli on kaikista symbologian vaatimista merkeistä muodostuva yhdistelmä, joka muodostaa luettavan kokonaisuuden. Symboliin sisältyy alku/loppumerkit, marginaalit, datamerkit ja tarkistusmerkit. Symbologia tarkoittaa sääntöjä ja periaatteita, joiden perusteella symboli valmistetaan. Symbologiassa määritetään mm. datan koodaus- ja dekoodaustavat, symbolin rakenne sekä virheenkorjausmenetelmät. Tarkistusmerkki on symbolin sisältämä merkki, jonka arvo lasketaan matemaattisesti muiden symbolissa olevien merkkien perusteella. Tarkistusmerkin oletetaan yleisesti olevan symbolin viimeinen merkki. Tarkistussummaa käytetään luetun datan oikeellisuuden matemaattiseen tarkistukseen. Sen laskemiseen käytetään kaikkia muita merkkejä paitsi viimeistä merkkiä, johon saatua laskutulosta verrataan. Laskun tuloksena saadun merkin tulee olla sama kuin tarkistusmerkin. Muussa tapauksessa symbolin lukemisessa on tapahtunut virhe. Tarkistuksia ei kuitenkaan aina käytetä kaikissa symbologioissa. Virheluku tarkoittaa sitä, että lukulaitteen palauttama merkki ei ole sama kuin mitä symboliin on koodattu eli symboli tulkitaan väärin. Virheluenta-aste on ensimmäisellä yrityksellä onnistuneiden lukukertojen määrän suhde kaikkien lukukertojen määrään. X-leveys on symbolin ohuimman/pienimmän elementin leveys.

1 1 JOHDANTO Nopeasti muuttuvassa mediakentässä kiinostus painotuotteiden ja mobiililaitteiden integraatioon kasvaa jatkuvasti. Kamerapuhelimien ja vastaavien laitteiden yleistyminen avaa mahdollisuuksia uudenlaisille sovelluksille, joiden kehitystyö on vasta alkuvaiheessa. Kameran sisällyttäminen älykkäisiin mobiililaitteisiin luo täysin uuden input-kanavan, jota voidaan hyödyntää myös painotuotteiden kautta. Painotuotteisiin on mahdollista lisätä informaatiota sisältäviä koodeja, jotka lukemalla tuotteelle voidaan luoda merkittävää lisäarvoa. Itse koodin ulkoasu ja siihen sisällytetyn datan määrä voi vaihdella riippuen sovelluksen vaatimuksista tai lukulaitteen teknisistä ominaisuuksista. Tavallisen tekstin koneellisessa tunnistuksessa vaatimukset painojäljen laadulle ja lukulaitteiston tarkkuudelle ovat korkeat, joten parempiin tuloksiin päästään käyttämällä erityisesti koneelliseen tunnistukseen suunniteltuja symboleja. Parempien tunnistusominaisuuksien lisäksi tällaisiin symboleihin voidaan koodata suuria määriä tietoa hyvin pienelle alueelle. Tunnetuimpia symbolityyppejä ovat viivakoodit, joita käytetään yleisesti kauppatavaratuotteissa. Kaksiulotteisten matriisikoodien datakapasiteetti ja virheenkorjausmenetelmät ovat viivakoodeja paremmat, joten niiden ominaisuudet soveltuvat hyvin mobiililaitteiden avulla tapahtuvaan tunnistukseen. Mobiililaitteilla luettavien koodien avulla painotuotteita voidaan yhdistää internetiin, digi-tv -ohjelmistoon tai johonkin muuhun digitaaliseen sisältöön. Tässä työssä on tutustuttu erilaisiin painotuotteita ja digitaalisia laitteita yhdistäviin sovelluksiin sekä tutkittu erilaisten koodityyppien ja lukulaitteiden soveltuvuutta tämänkaltaisiin käyttötarkoituksiin. Kameran sisältäviä mobiililaitteita on ollut saatavilla vasta parin vuoden ajan, joten kameroiden laatu on vielä heikko tavallisiin digitaalisiin kameroihin verrattuna. Mittausten avulla voitiin tutkia kamerapuhelimien soveltuvuutta painettujen koodien lukemiseen ja pohtia, miten mobiililaitteiden kameroiden kehitys vaikuttaa tämänkaltaisten sovellusten käytettävyyteen. Tavoitteena oli selvittää, minkälaisia painettuja koodeja voidaan lukea digitaalisen kameran avulla. Kiinnostuksen kohteena olivat kameran laatuasetukset sekä painetun koodin ominaisuudet. Koodin painatuslaadun vaikutukseen tai tunnistuskohtien toimintaan ei tässä työssä otettu kantaa.

2 2 PAINETUN KOODIN TUNNISTUSHAASTEET MOBIILI- LAITTEIDEN KAMEROILLA Suurin osa painettujen koodien kuvaussovelluksista on suunniteltu kaupallisiin käyttötarkoituksiin, joissa käytetään erikoiskameroita ja kuvausolosuhteet pyritään vakioimaan mahdollisuuksien mukaan. Tällaiset laitteet on optimoitu kuvaamaan ainoastaan viivakoodeja ja/tai matriisikoodeja eivätkä laitteet toimi hyvin tai ollenkaan digitaalikameroina. Kuluttajille suunnattuihin laitteisiin istutetuilla digitaalisilla kameroilla suoritettava koodien kuvaus ja tunnistus synnyttää ongelmia, joihin ei ole edes tarvinnut etsiä ratkaisuja kaupallisissa viivakoodilukijoissa. Kaupallisten tuotteiden koodintunnistusalgoritmit eivät toimi luotettavasti kuluttajille suunnatuista kannettavista laitteista saatujen kuvien kanssa. Seuraavissa kappaleissa käsitellään kriittisimpiä tekijöitä kuluttajille suunnatun sovelluksen kannalta. /16/ Suuresti vaihteleva yleisvalaistus on koneellisesti tapahtuvan tunnistuksen kannalta huomattavasti vaikeampi tapaus kuin tarkasti hallittu säde laserista tai tasaista valoa tuottavasta kalibroidusta skannerista. Varjot, valaistuksen muutokset symbolin sisällä, kuvan yli- tai alivalotus ja samankaltaiset ongelmat, jotka ovat tavallisia kaikille kameroille, voivat nujertaa perinteiset koodintunnistusalgoritmit, jotka on suunniteltu tarkasti hallittuihin valaistusolosuhteisiin.koodinlukuohjelmiston on pystyttävä korjaamaan poikkeamat kuvan valaistuksessa. /8, 16/ Algoritmit on suunniteltava sopeutumaan symbolista otetun kuvan kirkkauden ja kontrastin vaihteluihin. Tämä saadaan aikaan käyttämällä globaalisesti ja paikallisesti sopeutuvia kuvankäsittelyoperaatioita. Valaistustasot voivat olla hyvin korkeita tai matalia, mutta tunnistuksen on onnistuttava valaistuksen vaihteluista huolimatta. Mikäli kontrasti on alhainen johtuen musteen tai painovärin pienestä kontrastista painopintaan nähden tai heikoista valaistusolosuhteista, on algoritmin silti pystyttävä tulkitsemaan kyseinen koodi. Jopa suuresti vaihtelevat varjostukset kuvan sisällä on voitava tunnistaa ja korjata. Algoritmi voi toimia tunnistamalla symbolien ominaisuuksia havaitsemalla toistuvia paikallisia pikselien intensiteettikuvioita, jotka voivat viestittää koodin olemassaolosta. Tämä lähestymistapa poikkeaa kaupallisissa sovelluksissa tavallisesti käytetyistä tunnistusalgoritmeista, joissa tehdään yleensä vakioitu kynnystason määritys (thresholding) tai digitaalinen suodatus ja edellytetään valaistusolosuhteiden tarkkaa hallintaa. /8, 16/ Digitaalikameran ja kohteen välistä etäisyyttä ei tavallisesti voi määrätä, sillä sen päättää käyttäjä kuvaustilanteessa. Tästä johtuen symboli voi esiintyä eri suuruisena vakiokokoisella kuvakennolla. Algoritmin on silti pystyttävä tulkitsemaan painettuja symboleja, joiden fyysinen koko vaihtelee suuresti. /16/ Digitaalikameralla on voitava ottaa kuva symbolista eri kulmista, ja silti tunnistuksen on onnistuttava. Kuvan ottaminen eri kaltevuuskulmasta kuitenkin muuttaa kohteen näennäistä muotoa. Täten suorakaiteen muotoinen viivakoodi voi näyttää vinosti otetussa kuvassa tra-

petsoidin tai epäsäännöllisen nelikulmion muotoiselta. Kuvat tulkisevan algoritmin on osattava käsitellä vinojen kuvauskulmien johdosta vääristyneitä kuvia, mutta se on pystyttävä tekemään käytettävissä olevan laitteiston rajallisen laskutehon ja muistin puitteissa. /16, 22/ Kannettavat laitteet toimivat akuilla, jotka pyritään tekemään mahdollisimman pieniksi. Tunnistusalgoritmien on oltava erittäin tehokkaita, jotta ne eivät kuluta paljon virtaa. Perinteiset laservaloa käyttävät viivakoodilukijat vaativat paljon energiaa, eivätkä siksi sovellu akkukäyttöisiin kannettaviin laitteisiin. Tavallisessa käytössä kannettavissa laitteissa oleva algoritmi ei saa vaatia erityisiä valonlähteitä. /16/ Kuluttajille suunatuissa mobiililaitteissa on yleensä värikamerat. Viivakoodien lukeminen onnistuu kuitenkin tavallisesti parhaiten harmaasävyisellä kameralla. Kuvadatan on kuljettava käsittelyä varten keskusyksikön ja muistin läpi, minkä johdosta värillisyysdata vaatii tavallisesti kolme kertaa suuremman tilan ja käsittelytehon kuin harmaasävyt. Värikuvauslaitteissa vaaditaan erityiset kuvankäsittelyalgoritmit, jotta vältytään haitallisilta vääristymiltä muunnettaessa kuvaa värillisestä harmaasävyihin. Muunnos on suoritettava siten, että mahdollisimman suuri määrä informaatiosta säilyy. /16, 48/ Kannettavien laitteiden digitaalikamerat on yleensä suunniteltu toimimaan vaihtelevilla etäisyyksillä. Laajemman tarkennusalueen tarve johtaa edullisempien linssikomponenttien käyttöön, mutta keskimääräinen kuvatarkkuus paranee. Tunnistusalgoritmien on pystyttävä sietämään heikkolaatuisista kameroista johtuvia tarkkuusongelmia. /16, 44/ Pystyäkseen pitämään kannettavan laitteen hinnan riittävän alhaisena valmistajat usein joutuvat tinkimään kameralinssien optisesta laadusta. Tämä voi aiheuttaa lukuohjelmistolle erilaisia haasteita johtuen edellä mainitusta polttoväliongelmasta. Edulliset linssikomponentit voivat tuottaa kuvavääristymiä tietylle alueelle tai aiheuttaa valoisuuden muutoksia koko kuvaan, joihin lukuohjelmiston on pystyttävä sopeutumaan. /16, 48/ Digitaalikuvauksessa käytettävien kuvasensorien hinta kasvaa kuvapikselien määrän funktiona. Koska kameramoduulin hinta ei saa merkittävästi kasvattaa itse laitteen hintaa, parempiin resoluutioihin pystyvien laitteiden tulo markkinoille hidastuu. Pikselien vähyydestä johtuen painettujen koodien luotettava lukeminen on teknisesti haastavaa. Kameran resoluution kasvattaminen parantaa laitteen käytettävyyttä, lukunopeutta ja -tarkkuutta, ja lisäksi voidaan lukea entistä monimutkaisempia ja pienempiä koodeja. /16, 48/ 3 2.1 Teknologiset haasteet Painettujen koodien täysipainoinen hyödyntäminen edellyttää seuraavien haasteiden ratkaisua: 1. Koodit sisältävät muutaman tavun pituisia viittauksia joko paikallisessa tietokannassa tai internetissä oleviin tietorakenteisiin, tai ne itsessään sisältävät kaiken tarvittavan tiedon.

Useimmissa sovelluksissa koodiin on tarpeellista sisällyttää niin paljon tietoa kuin mahdollista ilman koodin laadun heikkenemistä. /2/ 2. Vaikka koodausnopeus ei olekaan kriittinen tekijä, koodin lukunopeus on ratkaisevan tärkeää tämän kaltaisissa sovelluksissa. Jotta vältytään käyttäjän turhautumiselta, koodin havaitsemisen ja tulkinnan on tapahduttava mahdollisimman nopeasti. Mikäli koodin lukeminen ei onnistu nopeasti kuvan ottamisen jälkeen ja mieluiten heti ensi yrittämällä, käyttäjä voi luulla, että koodi oli aseteltu huonosti kameran eteen. Tällöin käyttäjä saattaa siirtää kohdetta tai muuttaa kameran etäisyyttä ja asentoa. Tämä voi pidentää lukuprosessia entisestään tai tehdä lukemisen kokonaan mahdottomaksi. Mikäli kameran kuvausnopeus on riittävän suuri, voidaan kerralla ottaa useampi kuva ja etsiä koodia eri kuvista. Yhden kuvan tarkka tutkiminen koodin löytymiseen asti saattaa nopeuttaa lukuprosessia, kunhan koodi lopuksi löydetään. Toinen tapa on tutkia kuva nopeasti etsien mahdollisimman voimakkaan koodisignaalin sisältävä alue ja sitten tutkia tarkasti vain sitä aluetta. Jos tällaista aluetta ei helposti löydetä, kyseinen kuva hylätään nopeasti ja siirrytään tutkimaan seuraavaa kuvaa. Paras ratkaisu on kuitenkin panostaa perusasiaan eli nopeuttaa ja parantaa koodin lukemiseen käytettäviä algoritmeja. /2, 46/ 3. Koodin pitäminen kameran edessä satunnaisella etäisyydellä sisältää riskin, että kamera ei ole tarkennettu kohteeseen. Vaikka laadukkaammissa kameroissa voikin olla automaattitarkenus, on huomioitava, että vaatimattomien kameroiden linssit vaativat käsintarkennusta. Tästä johtuen kamera saattaa ottaa epätarkkoja kuvia. Epätarkkojen kuvien havaitseminen ja digitaalinen tarkennus voivat helpottaa koodin lukemista, mutta ne myös vaativat kuvankäsittelyresursseja käytettävältä laitteistolta. /2, 44/ 4. Koodin onnistunutta lukemista varten lukuohjelmiston on tiedettävä tarkkaan koodin orientaatiokulma. Tasoskannereiden tapauksessa rotaatiokulma on helppo määrittää, koska kääntyminen on mahdollista ainoastaan skannerin tasossa. Kädessä pidettävien digitaalisten kameroiden tapauksessa rotaatiokulmalla ei ole mitään rajoituksia, mikä aiheuttaa lisävaatimuksia tunnistusalgoritmille. Satunnaisen orientaation johdosta luettava koodi voi kärsiä geometrisistä vääristymistä, joita voivat aiheuttaa myös kohteen taipuminen, rypistyminen ja taittaminen. Geometristen virheiden arvioiminen ja korjaaminen lukuprosessin aikana ovat haastavia tehtäviä lukuohjelmistoille. /2, 22/ 5. Tulostusprosessi voi heikentää koodin laatua ja saatavan signaalin luettavuutta. Koodit tulostetaan tai painetaan paperille CMYK-väriavaruutta käyttäen. Hyvän painolaadun aikaansaamiseksi ja pikselöitymisen välttämiseksi nyrkkisääntönä on, että digitaalisen kuvan resoluution on oltava kaksi kertaa niin suuri kuin painoresoluutio. Tämä johtuu rasteroinnin käyttämisestä värituotannossa. Lisäksi eri painotalot käyttävät vaihtelevia rasterointikuvioita ja viivaorientaatioita, ja niiden värintoistotarkkuus vaihtelee. Täten yksi haaste on painoprosessin tarkka tunteminen ja koodin tuottaminen ja lukeminen tähän tietoon perustuen. /2/ 4

6. Edelliseen liittyvä haaste koskee paperien erilaisuutta. Vaihtelevan laadun, paksuuden ja jäykkyyden omaavat paperit imevät painoväriä eri tavoin. Joihinkin papereihin painoväri imeytyy tasaisesti, kun taas toisissa papereissa musteen imeytymiseen vaikuttaa vaihtelut paperin tekstuurissa ja päällysteen tasaisuudessa. Tämä voi heikentää painetun koodin luettavuutta. Paperien ominaisuuksien tutkimisen ja soveltuvan luokituksen avulla voidaan kompensoida koodin laadun heikentyminen painamisen yhteydessä. /2/ 7. Useimmissa CCD- ja CMOS-kameroissa käytetään useasta sensoririvistä koostuvaa rakennetta värikuvien tuottamiseen. Tämä edellyttää sensorien jakamista kolme päävärin (RGB) kesken tietyn säännöllisen kuvion mukaan. Kaikki tietylle värille suunnitellut sensorit varustetaan sellaisella suodattimella, että niiden herkkyys kyseistä väriä kohtaan paranee ja tuloksena saadaa halutun värin intensiteetti tietyssä pisteessä. Useimmat kameravalmistajat käyttävät Bayer-värikuviota GR/BG. Vaikka tämä kuvio tuottaa hyvän kuvanlaadun, se aiheuttaa värivääristymistä, mikä puolestaan saattaa heikentää painetun koodin luettavuutta. Lisäksi väriavaruuden muuntaja, joka muuntaa sensorien tuottaman signaalin YUV- tai RGB-väriavaruuteen, voi vaihdella valmistajasta riippuen. Bayer-kuvion huomioonottamisella värimäärittelyn yhteydessä voidaan parantaa koodin luettavuutta. /2, 33/ 8. Erilaiset input-laitteet aiheuttavat erityyppisiä vääristymiä. Esimerkiksi eri valmistajien kameroiden valonherkkyys voi vaihdella. Niiden linssit voivat aiheuttaa erilaisia geometrisia vääristymiä ja niiden sensoreilla voi olla erilaiset kohinaominaisuudet. Lisäksi nykyisistä teknologioista johtuen CCD-kamerat tuottavat tavallisesti parempilaatuisia kuvia kuin CMOS-kamerat. Koodaustapaa ja lukuohjelmistoa suunniteltaessa on mahdollisuuksien mukaan otettava huomioon kameroiden vaihtelevat ominaisuudet. /2, 33/ 9. Digitaalisista kuvista poiketen painetut kuvat eivät säilytä ominaisuuksiaan. Painettujen kuvien laatua heikentäviä tekijöitä ovat mm. rypistyminen, repeäminen, muodon säilymättömyys, ikääntyminen ja haalistuminen. Lisäksi niitä voidaan käyttää vaihtelevissa valaistusolosuhteissa. Täten sellaisen lukuohjelmiston kehittäminen, joka on immuuni tällaisille tahattomille vahingoille ja toimii missä tahansa valaistuksessa, on hankala haaste. /2, 47/ 5

6 3 SYMBOLITYYPIT Viivakoodi on automaattiseen tunnistamiseen käytettävä tekniikka, joka on synnyttänyt sovelluksia useilla aloilla. Vaikka viivakoodeja käytetään paljon muuallakin, ne ovat olleet kaikkein näkyvimmässä roolissa päivittäistavarakaupassa. /39, 40/ Viivakoodi muodostuu vaaleista ja tummista koodielementeistä, jotka on suunniteltu luettaviksi tietokoneisiin yhdistetyillä skannereilla. Tietyissä viivakoodityypeissä tieto on ainoastaan viivoissa ja toisissa tyypeissä myös viivojen väleissä. Koodattava merkki määräytyy koodielementtien keskinäisen sijainnin ja leveyden perusteella. Viivakoodia luettaessa viivojen ja välien sisältämät kirkkaat ja tummat kuviot muuntuvat sarjaksi ykkösiä ja nollia, jotka lukemiseen käytettävä tietokone tulkitsee numeeriseksi tai alfanumeeriseksi tiedoksi /39, 40/ Vaalea pinta heijastaa paljon siihen osunutta valoa, kun taas tumma pinta imee suurimman osan valosta. Tällaista eroa sanotaan kontrastiksi. Asettamalla tummat viivat ja vaaleat välit vieri viereen ja antamalla valonsäteen kulkea koodin yli saadaan takaisinheijastuneesta valosta tieto, joka vastaa viivojen ja välien leveyttä. Tämä tieto muunnetaan valosignaalista sähköiseksi signaaliksi vastaanottimen avulla, ja se voidaan vahvistuksen, suodatuksen ja digitalisoinnin jälkeen tulkita dekooderin avulla. /39, 40/ Useimmat viivakoodit näyttävät melko samanlaisilta. Erilaisia viivakoodityyppejä eli symbologioita on kuitenkin nykyään yli 300 kappaletta, tosin niistä vain noin 20 on saavuttanut laajempaa suosiota. 1-D symbologiat näyttävät perinteisiltä viivakoodeilta, joita on totuttu näkemään tuotepakkauksissa ja joita käytetään lyhyiden viestien koodaukseen. 2-D -koodeja käytetään sovelluksissa, joissa on tarpeen koodata huomattavasti suurempia datamääriä. /43, 55/ Symbologiat voidaan jakaa kolmeen pääluokkaan, jotka ovat viivakoodi, pinottu viivakoodi ja matriisikoodi (kuva 1). Pinotut viivakoodit ovat kirjaimellisesti päällekäin pinottuja 1-D viivakoodeja, jotka on tilan säästämiseksi tulostettu suorakaiteen muotoiseksi ryhmäksi. Varsinaisen dataviestin lisäksi jokaiseen pinottuun viivakoodiin sisällytetään lisämerkkejä, jotka kuvaavat mihin pinossa olevaan viivakoodiin tietty data kuuluu. Tämä mahdollistaa kallistuneiden 2-D koodien lukemisen ilman datahukkaa.

7 Kuva 1. Sama datamäärä esitettynä viivakoodeilla (vas.), pinotulla viivakoodilla (kesk.) ja matriisikoodilla (oik.) /5/ Viivakoodeissa on informaatiota ainoastaan vaakasuunnassa, kun taas pinotussa viivakodissa sekä matriisikoodissa informaatiota on pysty- ja vaakasuunnissa (kuva 2). Kuva 2. Kaksiulotteinen koodi sisältää dataa molemmissa suunnissa, mutta viivakoodi sisältää dataa vain yhdessä suunnassa /5/ 3.1 Koneellisesti tapahtuva tunnistus Viivakoodi on koneellisen luennan yleisimmin esiintyvä ja käytetyin tunnistusmenetelmä markkinoilla. Luonnollisin tapa olisi ehkä tavallisten silmin luettavien symbolien kuten kirjainten ja numeroiden käyttö. Tällaisia järjestelmiä on myös olemassa, mutta ne ovat koneellisesti vaikeasti luettavia. /40/ OCR (Optical Character Recognition) perustuu tavallisen tekstin tai symbolimerkkien koneelliseen tunnistamiseen. Tunnistettavat merkit voidaan painaa tavalliselle paperille kuten viivakoodikin, mutta OCR-menetelmän käyttö asettaa suuret vaatimukset painojäljelle. Pienet symbolissa tai lukulaitteessa olevat tahrat voivat helposti aiheuttaa virheluennan huolimatta siitä, että ne ovat syntyneet painamisen yhteydessä. Testiyhteenvedot osoittavat, että OCR-koodin käyttö esim. kaupassa johti siihen, että 30 %:ssa luenta ei onnistunut ensiyrittämällä ja yli 1 %:ssa esiintyi virheellistä luentaa. Luenta voi normaalisti tapahtua ainoastaan koodia koskettamalla. Lukupään on seurattava tekstiä, eikä se saa poiketa ylös- tai alaspäin enempää kuin 10 % merkkikorkeudesta. /40/

8 3.2 Viivakoodit Lineaarisissa symbologioissa käytössä olevien merkkien määrä vaihtelee. Esimerkiksi CODE 39:ssä on käytössä 43 erilaista merkkiä sisältäen kirjaimia, numeroita ja joitain välimerkkejä. Joillain symbologioilla voidaan esittää kaikki 128 ASCII merkkiä. Vaikka kukin symbologia on kehitetty tiettyä käyttötarkoitusta varten, ne on kaikki suunniteltu luettavaksi koneellisesti. Symbologiat eroavat toisistaan myös monilla muilla tavoilla, kuten myöhemmin tarkastellaan. /55/ Kuva 3. Tyypillinen viivakoodi /55/ Yhtä kokonaista viivakoodia kutsutaan symboliksi. Kuvassa 3 on esitetty tyypillinen viivakoodattu symboli. Symbolin alla olevat numerot sisältävät saman informaation kuin itse viivakoodikin ja ne on lisätty sitä varten, että symboliin koodattu tieto on helposti myös ihmisten luettavissa. /55/ 3.3 Symbolien rakenne Johtuen siitä, että 1-D viivakoodien rakenne on verrattain selkeä, asioiden havainnollistamiseen käytetään tämän luvun kuvissa 1-D symboleja. Samoja periaatteita voidaan kuitenkin soveltaa myös 2-D symbologioihin. /43, 55/ Viivakoodattu symboli koostuu sarjasta painettuja viivoja ja välejä, joita kutsutaan yleisesti elementeiksi. Symboli sisältää eri tyyppisiä merkkejä kuten alku- ja loppumerkit, datamerkit ja tarkistusmerkit, jotka on koodattu erilevyisiä viivoja ja välejä käyttäen. Viivojen ja välien leveys ja määrä vaihtelevat riippuen symbologiasta. Kuvassa 4 on esitetty Code 39 -viivakoodisymboli ja lisäksi joitain monille symbologioille tyypillisiä ominaisuuksia. /26, 55/ Kuva 4. Viivakoodien tyypillisiä ominaisuuksia /55/

9 3.3.1 Marginaalit Viivakoodiin on sijoitettava marginaalit ennen alkumerkkiä ja välittömästi loppumerkin jälkeen. Marginaalit luovat symbolin ympärille yhtenäisen alueen, jolloin valonheijastuksessa ei tapahdu muutoksia. Marginaalit eristävät viivakoodin fyysisesti sivulla olevasta muusta informaatiosta, minkä johdosta lukulaitteet ja tunnistusohjelmistot pystyvät helpommin erottamaan viivakoodidatan. Hyvän lukutuloksen saavuttamiseksi marginaalien on oltava täysin tyhjiä ja ne eivät saa sisältää mitään ylimääräisiä merkintöjä. Vaadittavan marginaalin leveys vaihtelee symbologiasta riippuen. Esimerkiksi Code 39:n tapauksessa marginaalin leveyden on oltava vähintään kymmenen kertaa kapeimman viivan tai välin leveys, mutta kuitenkin vähintään 0,64 cm. Käytännössä on kuitenkin suositeltavaa, että marginaalit ympäröivät symbolia joka puolelta (kuva 5). Mikäli symboli sisältää selväkielisiä kirjaimia tai numeroita, ne voidaan sijoittaa viivakoodin läheisyyteen, kunhan marginaali on olemassa tämän tekstin ulkopuolella. Alla olevassa kuvassa esitetään marginaalien oikeaoppinen käyttö. /26, 55/ Kuva 5. Marginaalien kayttö /55/ 3.3.2 Viivojen ja välien leveydet Kaikkissa symbologioissa data koodataan käyttäen x-leveydeksi kutsutttua perusmittayksikköä. Kunkin viivan tai välin leveyden tulee aina olla x-leveyden monikerta. Viivojen ja välien leveys tietyllä symbologialla vaihtelee yhdestä x-leveydestä suurimpaan mahdolliseen x- leveyteen, jota kyseinen symbologia tukee. Yksinkertaisin symbologia sallii ainoastaan yhden leveysvaihtoehdon kaikille viivoille ja väleille, jolloin kaikki elementit vievät yhtä paljon tilaa vaakasuunnassa. Monipuoliset symbologiat sallivat jopa neljä eri leveysvaihtoehtoa kutakin elementtiä kohti. Tällaiset koodausmenetelmät tarjoavat paremman merkkitiheyden, mutta vaativat myös tarkemmat paino- ja luentamenetelmät. Viivakoodisymbolien painamisessa ja luennassa nyrkkisääntönä voidaan pitää sitä, että tulostimen tai lukijan on kyettävä tulostamaan tai lukemaan kaksi pikseliä jokaista x-leveyttä kohti 1-D symboleilla ja kolme pikseliä 2-D symboleilla. /26, 43, 55/ 3.3.3 Viivakoodin kallistus Viivakoodin kallistus on epätoivottu ilmiö, joka pidentää tunnistamis- ja lukemisaikaa. Viivakoodin korkeus määrittää, kuinka paljon kallistusta voidaan sietää ilman vaikutusta luku-

tulokseen. Voimakkaasti kallistuneen viivakoodin lukeminen vaatii lukulaitteelta kaikkien mahdollisten kulmien tutkimisen, mikä luonnollisesti hidastaa prosessia. Kuvassa 6 kahta ainoastaan korkeudeltaan poikkeavaa viivakoodia on kallistettu 12. Nuolet kuvaavat skannauspolkua. Kuvasta havaitaan, että skannauspolku kulkee kaikkien elementtien yli vasemman puoleisessa symbolissa, mutta ohittaa suuren osan elementeistä oikean puoleisessa symbolissa. Oikean puoleisen symbolin lukeminen vaatii pidemmän käsittelyajan kuin vasemman puoleinen symboli. /55/ 10 Kuva 6. Kallistuneiden viivakoodien lukeminen /55/ Digitaalikameraan perustuvassa tunnistuksessa symbolin kallistus aiheuttaa myös viivojen porrastumista, mikä johtuu kameran pikselirakenteesta. Kuten kuvasta 6 nähdään, viivojen porrastuminen heikentää kuvanlaatua ja vaikeuttaa symbolin tunnistusta. /55, 57/ 3.4 Yksiulotteiset symbologiat Viivakoodeja on käytössä useita erityyppisiä, ja ne eroavat toisistaan lähinnä koodaustavan ja merkkivalikoiman suhteen. Tavallisimmat käytössä olevat koodityypit ovat EAN, 2/5 Interleaved ja Code 39. EAN on kulutustavaroihin tarkoitettu koodi ja sitä käytetään lähinnä kaupan piirissä. EAN-koodin pituus on 8 tai 13 numeroa, ja se on tuotekohtainen. Se ilmaisee tuotteen alkuperämaan, valmistajan ja tuotenumeron. Teollisuudessa ja muissa sovelluksissa käytetään yleisimmin 2/5 Interleaved tai Code 39 -koodeja, joiden pituus voidaan valita käyttökohteen mukaan. 2/5 Interleaved voi sisältää numeerista tietoa, kun taas Code 39:n avulla saadaan koodatuksi sekä kirjaimet että numerot. Vastaavasti Code 39 vaatii hieman enemmän tilaa kuin 2/5 Interleaved. Alla on kuvattu tarkemmin joitain tunnetuimpia viivakoodityyppejä. /40/ 3.4.1 UPC ja EAN UPC (Universal Product Code) on ensimmäinen yleistä suosiota saavuttanut viivakoodisymbologia ja se dominoi nykyään elintarvike- ja pientavaratuotteiden merkintää. Sitä käytetään tuotteen tunnistamiseen ja hintatarkistukseen myyntihetkellä. Viime aikoina sitä on alettu käyttää asiakkaiden ostotottumusten seurantaan (kuva 7). /6, 27, 40/

EAN (European Article Numbering) on kansainvälinen Euroopassa käytössä oleva koodistandardi ja UPC on vastaava amerikkalainen järjestelmä. EAN on numeerinen koodi (luvut 0-9). EAN-koodin elementit voivat olla 1-4:n moduulin levyisiä. Yhden merkin (numeron) leveys on aina seitsemän moduulia ja yksi merkki muodostuu kahdesta viivasta ja kahdesta välistä. Symbolin kokoa voi vaihdella tietyissä rajoissa tarpeiden mukaan, mutta luettavuus on parhaimmillaan, jos symbolin korkeus on suurempi kuin leveys. Lisäksi skannausprosessia helpottaa se, että symboli voidaan lukea molempiin suuntiin. EAN-koodin koko voi vaihdella suurennussuhteen 0,80-2,00 mukaisesti. Nimelliskokoisen koodin suurennussuhde on 1,00 ja tällaisen koodin moduulileveys on 0,33 mm. EAN-koodin pituus on aina 8 (EAN-8) tai 13 (EAN-13) numeroa ja sen sisältö on eritelty EAN-normeissa. EAN-koodirekisteriä ylläpitää Suomessa Keskuskauppakamari. Symbologian etuja ovat suuri tiheys ja tarkistusnumeron lisäämä lukuvarmuus, mutta pienet painotoleranssit saattavat vaikeuttaa käyttöä. /6, 27, 40/ 11 Kuva 7. UPC-viivakoodi /40/ 3.4.2 Interleaved 2/5 Interleaved 2/5 on vaihtelevan pituinen nuumeerinen symbologia, joka on suosittu etupäässä varastointisovelluksissa (kuva 8). Merkki muodostuu kahdesta leveästä ja kolmesta kapeasta koodielementistä ja tarkistusmerkki ei ole pakollinen. Interleaved 2/5 -symbolilla saavutetaan hyvä merkkitiheys koodaamalla numeroita pareina, sillä ensimmäinen merkki on painettu viivoihin ja seuraava näiden viivojen väleihin. Tämä takaa myös sen, että symbolissa on numeroita aina parillinen määrä. Symbolin kaikissa väleissä on tietoa, minkä vuoksi painotoleranssi on pieni (± 10 %). /6, 40/ Kuva 8. Interleaved 2/5 -viivakoodi /6/ 3.4.3 Code 39 Code 39 on luultavasti käytetyin symbologia UPC / EAN -koodien jälkeen, sillä se vastaa hyvin useiden eri alojen tarpeita. Code 39 on itsetestaava alfanumeerinen koodi, jolla voidaan koodata 43 merkkiä sisältäen ASCII-merkistön (kuva 9). Merkki koostuu yhdeksästä koodielementistä, joista viisi on viivoja ja neljä välejä. Näistä yhdeksästä elementistä kaksi

viivaa ja yksi väli ovat leveämpiä kuin muut elementit. Leveät elementit edustavat binääriykkösiä (1) ja kapeat elementit binäärinollia (0). Viivojen lisäksi myös välit sisältävät tietoa, minkä vuoksi painotoleranssi on pieni. /6, 40/ 12 Kuva 9. Code 39 -viivakoodi /6/ 3.4.4 Code 128 Code 128 on alfanumeerinen jatkuva koodi teolliseen ja yleiseen käyttöön, jonka käyttösuosio kasvaa jatkuvasti (kuva 10). Se on korvaamassa 2/5 Interleaved -symbologian, jossa tarkistusmerkit eivät ole pakollisia. Sillä voidaan koodata 103 erilaista merkkiä käyttäen kolmea vaihtoehtoista merkistöä. Kaikki ASCII-taulukon merkit voidaan koodata käyttämällä merkistöjä A ja B. Merkistöä C käytettäessä voidaan koodata numeerista dataa kaksinkertaisella tiheydellä. Yksi merkki koostuu kuudesta elementistä, joita voi olla neljää eri leveyttä. Yhden merkin kokonaisleveys on 11 moduulia ja se koostuu kolmesta viivasta ja kolmesta välistä. Koodi on itsetestaava ja tarkistusnumero koodin lopussa on pakollinen. Koodi voi olla vaihtelevan pituinen ja se voidaan lukea molempiin suuntiin. Koodi 128 -symbolilla voidaan koodata kuusi merkkiä pienempään tilaan kuin millään muulla lineaarisella symbologialla. /6, 40/ Kuva 10. Code 128 -viivakoodi /6/ 3.5 Kaksiulotteiset symbologiat Kuten aiemmin kerrottiin, 1-D symbologioissa tiedon eheys varmistetaan alku- ja loppumerkeillä sekä tarkistusmerkeillä. Tästä johtuen myös lievästi vahingoittuneita symboleja voidaan lukea onnistuneesti. 2-D symbolissa tieto sijaitsee pienissä neliön tai kuusikulmion muotoisissa elementeissä, mikä vähentää huomattavasti identtisiä lukupolkuja. Tämä periaatteellinen ero mahdollistaa 2-D symboleilla saavutettavan suuren datatiheyden kasvun 1- D symboleihin verrattuna (kuva 11). Datan identtisen toistuvuuden väheneminen aiheuttaa kuitenkin sen, että 2-D symboleissa käytetään monimutkaisia virheiden havaitsemis- ja korjausjärjestelmiä. /1, 5, 43/

13 Kuva 11. Kaksiulotteinen symboli mahdollistaa suuren tietomäärän tallentamisen pieneen tilaan ja viivakoodia paremman datatiheyden. Lisäksi symboleja voidaan lukea osittaisesta vahingoittumisesta huolimatta /1/ 2-D symboli näyttää yleensä neliönmuotoiselta ruudukolta, joka koostuu mustista ja valkoisista elementeistä. Se sisältää säännöllisen etsintäkuvion, joka erottaa sen muusta ympäröivästä datasta. Taulukossa 1 on esitetty joitain yleisimpien 2-D symbologioiden ominaisuuksia. /1, 5, 43/ Taulukko 1. Datakapasiteettien vertailu /5/ QR Code DataMatrix PDF-417 Tyyppi Matriisi Matriisi Pinottu viivakoodi Kapasiteetti Numeerinen 7089 3116 2710 (merkkiä) Alfanumeerinen 4296 2355 1850 Binäärinen 2953 1556 1018 Nykyään on olemassa useita kymmeniä kaksiulotteisia symbologioita, joista on esitelty tunnetuimpia seuraavissa luvuissa. 3.5.1 DataMatrix Acuity CiMatrixin kehittämä DataMatrix on 2-D matriisi, joka on suunniteltu suuren tietomäärän tallentamiseen erittäin pieneen tilaan (kuva 12). DataMatrix-symboli pystyy taltioimaan tuhansia merkkejä ja tulostuskoko voidaan pitää pienenä. Käytännössä tiheyttä rajoittavat kuitenkin tulostus- ja lukuresoluutio. Sama tieto toistuu koodissa useaan kertaan, minkä vuoksi kaikki taltioitu tieto voidaan lukea, vaikka osa koodista olisikin tuhoutunut.

Kaikkien symbolien kahdella vierekkäisellä reunalla on yhtenäinen viiva ja kahdella muulla reunalla on samankokoisia neliöitä tasaisin välein. Näiden reunakuvioiden avulla voidaan määritellä koodin orientaatio ja tulostustiheys. Symboli luetaan käyttämällä CCD-kameraa tai skanneria. /1, 43, 52/ 14 Kuva 12. DataMatrix-symboli /1/ 3.5.2 QR Code QR Code -symbolit ovat neliön muotoisia ja ne voi tunnistaa helposti kolmessa kulmassa olevista etsintäkuvioista (Position Detection Pattern), joissa on vuorotellen tummia ja vaaleita neliöitä (kuva 13). Suurin symbolikoko on 177:n elementtiä sisältävä neliö, johon voi tallentaa 7089 numeroa tai 4296 kirjainmerkkiä (Data Area). Eräs symbologian merkittävä erikoispiirre on se, että siihen voidaan suoraan tallentaa japanilaisia Kanji- ja Kana-merkkejä (kuva 14). QR Code on suunniteltu nopeaa lukemista varten käyttäen CCD-kameroita ja kuvankäsittelyteknologioita. QR Code sisältää virheenkorjausjärjestelmän, minkä johdosta data voidaan lukea, vaikka osa (jopa 30%) symbolista olisikin vahingoittunut tai likainen. /1, 5, 43/ Kuva 13. QR Code -symbolin rakenne /5/

15 Kuva 14. QR Code -symbolia voidaan käyttää monipuolisesti /24/ 3.5.3 PDF-417 PDF-417 on tällä hetkellä yleisin logistiikkasovelluksissa käytetty kaksiulotteinen symbologia (kuva 15). Se on rakenteeltaan pinottu symbologia, jokaa koostuu 17 moduulista, joista kukin sisältää 4 viivaa ja väliä. Symbolissa on aloitus- ja lopetusmerkit, jotka ovat koko symbolin korkuisia. PDF-417 symboliin voidaan koodata enintään 1850 ASCII-merkkiä tai 2725 numeroa. Varsinaisen viestin lisäksi se sisältää huomattavan määrän virheenkorjaustietoa, mikä mahdollistaa symbolin lukemisen myös osittain tuhoutuneena. Symbolin lukemiseen voi käyttää laserlukijaa tai CCD-skanneria ja tulostamisessa tulee käyttää lämpösiirtoa tai lasertulostusta riittävän suuren resoluution aikaansaamiseksi. PDF-417:n muokattavia parametrejä ovat mm. rivien ja sarakkeiden lukumäärä sekä virheenkorjaustaso. /1, 32, 43/ Kuva 15. PDF-417 -symboli /1/

16 3.6 Muunlaiset symbolit 3.6.1 Circular DataMatrix fiducial Tämänkaltaisen pyöreän matriisin avulla voidaan luoda 32768 erilaista symbolia (kuva 16). Oletetaan, että symbolin halkaisija on 8u, missä u on yksi pituusyksikkö. Kaikissa symboleissa on uloin musta rengas, jonka leveys on 1u. Sen lisäksi on kaksi datarengasta, joista kukin on leveydeltään 1u. Symbolin keskellä on myös musta rengas, jonka leveys on 1u. /56/ Kuva 16. Circular DataMatrix Fiducial -symboleja, joissa on koodit 101, 1967 ja 32767 /56/ Ulkorenkaan rakenne: rengas on aina kokonaan musta Sisärenkaan rakenne: sisärengas koostuu mustasta ympyrästä, jonka halkaisija on 2u. Sen keskellä on silmä, jonka halkaisija on 3/8u. Tämä rengas auttaa symbolin etsimisessä. Datarenkaiden rakenne: kumpikin datarengas on jaettu kahdeksaan samankokoiseen 45 asteen sektoriin. Kolmella sektorilla on määrätty rakenne. Kahta näistä sektoreista käytetään symbolin orientaation määrittämiseen, jotta viivakoodirakenne voidaan tunnistaa. Nämä sektorit ovat valkoisia ja niiden keskellä on halkaisijaltaan 3/8u kokoinen musta ympyrä. Ympyröiden etäisyys keskeltä on 17/8u. Nämä kolme pientä ympyrää muodostavat 45-45- 90 muotoisen kolmion. Näiden kahden sektorin välissä on musta sektori, joka yhdistää kaikki mustat alueet (lukuunottamatta kahta pientä ympyrää). Loput 5 sektoria sisältävät varsinaiset datasolut. Kussakin sektorissa on 3 solua (eli yhteensä 15), jotka voivat olla mustia tai valkoisia. /56/ Tarpeen vaatiessa symbolin rakennetta voidaan muuttaa, jotta erilaisten vaihtoehtojen määrää saadaan lisättyä. Tämä voidaan tehdä esimerkiksi muuttamalla mustia alueita yhdistävä sektori datasoluiksi tai lisäämällä datarenkaiden määrää. /56/ 3.6.2 Fiducial-symbolit Tämänlaisten symbolien suurin ero matrsiisisymboleihin verrattuna on se, että itse symboli ei sisällä mitään koodattua dataa (kuva 17). Se ainoastaan tunnistetaan useiden vaihtoehtojen joukosta, ja varsinainen tieto haetaan erillisestä tietokannasta. Tunnistuksen yhteydessä kuvattavaa symbolia verrataan ennalta syötetyihin kuvioihin, ja tunnistus onnistuu löydettäessä toisiaan vastaava pari. /42/

17 Kuva 17. Kolme erilaista tunnistuskuviota /11/ Tällaisia symboleja käyettään esimerkiksi Augmented Reality -sovelluksissa. Kun kuvattava symboli näkyy näytöllä, sen päälle luodaan tietokoneen avulla kolmiulotteinen kuva, jonka asento vaihtuu kameran liikkeiden mukana. /42/ 3.6.3 Image Barcodes Matriisikoodien heikko puoli on se, että ne eivät anna painotuotteelle visuaalisesti mitään lisäarvoa. Hewlett-Packard on kehittänyt tätä ongelmaa ajatellen visuaalisesti merkityksellisen symbolin. Image Barcode -menetelmä (IBC) muistuttaa tavallista matriisikoodia, mutta dataelementit muodostavat tunnistettavissa olevan kuvion. Image Barcode -symbolin datakapasiteetti sijoittuu tavallisen matriisikoodin ja digitaalisen vesileimauksen väliin, joten pienikokoisiin kuviin voidaan koodata suuria määriä tekstiä tai jopa äänitiedostoja. Symboli voidaan koodata käyttämällä useampaa kuin kahta harmaasävyä, mutta dekoodauksen toimivuuden kannalta paras ratkaisu on käyttää vain mustaa ja valkoista. /45/ Kuva 18. Image Barcode -symboli /45/ IBC-menetelmässä tieto koodataan kaksisävyiseen pohjakuvaan käyttäen kuvan lohkojakoon perustuvaa XOR-modulaatiota. Jatkuvasävyinen kuva on ensin muutettava kaksisävyiseksi kynnystämällä, minkä jälkeen IBC-koodaus voidaan toteuttaa. IBC-symboli pystyy kuvaamaan tietyn harmaasävyisen pohjakuvan sävynvaihteluja ja samalla sisältämään suuren määrän koodattua tietoa. Tämä saadaan aikaan käyttämällä block error diffusion -mene-

18 telmää, jota on muokattu samanaikaisesti tehtävään koodaukseen ja kynnystykseen soveltuvaksi (kuva 19). /45/ Kuva 19. Image Barcode -symbolin muodostaminen harmaasävyisestä kuvasta (yllä) sekä XOR-modulaatioon perustuva koodausmenetelmä (alla) /45/ Koodauksessa pohjakuva jaetaan lohkoihin, joiden ei välttämättä tarvitse olla neliön muotoisia. Tämän jälkeen yksinkertaisimmassa tapauksessa jokaisesta lohkosta tehdään musta tai valkoinen pohjakuvan sävyjen perusteella. Sitten koodisanat moduloidaan lohkoihin XORmenetelmällä, minkä seurauksena moduloidut lohkot muodostavat koodin sisältävän kuvan. Koodauksesta johtuvat lohkon sävynmuutokset kompensoidaan vierekkäisissä käsittelemättömissä lohkoissa käyttäen lohkovirhesuodatinta. IBC-symboli voidaan dekoodata skannaamalla tulostettu symboli. Ensiksi tunnistusmerkkien perusteella määritellään symbolin nurkat, minkä jälkeen korjataan skannausprosessin yhteydessä syntyneet geometriset virheet. Sitten symboli voidaan dekoodata todennäköisyyksiin perustuvaa menetelmää käyttäen. Tämä voidaan tehdä kahdella eri tavalla riippuen siitä, onko alkuperäinen jatkuvasävyinen kuva tunnettu vai ei. /45/ 3.6.4 Digitaaliset vesileimat Digitaalista vesileimaa voidaan kuvata parhaiten vertaamalla sitä perinteiseen vesileimaan, jotka sisällytetään paperiin valmistuksen yhteydessä tarjoamaan todisteita paperin alkuperästä. Perinteiset vesileimat ovat näkymättömiä, paitsi silloin kun paperia katsotaan valoa vasten. Digitaaliset vesileimat ovat ihmissilmälle näkymättömiä, mutta ne voidaan lukea kuvista tai jostain muusta digitaalisesta mediasta kyseiseen tarkoitukseen suunnitellun ohjel-

miston avulla. Vesileima sisältää yleensä tietoa kuvan luojasta, omistajasta tai kuvasta itsestään. Vesileimoja käytetään usein tekijänoikeustiedon viestittämiseen ja väärentämisen ehkäisyyn, mutta vesileimaustekniikoiden kehittyessä ja yleistyessä syntyy jatkuvasti myös uudenlaisia sovelluksia. /46, 53/ Vesileimasovelluksen suunnittelussa on otettava huomioon useita tavallisia tekijöitä. Vesileiman kestävyydellä tarkoitetaan systeemin kykyä havaita vesileima erityisesti kuvan manipuloinnin jälkeen. Kestävyyden parantaminen usein alentaa vesileiman maksimitietomäärää. Toisin sanoen, mitä kestävämpi vesileimasta tehdään sitä vähemmän siihen mahtuu tietoa. Kuvasta 20 voidaan havaita toinen tavallinen ongelma, sillä vesileiman näkyvyys (tai paremminkin näkymättömyys) kilpailee kestävyyden kanssa. Lisäksi suunnitteluun vaikuttaa systeemin vaadittava suorituskyky. /46, 53/ 19 Kuva 20. Vesileimasovelluksen suunnitteluun vaikuttavat tekijät /46/ Suorituskyky tarkoittaa nopeutta, jolla vesileima liitetään kuvaan tai havaitaan kuvasta. Lisäksi voidaan mitata nopeutta, jolla havaitaan vesileiman puuttuminen kuvasta. Suorituskyvyn vaatimukset voivat toki vaihdella sovelluksesta riippuen, mutta niiden tärkeys sovelluksen käytettävyyden kannalta ei muutu. Jos keskitytään liikaa teknologisiin näkökulmiin ja unohdetaan käytettävyys, saadaan sovellus, joka saattaa miellyttää sen suunnittelijoita, mutta ei käyttäjiä. /46, 53/ 3.7 Digitaalinen vesileimaus painotuotteissa Digitaalisia vesileimoja voidaan käyttää myös painotuotteissa. Tällöin kuvaan lisätään vesileima digitaalisessa muodossa, minkä jälkeen vesileimattu kuva voidaan tulostaa paperille. Myöhemmin tulostettu kuva skannataan ja vesileima voidaan lukea tietokoneen tai muun lukulaitteen avulla. Vesileimatun kuvan tulostuksen ja skannauksen yhteydessä kuvaan syntyy paljon vesileiman lukemista häiritseviä tekijöitä kuten kohina ja erilaiset vääristymät, mikä vaikeuttaa kokonaisprosessin toteutusta käytännössä. Riippuu kuitenkin sovelluksen vaatimuksista, kuinka vaikeita haasteita on ratkaistava. Esimerkiksi sellainen sovellus, jossa tietoturva tai väärennösten ehkäisy eivät ole olennaisia tekijöitä (mm. ilmainen viihde), on helpompi toteuttaa kuin näitä ominaisuuksia vaativa sovellus (mm. henkilötodistukset). /2, 46, 61, 68, 69/