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

Storlek: px
Starta visningen från sidan:

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

Transkript

1 ITN, Norrköping 4 december 2011 Programmering för avläsning och avkodning av QR-koder i MATLAB PROJEKT I AVANCERAD BILDBEHANDLING OCH BILDANALYS TNM034 Medlemmar: Henrik Bäcklund Anders Hedblom Niklas Neijman Kontakt: henba892@student.liu.se andhe893@student.liu.se nikne866@student.liu.se

2 Sammanfattning Användning av QR-koder blir allt vanligare i vårt moderna samhälle. Idag syns de överallt och underlättar sökningsprocesser och informationshämtning för de som bär på en smart phone. QRC står för Quick Response Code, det vill säga snabbt gensvars-kod. Grundidén är att man vill kunna läsa av den tvådimensionella koden med en kamera och snabbt få ut större mängder information. Bilden måste genomgå ett antal procedurer, så som inläsning till ett program, tröskling, justering för diverse distorsioner samt avkodning. Det finns givetvis olika sätt att genomföra detta på. Den här rapporten tar upp några av dessa men koncentrerar sig i huvudsak på att beskriva den metod som användes under ett projekt i kursen Avancerad Bildbehandling och Bildanalys TNM034, vid Linköpings Universitet, höstterminen Programmet som använts för att lösa QRC-projektet är MATLAB, som lämpar sig bra för de flesta typer av kodad bildbehandling. En nackdel med MATLAB är att det är ett relativt slött program i jämförelse med exempelvis applikationer som är kodade i C++. Fördelarna överväger dock MATLAB s Image Processing Toolbox innehåller en rad färdiga funktioner som lämpar sig ypperligt till detta projekt. Alla färdiga funktioner som har använts förklaras, men inte i detalj. Den här rapporten tar upp teori och tillvägagångssätt som använts för att avläsa och avkoda QR-koder i godtyckliga omgivningar.

3 Innehållsförteckning 1 Inledning Syfte Metod Beteckningar Importering av bilder till MATLAB Tröskling och brusreducering Hitta QR-koden i bilden Hitta referensmarkeringar (FM) Algoritmen Hitta upprätningsmarkeringen (AP) Transformering Morfologiska operationer Avkodning Resultat Erhållen text från testbilderna Exempelbild Avslutning Andra metoder Diskusion Litteraturförteckning 18

4 Figurer 1.1 Exempel på bild som skall avkodas Inläst bild. Tydligt förvrängd och förstörd av brus Histogram för hela bilden Skalad version av histogramet Utjämnat histogram Skalad version av utjämnat histogram Trösklad version av bilden. Här har alla pixlar värdet noll eller ett Utseendet på en av de tre referensmarkeringarna. Källa: [4] Ett möjligt fall av extremt perspektiv Hoplagd horisontell och vertikal sökning. De röda ringarna är tillagda efteråt för att illustrera var det bildas kryss, dvs mittpunkterna för FM Utseende på upprätningmarkering Bilden visar vilket FM som väljs först, beroende på rotation QR-koden upprättad och transformerad. Lägg märke till att koden både roterats och tryckts ihop Bilden har snyggats till med funktionen bwmorph() Mappad bild. De enstaka mappade pixlarna är de som kommer att läsas av vid avkodningen En av de mer förvrängda bilderna, mappad och klar. Förstoringen är tillagd i efterhand

5 Kapitel 1 Inledning QR-kod [1] är en kodform ursprungligen skapad av Toyota för att på ett snabbt och enkelt sätt kunna hålla reda på sina bilar under tillverkningsprocessen. QR står för Quick Response och grundar sig i att avläsning av den tvådimensionella koden snabbt ska ge ett resultat. De är även kända för att innehålla relativt mycket information jämfört med den yta de upptar. Då det idag nästan är en självklarhet att mobiltelefoner har en kamera inbyggd i sig blir QR-koden allt mer vanlig i dagens samhälle. QR-koder kan idag hittas i många situationer. Tidningsannonser är ett av de områdena där läsaren snabbt och enkelt med mobilens hjälp kan ta kort avläsa koden och i många fall bli länkad vidare till ytterligare information om den aktuella annonsen. Ett annat exempel är bibliotek, som sätter en QR-kod på böckernas ram. Man kan då enkelt se hur många exemplar av boken som finns inne och även direkt via mobilen göra en reservation av boken. I denna rapport beskrivs i huvudsak ett tillvägagångssätt för att avkoda bilder som innehåller delvis förvrängda QR-koder. Andra tillvägagångssätt kommer också att diskuteras men inte förklaras i detalj. Rapporten börjar med den del som handlar om hur brus reduceras och därefter hur man finner ett bra värde att tröskla bilden med. Detta för att få en binär bild, där vita och svarta QR-pixlar är så väl uppdelade som möjligt. Med bilden brusreducerad och trösklad beskrivs sedan i rapporten hur man upptäcker de så kallade Fiducial Marks och Alignment Pattern (Referens- och upprätningsmarkeringar). Det är med hjälp av dessa som QR-koden kan upptäckas i en rörig omgivning. Dessa markeringar är även möjliga att använda som referenspunkter när bilden ska transformeras för att få bort eventuella rotationer, skjuvningar och förvrängningar. Detta förklaras i avsnittet om transformering. Innan man ger sig in på avkodning bilden så utförs en del morfologiska operationer för att återställa de delar av meddelandet som eventuellt är förstört. Det kan handla om pixlar som har hamnat fel eller fått felaktigt värde. Efter detta följer proceduren på hur det faktiska meddelandet utvinns. Här handlar det om att omvandla de svartvita binära fälten till tecken. Rapporten redovisar därefter resultaten som erhållits som följs av en avslutning. Här diskuteras även andra metoder för att lösa problemet med avläsning och avkodning av QR-koder. Detta projekt är begränsat att endast behandla QR-koder med ett visst antal QR-pixlar. Avkodning sker heller inte enligt standard, utan bit för bit med ASCII-kod. Detaljer hittas i [2]. 1

6 1.1 Syfte Syftet med denna rapport är bland annat att: Visa vad QR-koder kan användas till Förklara ingående hur man kan avläsa och avkoda dessa Dokumentera för- och nackdelar med den valda metoden Ge insikt i vilka problem som kan uppstå Figur 1.1: Exempel på bild som skall avkodas. 2

7 Kapitel 2 Metod 2.1 Beteckningar Beteckningar som används genom rapporten är: Skalärer gemener (a), Matriser/Vektorer versaler (A), Referensmarkeringar (Fiducial Marks) FM, Upprätningsmarkering (Alignment Pattern) AP. 2.2 Importering av bilder till MATLAB Importering av Bilder till MATLAB görs enklast med den inbyggda funktionen imread(). Bilderna som används i projektet är tagna från [3]. För att kunna jobba vidare med bilderna används funktionen im2double() för att säkerställa att alla pixelvärden är av typen double. Det är även önskvärt att kunna hantera både färgbilder och svartvita bilder. Eftersom hantering av dessa två typer av bilder är väldigt annorlunda är det önskvärt att konvertera alla färgbilder till svartvita sådana. Detta görs med en enkel if-sats direkt efter bildinläsningen. Om bilden är en färgbild används funktionen rgb2gray() som returnerar en gråskalebild. Figur 2.1 visar den inlästa bilden. Figur 2.1: Inläst bild. Tydligt förvrängd och förstörd av brus. 3

8 2.3 Tröskling och brusreducering För att underlätta processen att hitta QR-kodens FM behövs en bild där informationen i QR-koden är tydlig. Koden blir tydlig genom att reducera bruset i bilden och därefter tröskla den. Genom att använda ett medelvärdesfilter av storleken 3x3 kan bruset i en bild reduceras. Medelvärdesfiltret gör att närliggande pixlar får en mindre variation med avseende på intensitet. När medelvärdesfiltret applicerats och bilden blivit brusreducerad ska bilden trösklas. Värdet att tröskla med bestäms genom att använda dess histogram. Ett bra trösklingsvärde är ett värde som motsvarar det lokala minimumet mellan de två övervägande intensitetskällorna, vilket kan ses i mitten av figur 2.2. Figur 2.2: Histogram för hela bilden. Genom att titta på hur derivatan skiftar tecken kan det lokala minimumet hittas. Problemet är dock att det finns mer än ett lokalt minimum mellan de två intensitetskällorna. Detta framgår av figur 2.3, som är en förstoring av området mellan de två övervägande intensiteterna. För att Figur 2.3: Skalad version av histogramet. göra histogrammet jämnare faltas detta med ett normaliserat gaussfönster av längden 50. Efter faltningen ser histogrammet ut enligt figur 2.4 4

9 Figur 2.4: Utjämnat histogram. De lokala minimumen har nu reducerats till ett lokalt minimum vid intensiteten som ligger mellan de två övervägande intensitetskällorna enligt figur 2.5, som är en förstoring av figur 2.4. Figur 2.5: Skalad version av utjämnat histogram. Faltningen med gaussfönstret förskjuter signalen. Därför subtraheras halva filterlängden från den förskjutna intensiteten för att finna det verkliga trösklingsvärdet. Bilden trösklas slutligen med det funna tröskelvärdet. Resultatet på den trösklade bilden kan ses i figur

10 Figur 2.6: Trösklad version av bilden. Här har alla pixlar värdet noll eller ett. 6

11 2.4 Hitta QR-koden i bilden Att upptäcka en QR-kod i en godtycklig bild är inte så enkelt som man skulle kunna tro. Människan är duktig på att hitta mönster och symboler i kaos, men för en dator betyder ingen pixel i en bild mer än någon annan pixel. En bild kan sökas igenom på flera sätt. Det mest intuitiva är att titta på pixel för pixel tills man har genomsökt hela bilden. Ett sätt att göra detta på är att börja uppe i översta vänstra hörnet och söka sig åt höger längs med första raden. När radslut nås hoppar man ner till raden under för att upprepa rörelsen. MATLAB är optimerat för att arbeta med matrisoperationer. Det vill säga, istället för att jobba med ett värde i taget kan många värden i en matris, vilket är just vad en bild är, behandlas. Däremot kan det vara lättare att använda sig av nästlade loopar om det är önskvärt att jobba på ett enda värde i taget. Det vill vi i detta fall. Detta stycke kod visar hur vi kan gå igenom bildens alla pixlar för att hitta någonting som liknar en QR-kod. Frågan är; hur vet vi när vi stöter på en QR-kod om vi bara tittar på en pixel åt gången? Att pixeln är svart eller vit säger i sig ingenting alls. Det är följden av svarta och vita pixlar som är intressant Hitta referensmarkeringar (FM) För att QR-koder ska kunna hittas i godtyckliga omgivningar har de begåvats med så kallade fiducial marks. Dessa utmärker sig genom att skapa ett visst förhållande i svarta och vita pixlar, när man skannar dem, oavsett i vilken riktning detta sker i. Det spelar heller ingen roll hur stor QR-koden är i jämförelse med sin omgivning. Så hur ser då ett FM ut? Det visar figur 2.7. Här visas även att det inte spelar någon roll hur markeringen avläses, så länge detta sker i en rät linje. Figur 2.7: Utseendet på en av de tre referensmarkeringarna. Källa: [4]. Ett förhållande, 1 : 1 : 3 : 1 : 1, av svarta och vita pixlar kommer alltid att erhållas vid en perfekt skanning. Detta stämmer dock inte helt i verkligheten. 7

12 Eftersom en bild är uppbyggd av ett finit antal pixlar är det omöjligt att få en perfekt avbildning av en QR-kod, så vida dess sidor inte är helt lod- och vågräta. Detta uppnås i princip bara i fall med artificiellt skapade koder sådana som inte är inlästa med hjälp av en kamera. Vad det innebär är att ett perfekt förhållande av olikfärgade pixlar kommer aldrig att fås. Därför krävs en viss tillåten felmarginal hos mätningarna. Ett värde som ska vara 1 kan tillåtas att ligga mellan 0.7 och 1.3. Det är såklart endast i extrema fall som värdena faktiskt kommer att skilja sig så mycket, men det kan inträffa. Exempelvis om särskilda morfologiska operationer har utförts på den trösklade bilden för att ta bort avstickande pixlar etc. Ytterligare problem uppstår när bilden är förvrängd, det vill säga, bildens normal inte är ortogonal med kamerariktingen. Markeringarna kan då se ut på följande sätt: Figur 2.8: Ett möjligt fall av extremt perspektiv När ett FM ser ut som ovan inträffar det problem att en linjär förskjutning av förhållandet har skapats. Det kanske nu istället motsvarar 1.4 : 1.2 : 3 : 0.8 : 0.6. Problemet kan dock lösas till viss grad genom att man tittar på förhållanden mellan adderade områden. Vi lägger ihop det första och andra området, det andra och tredje området och så vidare. I den perfekta avläsningen skulle då förhållandet av olikfärgade pixlar bli 2 : 4 : 4 : 2, vilket även är noterat i figur 2.7. På så vis blir avläsningsalgoritmen mycket mindre känslig för störningar. Att använda dessa metoder för att skapa felmarginaler är i princip helt nödvändigt för att kunna hitta och läsa av QR-koder i mer komplicerade bilder Algoritmen Det är som tidigare sagt önskvärt att finna det magiska förhållandet hos ett FM, eller närmare bestämt tre stycken, för att kunna läsa av en QR-kod. Följande avsnitt förklarar hur avläsningsalgoritmen fungerar. Enligt den nästlade for-loopen, i stycket Hitta QR-koden, loopas den valda bildens pixlar igenom, en efter en. Bilden är sedan tidigare trösklad, så det som kan inträffa är antingen att en pixel har värdet 1 (den är vit), eller att den har värdet 0 (den är svart). När en svart pixel upptäcks för första gången innebär detta att vi skulle kunna befinna oss i den yttersta kanten av ett FM. Bilden måste skannas vidare för att vi säkert ska veta. Men för att kunna jämföra med kommande pixlar behöver föregående pixlar sparas undan i en vektor med fem element. Denna vektor kallas framöver för V. Det behöves också en variabel p som håller reda på i vilket element i V vi befinner oss. Just nu har alla element i vektorn V, förutom det första, värdet noll. Variablen p har värdet ett. I V (p) tillökas värdet med ett på grund av den svarta pixeln. Så länge svarta pixlar fortsätts att läsas händer inget annat än att värdet i samma position i V ökas på med ett för varje svart pixel som hittas. När en vit pixel stöts på händer nu fler saker. 8

13 1. Eftersom detta är i början av bilden vet vi att p har värdet ett. Men det skulle också ha kunnat röra sig om det vita området efter mittensektionen i FM. Vi måste alltså kolla, om p = 1 p = 3, då ska p tillökas med värdet ett. I nuvarande fall hamnar vi i element två i V. Denna position är nu redo att fyllas med antalet kommande vita pixlar. 2. Vi måste också kolla om p = 5. Om detta är sant har vektorn V fyllts med varierande svarta och vita pixlar och har upptäckt den första vita pixeln utanför ett potentiellt FM. Nu jämförs alla värden i V enligt tidigare regler. Stämmer förhållandet mellan värdena har ett FM hittas och positionen sparas (aktuell rad är känd och kolumnen till positionen är aktuell kolumn V (5) V (4) V (3)/2). Koordinaterna sparas i en 2x3-matris, som i slutändan kommer innehålla alla tre FM. Om förhållandena stämmer måste V också nollställas! Proceduren börjar om på nytt vid intilliggande pixel. 3. Om p = 5, men förhållandet inte stämmer (dvs. ett FM hittades inte), måste alla element propageras två steg åt vänster i V. Det vill säga, position 1 får värdet från position 3 och så vidare. V (4) tilldelas ett, eftersom en vit pixel trots allt hittades och V (5) tilldelas noll. Positionen p tilldelas värdet 4 och uppstegandet av vita pixlar i denna position i V fortsätts. 4. Om fall 1 och 2 är falska kan värdet i V (p) lugnt ökas på, eftersom p då har värdet två eller fyra positionen för vita pixlar. Allmänt om en svart pixel upptäcks gäller: 1. Om p = 2 p = 4, öka p med ett. 2. Om fall 1 inte är sant, tillöka V (p). Hela operationen skulle kunna liknas vid en faltning, där en fem element stor vektor sveper över en stor matris. Sökningsalgoritmen körs två gånger; en för att göra en avsökning i horisotalled och en i vertikalled. Varje anrop kommer att skapa en pixelbild, med samma storlek som originalbilden. Där det eftertraktade förhållandet (2 : 4 : 4 : 2) hittas, ritas en vit pixel med värdet ett ut. Det är det sammanlagda resultatet av dessa två funktionsanrop som räknas. Där pixlarna från de båda sökningarna adderas ges värdet två i de koordinater som FM s mittpunkt befinner sig i. Här är nämligen de enda positioner som pixlarna korsas. Dessa positioner hittas med funktionen find() och har ringats in i figur

14 Figur 2.9: Hoplagd horisontell och vertikal sökning. De röda ringarna är tillagda efteråt för att illustrera var det bildas kryss, dvs mittpunkterna för FM Hitta upprätningsmarkeringen (AP) Förhoppningsvis finns nu en matris med positionerna för alla tre FM; allt som behövs för att lokalisera QR-koden i bilden. Kommande steg är att göra en transformation av hela bilden för att korregera distorsioner eller förvrängningar i bilden, så som perspektiv, rotation, skevning eller oproportionerlig skalning. För att kunna utföra perspektivtransformation krävs en fjärde referenspunkt. Detta brukar kallas för alignment pattern, då det används till att räta upp QR-koden till en rak kvadrat. Ett alignment pattern kan se ut som i figur Figur 2.10: Utseende på upprätningmarkering. Det skulle vara möjligt att använda samma metod för att hitta AP som för FM, men det medför vissa problem. Eftersom AP har en mittpunkt på endast en QR-pixels storlek är det lätt hänt att man hittar ett liknande mönster i resterande kod. I det här projektet löstes problemet genom att använda en av MATLAB s inbyggda funktioner; regionprops() [5]. Följande stycke kod visar hur man kan hitta ett AP eller FM genom att hitta tyngdpunkten för ett område, som motsvaras av den vita ringen i FM eller den svarta ringen i AP. 10

15 Eftersom regionprops(image, centroid ) ger ifrån sig fler än den önskade punkten måste man avgöra vilken som är den eftertraktade. Eftersom tre FM redan har hittats, kan ungefärlig uppskattning om var AP borde ligga göras, med hjälp av enkel trigonometri. 2.5 Transformering För att underlätta avläsningen och mappningen av alla QR-pixlarna krävs det att QR-koden är korrekt placerad och att den är kvadratisk. Dvs. det får inte förekomma någon form av distorsion, av koden, t.ex. att bilden i fråga har fotats från en vinkel som ger att QR-koden blivit förvrängd. Detta kan lösas genom att applicera en transformationsmatris på bilden. För att transformationen ska fungera korrekt måste fyra punkter (tre FM och en AP) i QR-koden lokaliseras i den otransformerade bilden, som diskuterades i delkapitel 2.4. Om inte dessa fyra punkter hittas misslyckas hela transformationen. När punkterna är lokaliserade, måste rotationen av QR-koden tas till hänsyn eftersom f ind() söker kolumnvis. Om bilden är roterad medurs så kommer punkten som är i det nedre-vänstra hörnet att lokaliseras först, annars lokaliseras punkten i övre-vänstra hörnet först, vilket illustreras i figur Figur 2.11: Bilden visar vilket FM som väljs först, beroende på rotation. Anledningen till det här är att punkterna placeras på olika positioner i vektorn som lagrar punkterna och det är avgörande för den slutliga transformationen av QR-koden. Transformationsmatrisen beräknas med hjälp av funktionen cp2tform() [6]. För att kunna beräkna transformationen behövs tre inparametrar till funktionen; placeringen av FM i den 11

16 otransformerade bilden, referenspunkter och vilken typ av transform som ska genomföras vilket är projective. Referenspunkterna är de punkter som bestämmer hur den slutliga QR-koden/bilden ska transformeras. De avgör även formen och upplösning/skala på den transformerade QR-koden. Referenspunkterna och FM i den otransformerade bilden sparas i 2x2 matriser, där elementen i matrisen innehåller koordinaterna för punkterna. Dessa två matriser används sedan som inparameterar till cp2tform() tillsammans med transformationsmetoden projective. Metoden kan hantera rotationer, skjuvningar, perspektivförvrängningar m.m. Detta medför att distorsionen av bilden endast behöver lösas med hjälp av cp2tform(), vilket även bidrar till minskad beräkningstid av den slutliga algoritmen. Den slutliga transformationen sker med funktionen imtransf orm() [7]. Funktionen har följande inparametrar; transformationsmatrisen från cpt2tf orm()och bilden som ska transformeras. Slutligen erhålls en ny transformerad bild som visas i figur Figur 2.12: QR-koden upprättad och transformerad. Lägg märke till att koden både roterats och tryckts ihop. 2.6 Morfologiska operationer Ibland kan det vara bra att ta bort eller fylla ut pixlar som har uppstått under t.ex. trösklingen. Dessa pixlar tillför falsk information och därav kan förstöra det slutliga resultatet. För att reducera/fylla dessa pixlar används morfologiska operationer. Det som visas i figur 2.12 är bilden innan operationerna är applicerade där vi kan se att kanterna är taggiga och ojämna. Det finns ett antal morfologiska operationer att välja på för att förbättra QR-koden och operationerna som används är öppning och stängning. Dessa två operationer appliceras på bilden med hjälp av funktionen bwmorph() [8]. Funktionen har följande inparametrar; bilden 12

17 som operationerna ska appliceras på och vilken typ av operation. Tillbaka ger funktionen en förbättrad bild (figur 2.13) som ska mappas för avkodning. Figur 2.13: Bilden har snyggats till med funktionen bwmorph(). Den största orsaken till att operationerna används är att fylla igen pixlar så att mappningen kan ske utan störningar. Bl.a. om det förekommer att en svart QR-pixel har några pixlar som är vita eller tvärt om. Mappningen i denna pixel skulle kunna placeras precis på en av de felaktiga pixlarna och därav avkoda till en etta istället för nolla (och vice versa). 2.7 Avkodning Genom att känna till hur många bildpixlar som motsvarar en QR-pixel är det möjligt att hitta en bra startposition för avkodningen. Startkolumnens värde hittas genom att subtrahera tre QR-pixlar från det övre vänstra FM s kolumnvärde. Startraden hittas på motsvarande sätt genom att addera fem QR-pixlar till FM s radvärde. Då QR-koden alltid innehåller ett fast antal QR-pixlar (1464 st) har denna avkodningsmetod formats för just detta antal. Utifrån startpositionen påbörjas en iterativ process att kolumnvis (vänster till höger) hämta information (uppifrån och ner) där varje kolumn- eller radsteg motsvarar en QR-pixel. Metoden är uppbyggd för att inte hämta information från FM då deras syfte inte är att bära meddelandeinformation. Innan en avkodning av QR-kodens bitar kan göras utförs en mappning med exakta positioner. Här placeras enstaka pixlar ut i mitten av de olika QR-pixlarna. Om fältet är svartfärgat sätts en vit pixel och vice versa. Detta för att det tydligt ska gå att se hur mappningen har gjorts, vilket visas i figur

18 Figur 2.14: Mappad bild. De enstaka mappade pixlarna är de som kommer att läsas av vid avkodningen. När den binära informationen erhållits från avkodningen återstår det att utvinna medelandet från den. Funktionen för att gå från binär representation av ett tal till ett faktiskt heltal (bin2dec()) enbart accepterar inpararmetrar av datatypen char så används funktionen num2str() i just syftet att erhålla denna matris av char. Då varje tecken i ASCII-kod är representerat av åtta bitar matas funktionen bin2dec() med just åtta element i taget. Resultatet är en matris med element innehållande heltal mellan Dessa heltal används sedan som inparametrar till funktionen char() där t.ex. inparametern 66 resulterar i utparametern B. Slutresultatet blir en lång textsträng. 14

19 Kapitel 3 Resultat 3.1 Erhållen text från testbilderna Efter att de till projektet tillhörande bilderna hade avkodats hittades två olika meningar: Byggbutiken online! URL: Typ: Fastigheten Älmhult Jämnhult 1:28. Friliggande villa. Byggår Boarea ca 260 m 2, biarea ca 70 m 2. Areauppgifter enligt säljaren. 6 rum, varav 4 sovrum. Tomtarea m 2. Där den första avkodas från alla Bygg X-bilder och den andra från Hus X-bilderna. 3.2 Exempelbild Figur 3.1: En av de mer förvrängda bilderna, mappad och klar. Förstoringen är tillagd i efterhand. 15

20 Kapitel 4 Avslutning 4.1 Andra metoder Det finns många sätt att avläsa och avkoda QR-koder, utan tvivel flera som är bättre än metoden som använts i detta projekt, både vad gäller snabbhet och precision. Metoden som använts att söka igenom hela bilden med for-loopar och leta efter FM s kan verka intuitiv och enkel att förstå. Men det är en slö operation som skalar dåligt med bildens storlek/upplösning. Eftersom algoritmen söker efter FM inte bara en gång, utan två (en innan transformation och en efter) kommer beräkningstiden att öka mer än kvadratiskt med ökad pixelmängd. Mer än, eftersom en relativt tung transformation också utförs på bilden, vilken blir jobbigare ju större bilden är. Säg att bildens bredd och höjd ökas till det dubbla. En fyra gånger så stor mängd av pixlar erhålls då. Det innebär att vi har två anrop av hitta FM och en transformation, som alla kommer att ta ungefär fyra gånger så långt tid att utföra. Lägg sedan till ökad tid i ytterligare funktioner, så som histogramberäkningar, morfologiska operationer och avkodning. Vi kan alltså med säkerhet säga att denna metod lämpar sig bäst för mindre bilder om man ska få ett resultat inom rimlig tid. I slutet av projektet lades även tid på att implementera en annan metod. MATLAB s egna funktion regionprops() användes, som bekant, till att hitta AP. Vi provade att använda denna på hela bilden, även för att hitta FM. Metoden fungerade på följande vis: Hitta alla centrumpunkter med regionprops() på en trösklad bild. För att veta vilka som är FM och AP, och inte bara överflödiga områden, användes en algoritm som liknas vid den i kapitel För alla centrumpunkter skannas området både åt höger och vänster. Om ett sammanslaget mönster av svarta och vita pixlar, enligt 1 : 1 : 3 : 1 : 1-förhållandet, hittas måste detta vara ett FM. På så vis undviker man att skanna majoriteten av bilden och koncentrerar sig på områden som har potential att vara gynnsamma. Här sparas enorma mängder beräkningstid. Dock slopades metoden eftersom den verkade instabil och fungerade inte på alla bilder. Problem uppstod t.ex. om ett FM fick två centrumpunkter. Ytterligare metoder till att lösa projektuppgiften på skulle kunna vara att applicera ett Laplace-filter på hela bilden. Vad detta ger är att återspegla höga frekvenser i bilden. Där det blir stora förändringar, som mellan en svart och vit pixel, blir utslaget maximalt. Där det inte händer särskilt mycket, i resterande bild, ger Laplace-filtret låga utslag. Resultatet blir en i stort sett svart bild där QR-kodens kanter blir markerade med vita linjer. Grundtanken är bra, men metoden medger många problem. Ett fotografi på en QR-kod kommer antagligen inte att återge denna som helt svart och vit. En bild på en himmel bakom ett hus ger troligtvis en högre kontrast mellan mörkt och ljust. Därför kommer man inte att veta 16

21 vilken intensitet hos pixlar i den Laplace-filtrerade bilden man ska leta efter. Endast i artificiellt skapade bilder med en perfekt svart-vit QR-kod kommer man att erhålla fullt vita kanter. Ett annat problem är att man fortfarande måste lokalisera FM och AP, i den funna QR-koden, vilket leder till algoritmer som liknar tidigare diskuterade. Det blir en aning tårta på tårta. En annan del som går att förbättra är avkodningsdelen där programmet är programmerat för att endast fungera för ett fast antal QR-pixlar. Vi ger här efter ett förslag på hur denna begränsning kan undvikas. Ett sätt att göra programmet mer generellt är att använda sig av FM s bredd och utifrån denna bredd få fram hur bred en QR-pixel är. Med denna information om QR-pixelns storlek är det enkelt att ta fram hur många QR-pixlar som finns att avkoda. 4.2 Diskusion Alla bilder som använts under träningsfasen har gått igenom vår avkodningsalgoritm, som ger text motsvarande det kodade meddelandet. Exemplet i resultatet är en av de svårare träningsbilderna att avkoda i och med att bilden är förvrängd på flera olika sätt, dvs. det är en kombination av brus, rotation och perspektiv. Då avkodningsalgoritmen hanterar dessa svåra kombinationer anser vi att det är en säker metod. Metoden kan dock inte anses vara perfekt då avkodningsalgoritmen inte hanterar extrema fall av förvrängningar, så som kraftigt perspektiv eller rörelseoskärpa. Dessa svårare fall har valts att bortse från, då projektet endast är tänkt för att förstå grundprincipen av den bildbehandling som behövs i avläsning och avkodning av QR-koder. Avkodningsalgoritmer av kraftfullare typ förekommer ofta i mobiltelefoner och andra handhållna enheter. Det är då möjligt att ta en ny bild med förvrängning i mindre skala, samt att ett snabbare programmeringsspråk kan användas. Tid har inte varit prioritet i detta projekt då MATLAB i allmänhet är en relativt seg programmeringsmiljö. Tiden som det tar att avkoda en inläst bild varierar med storlek på bilden. De mindre bilderna tar 1-3 sekunder på sig, medan de högupplösta tar upp emot 10 sekunder. 17

22 Litteraturförteckning [1] Luiz F. F. Belussi and Nina S. T. Hirata. Fast QR Code Detection in Arbitrarily Acquired Images. Department of Computer Science, Institute of Mathematics and Statistics, University of São Paulo São Paulo, Brazil. Senast hämtad [2] Björn Kruse. Advanced Image Processing, TNM034, QR-code processing. Institutionen för teknik och naturvetenskap, Linköpings universitet. Senast hämtad [3] Björn Kruse. TNM034/Training/. Senast hämtad [4] Chung-Hua Chu, De-Nian Yang, Ya-Lan Pan, Ming-Syan Chen. Stabilization and extraction of 2D barcodes for camera phones. Received: 7 March 2010 / Accepted: 30 September 2010 / Published online: 21 October 2010 c Springer-Verlag 2010 [5] c The MathWorks, Inc. toolbox/images/ref/regionprops.html. Senast hämtad [6] c The MathWorks, Inc. toolbox/images/ref/cp2tform.html. Senast hämtad [7] c The MathWorks, Inc. toolbox/images/ref/imtransform.html. Senast hämtad [8] c The MathWorks, Inc. toolbox/images/ref/bwmorph.html. Senast hämtad

Ett enkelt OCR-system

Ett enkelt OCR-system 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

Läs mer

Laboration 4: Digitala bilder

Laboration 4: Digitala bilder Objektorienterad programmering, Z : Digitala bilder Syfte I denna laboration skall vi återigen behandla transformering av data, denna gång avseende digitala bilder. Syftet med laborationen är att få förståelse

Läs mer

Ansiktsigenkänning med MATLAB

Ansiktsigenkänning med MATLAB Ansiktsigenkänning med MATLAB Avancerad bildbehandling Christoffer Dahl, Johannes Dahlgren, Semone Kallin Clarke, Michaela Ulvhammar 12/2/2012 Sammanfattning Uppgiften som gavs var att skapa ett system

Läs mer

Fingerprint Matching

Fingerprint Matching Fingerprint Matching Björn Gustafsson bjogu419 Linus Hilding linhi307 Joakim Lindborg joali995 Avancerad bildbehandling TNM034 Projektkurs Biometri 2006 1 Innehållsförteckning 1 Innehållsförteckning 2

Läs mer

Tentamen, Programmeringsteknik för BME, F och N

Tentamen, Programmeringsteknik för BME, F och N LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, Programmeringsteknik för BME, F och N 2015 06 03, 14.00 19.00 Anvisningar: Preliminärt ger uppgifterna 7 + 11 + 16 + 11 = 45 poäng.

Läs mer

Bildbehandling, del 1

Bildbehandling, del 1 Bildbehandling, del Andreas Fhager Kapitelhänvisningar till: Image Processing, Analysis and Machine Vision, 3rd ed. by Sonka, Hlavac and Boyle Representation av en bild Så här kan vi plotta en bild tex

Läs mer

Bildbehandling i frekvensdomänen

Bildbehandling i frekvensdomänen Uppsala Tekniska Högskola Signaler och system Handledare: Mathias Johansson Uppsala 2002-11-27 Bildbehandling i frekvensdomänen Erika Lundberg 800417-1602 Johan Peterson 790807-1611 Terese Persson 800613-0267

Läs mer

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

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder Medicinska Bilder, TSBB3 Lab: Mätvärden på Medicinska Bilder Maria Magnusson, 22 Senaste updatering: september 27 Avdelningen för Datorseende, Institutionen för Systemteknik Linköpings Universitet Introduktion

Läs mer

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

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder Medicinska Bilder, TSBB3 Lab: Mätvärden på Medicinska Bilder Maria Magnusson, 22 Senaste updatering: september 25 Avdelningen för Datorseende, Institutionen för Systemteknik Linköpings Universitet Introduktion

Läs mer

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

Övervakningssystem. -skillnader i bilder. Uppsala Universitet Signaler och System ht Lärare: Mathias Johansson Uppsala Universitet Signaler och System ht 02 2002-12-07 Övervakningssystem -skillnader i bilder Lärare: Mathias Johansson Gruppen: Jakob Brundin Gustav Björcke Henrik Nilsson 1 Sammanfattning Syftet med

Läs mer

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

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud. Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra

Läs mer

Laboration 1. Grafisk teknik (TNM059) Introduktion till Matlab. R. Lenz och S. Gooran (VT2007)

Laboration 1. Grafisk teknik (TNM059) Introduktion till Matlab. R. Lenz och S. Gooran (VT2007) Laboration 1 Grafisk teknik (TNM059) Introduktion till Matlab R. Lenz och S. Gooran (VT2007) Introduktion: Denna laboration är en introduktion till Matlab. Efter denna laboration ska ni kunna följande:

Läs mer

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

Grafisk Teknik. Rastrering. Övningar med lösningar/svar. Sasan Gooran (HT 2013) Grafisk Teknik Rastrering Övningar med lösningar/svar Det här lilla häftet innehåller ett antal räkneuppgifter med svar och i vissa fall med fullständiga lösningar. Uppgifterna är för det mesta hämtade

Läs mer

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan MAI/Linköpings universitet Fredrik Berntsson Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan 8.00-12.00 Redovisning Lös först uppgifterna i Matlab.

Läs mer

QR-KODER. En kort guide till hur du bör tänka när du använder QR-koder i dina kampanjer.

QR-KODER. En kort guide till hur du bör tänka när du använder QR-koder i dina kampanjer. QR-KODER En kort guide till hur du bör tänka när du använder QR-koder i dina kampanjer. Vad är QR-koder? QR-koder, (Quick Response-koder), har blivit oerhört populära på senare tid. Varför? QR-koden har

Läs mer

Projekt 2 (P2) Problembeskrivning och uppdragsspecifikation

Projekt 2 (P2) Problembeskrivning och uppdragsspecifikation Projekt 2 (P2) Problembeskrivning och uppdragsspecifikation Projekt 2 Möjligheter/Problem med 2-dimensionella mätdata Uppstart: Se planen (kursens hemsida) Etapp 1 Mätdata i 2 dimensioner behöver utredas/signalbehandlas

Läs mer

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab TANA17 Matematiska beräkningar med Matlab Laboration 1. Linjär Algebra och Avbildningar Namn: Personnummer: Epost: Namn: Personnummer: Epost: Godkänd den: Sign: Retur: 1 Introduktion I denna övning skall

Läs mer

Hantera andragradskurvor del 2

Hantera andragradskurvor del 2 Hantera andragradskurvor del I den första aktiviteten om andragradsfunktioner tittade vi på hur utseendet på kurvorna när vi hade olika värden på k, a och b i ut- trcket k ( x a) b. Se nedan. Vi ser att

Läs mer

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

Bildförbättring i spatial domänen (kap. 3) Bildförbättring (enhancement) Spatial domän. Operatorer. Tröskling (threshold) Gråskale-transformationer Bildförbättring i spatial domänen (kap. 3) Punktoperationer Gråskaletransformationer Logiska & aritmetiska operationer Filtrering Faltning Lågpassfilter Högpassfilter Bildförbättring (enhancement) Förbättra

Läs mer

Tentamen Bildanalys (TDBC30) 5p

Tentamen Bildanalys (TDBC30) 5p Tentamen Bildanalys (TDBC30) 5p Skrivtid: 9-15 Hjälpmedel: kursboken Digital Image Processing Svara på alla frågor på nytt blad. Märk alla blad med namn och frågenummer. Disponera tiden mellan frågorna

Läs mer

TAIU07 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab TAIU07 Matematiska beräkningar med Matlab Laboration 3. Linjär algebra Namn: Personnummer: Epost: Namn: Personnummer: Epost: Godkänd den: Sign: Retur: 1 Introduktion 2 En Komet Kometer rör sig enligt ellipsformade

Läs mer

Histogram över kanter i bilder

Histogram över kanter i bilder Histogram över kanter i bilder Metod Både den svartvita kanstdetekteringen och detekteringen av färgkanter följer samma metod. Först görs en sobelfiltrering i både vertikal och horisontell led. De pixlar

Läs mer

5 Linjär algebra. 5.1 Addition av matriser 5 LINJÄR ALGEBRA

5 Linjär algebra. 5.1 Addition av matriser 5 LINJÄR ALGEBRA 5 LINJÄR ALGEBRA 5 Linjär algebra En kul gren av matematiken som inte fått speciellt mycket utrymme i gymnasiet men som har många tillämpningsområden inom t.ex. fysik, logistik, ekonomi, samhällsplanering

Läs mer

Projekt i bildanalys Trafikövervakning

Projekt i bildanalys Trafikövervakning Projekt i danalys Trafikövervakning F 99 F 00 Handledare : Håkan Ardö Hösten 3 vid Lunds Tekniska Högskola Abstract Using traffic surveillance cameras the authorities can get information about the traffic

Läs mer

Funktionsstudier med derivata

Funktionsstudier med derivata Funktionsstudier med derivata Derivatan ett kraftfullt verktyg för att studera och tolka funktioner Det här avsnittet handlar om att man kan använda derivatan till att bestämma en funktions egenskaper

Läs mer

Laboration i Fourieroptik

Laboration i Fourieroptik Laboration i Fourieroptik David Winge Uppdaterad 30 januari 2015 1 Introduktion I detta experiment ska vi titta på en verklig avbildning av Fouriertransformen. Detta ska ske med hjälp av en bild som projiceras

Läs mer

Programmering. Den första datorn hette ENIAC.

Programmering. Den första datorn hette ENIAC. Programmering Datorn är bara en burk. Den kan inget själv. Hur får man den att göra saker? Man programmerar den. Människor som funderar ut program som fungerar. Datorn förstår bara ettor och nollor och

Läs mer

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

Medicinska Bilder, TSBB31. Lab3: Mätvärden på Medicinska Bilder Medicinska Bilder, TSBB3 Lab3: Mätvärden på Medicinska Bilder Maria Magnusson, Avdelningen för Datorseende Institutionen för Systemteknik Linköpings Universitet Introduktion I denna laboration ska vi göra

Läs mer

i LabVIEW. Några programmeringstekniska grundbegrepp

i LabVIEW. Några programmeringstekniska grundbegrepp Institutionen för elektroteknik Några programmeringstekniska grundbegrepp 1999-02-16 Inledning Inom datorprogrammering förekommer ett antal grundbegrepp som är i stort sett likadana oberoende om vi talar

Läs mer

Robotarm och algebra

Robotarm och algebra Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson 2010-12-07 Robotarm och algebra I denna laboration skall du lära dig lite mer om möjlighetera att rita ut mer avancerade

Läs mer

Frågorna 1 till 6 ska svaras med ett kryss för varje korrekt påstående. Varje uppgift ger 1 poäng. Använd bifogat formulär för dessa 6 frågor.

Frågorna 1 till 6 ska svaras med ett kryss för varje korrekt påstående. Varje uppgift ger 1 poäng. Använd bifogat formulär för dessa 6 frågor. TM-Matematik Mikael Forsberg 74-4 Matematik med datalogi, mfl. Linjär algebra ma4a 6 Skrivtid: 9:-4:. Inga hjälpmedel. Lösningarna skall vara fullständiga och lätta att följa. Börja varje ny uppgift på

Läs mer

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28 TANA17 Matematiska beräkningar med MATLAB för M, DPU Fredrik Berntsson, Linköpings Universitet 9 november 2015 Sida 1 / 28 Föreläsning 3 Linjära ekvationssystem. Invers. Rotationsmatriser. Tillämpning:

Läs mer

Att använda bildhanteringsprogram, del 2

Att använda bildhanteringsprogram, del 2 Att använda bildhanteringsprogram, del 2 Gå till Adobe Online (M) Markeringsram - (L) Lasso - (C) Beskärning - (J) Airbrush - (S) Klonstämpel - (E) Suddgummi - (R) Oskärpa - (A) Markering av bankomponenter

Läs mer

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter. TAIU07 Föreläsning 3 Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter. 27 januari 2016 Sida 1 / 21 Logiska variabler

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

3 Man kan derivera i Matlab genom att approximera derivator med differenskvoter. Funktionen cosinus deriveras för x-värdena på följande sätt.

3 Man kan derivera i Matlab genom att approximera derivator med differenskvoter. Funktionen cosinus deriveras för x-värdena på följande sätt. Kontrolluppgifter 1 Gör en funktion som anropas med där är den siffra i som står på plats 10 k Funktionen skall fungera även för negativa Glöm inte dokumentationen! Kontrollera genom att skriva!"#$ &%

Läs mer

MMA132: Laboration 2 Matriser i MATLAB

MMA132: Laboration 2 Matriser i MATLAB MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen

Läs mer

Uppgift 1 (vadå sortering?)

Uppgift 1 (vadå sortering?) 2011-06-08.kl.14-19 Uppgift 1 (vadå sortering?) Du skall skriva ett program som sorterar in en sekvens av tal i en vektor (en array ) enligt en speciell metod. Inledningsvis skall vektorn innehålla endast

Läs mer

LINJÄRA AVBILDNINGAR

LINJÄRA AVBILDNINGAR LINJÄRA AVBILDNINGAR Xantcha november 05 Linjära avbildningar Definition Definition En avbildning T : R Ñ R (eller R Ñ R ) är linjär om T pau ` bvq at puq ` bt pvq för alla vektorer u, v P R (eller u,

Läs mer

TEM Projekt Transformmetoder

TEM Projekt Transformmetoder TEM Projekt Transformmetoder Utförs av: Mikael Bodin 19940414 4314 William Sjöström 19940404 6956 Sammanfattning I denna laboration undersöks hur Fouriertransformering kan användas vid behandling och analysering

Läs mer

Manual för ett litet FEM-program i Matlab

Manual för ett litet FEM-program i Matlab KTH HÅLLFASTHETSLÄRA Manual för ett litet FEM-program i Matlab Programmet består av en m-fil med namn SMALL_FE_PROG.m och en hjälp-fil för att plotta resultat som heter PLOT_DEF.m. Input För att köra programmet

Läs mer

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska Matlab-föreläsning 3 (4), 17 september, 2015 Innehåll Sekvenser (från förra föreläsningen) Upprepning med for-slingor och while-slingor Villkorssatser med if - then -else - Logik Sekvenser - repetion från

Läs mer

DT1130 Spektrala transformer Tentamen

DT1130 Spektrala transformer Tentamen DT3 Spektrala transformer Tentamen 5 Tentamen består av fem uppgifter där varje uppgift maximalt ger p. Normalt gäller följande betygsgränser: E: 9 p, D:.5 p, C: p, B: 6 p, A: 8 p Tillåtna hjälpmedel:

Läs mer

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett

Läs mer

Mer om analytisk geometri

Mer om analytisk geometri 1 Onsdag v 5 Mer om analytisk geometri Determinanter: Då man har en -matris kan man till den associera ett tal determinanten av som också skrivs Determinanter kommer att repeteras och studeras närmare

Läs mer

Beräkningsvetenskap föreläsning 2

Beräkningsvetenskap föreläsning 2 Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa

Läs mer

FMCK Malmö Boris Magnusson. Markering av Endurobana

FMCK Malmö Boris Magnusson. Markering av Endurobana FMCK Malmö Boris Magnusson Markering av Endurobana Markering av en Endurobana finns beskrivet i tävlingsreglementet, paragrafer 4.16-17-18 (se nedan) men dessa är ganska kortfattade. Detta PM är ett försöka

Läs mer

Mätning av fokallängd hos okänd lins

Mätning av fokallängd hos okänd lins Mätning av fokallängd hos okänd lins Syfte Labbens syfte är i första hand att lära sig hantera mätfel och uppnå god noggrannhet, även med systematiska fel. I andra hand är syftet att hantera linser och

Läs mer

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret 2014-2015. Lektion 1

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret 2014-2015. Lektion 1 Kattis Lektion 1 I kursen används onlinedomaren Kattis (från http://kattis.com) för att automatiskt rätta programmeringsproblem. För att få ett konto på Kattis anmäler du dig på Programmeringsolympiadens

Läs mer

ENKEL Programmering 3

ENKEL Programmering 3 ENKEL Programmering 3 Figurer i långa rader Titta på de olika figurerna i de olika raderna. Kan du se att de olika figurerna i varje rad är placerade enligt ett visst mönster? Kan du lista ut vilken figur

Läs mer

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

Laboration 3. Redovisning Uppgifterna skall vara demonstrerade och godkända av en handledare senast måndag 22/2. Programmerade system I. Syfte Syftet med denna laboration är att få övning i att strukturera sina program genom att använda metoder och klasser, samt att få övning i att använda sig av fält och for-satsen.

Läs mer

Konturbearbetning 1. Innehåll

Konturbearbetning 1. Innehåll Konturbearbetning Innehåll. 3D-Detalj Separerade entiteter... 2 2. 3D-Detalj Öppen kurva... 9 3. 3D-Detalj Sluten kontur... 3 4. 2D-Detalj Sluten Kontur... 2 Konturbearbetning 2. 3D-Detalj Separerade entiteter

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

Bildmosaik. Bilddatabaser, TNM025. Anna Flisberg Linne a Mellblom. linme882. Linko pings Universitet

Bildmosaik. Bilddatabaser, TNM025. Anna Flisberg Linne a Mellblom. linme882. Linko pings Universitet Bildmosaik Bilddatabaser, TNM025 Linko pings Universitet Anna Flisberg Linne a Mellblom annfl042 linme882 28 maj 2015 Innehåll 1 Introduktion 2 2 Metod 2 2.1 Features..............................................

Läs mer

Mobil streckkodsavläsare

Mobil streckkodsavläsare Avdelningen för datavetenskap Martin Persson Jan Eriksson Mobil streckkodsavläsare Oppositionsrapport, D-nivå 2005:xx 1 Generell utvärdering av projektet Projektet gick ut på att undersöka hur bra olika

Läs mer

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

Signaler, information & bilder, föreläsning 15 Signaler, information & bilder, föreläsning 5 Michael Felsberg Computer Vision Laboratory Department of Electrical Engineering michael.felsberg@liu.se Översikt Histogram och tröskelsättning Histogramutjämning

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2009-12-16.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Skriv funktionen create_diagonal som tar emot de två parametrarna R och N. R markerar hur många rader den resulterande matrisen skall få och N markerar

Läs mer

L A B R A P P O R T 1

L A B R A P P O R T 1 L A B R A P P O R T 1 BILDTEKNIK Dan Englesson Emil Brissman 9 september 2011 17:04 1 Camera noise 1.1 Task 1 Ett antal svarta bilder togs genom att fota i totalt mörker för att beräkna kamerans svartnivå.

Läs mer

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31 TANA17 Matematiska beräkningar med MATLAB för M, DPU Fredrik Berntsson, Linköpings Universitet 27 oktober 2015 Sida 1 / 31 TANA17 Kursmål och Innehåll Målet med kursen är att Ge grundläggande färdighet

Läs mer

bilder för användning

bilder för användning Grundläggande guide i efterbehandling av bilder för användning på webben Innehåll Innehåll...2 Inledning...3 Beskärning...4 Att beskära en kvadratisk bild...5 Att beskära med bibehållna proportioner...5

Läs mer

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

Bildanalys. Segmentering. Föreläsning 7. Split and Merge. Region Growing Föreläsning 7 1 Föreläsning 7 2 Bildanalys Rikard Berthilsson Kalle Åström Matematikcentrum Lund 27 september 2005 Segmentering Mål: Dela upp bilden i segment, d.v.s. områden som hör till samma objekt

Läs mer

Linjär algebra på några minuter

Linjär algebra på några minuter Linjär algebra på några minuter Linjära ekvationssystem Ekvationssystem: { Löses på matrisform: ( ) ( ) I det här fallet finns en entydig lösning, vilket betyder att determinanten av koefficientmatrisen

Läs mer

Tentamen, Algoritmer och datastrukturer

Tentamen, Algoritmer och datastrukturer UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2008-03-25.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program (en funktion), my_plot_figure, som läser in ett antal sekvenser av koordinater från tangentbordet och ritar ut dessa till en

Läs mer

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se Mål Så enkelt som möjligt: låg tröskel Ett riktigt programmeringsspråk: inget tak Roliga uppgifter som går

Läs mer

Specifikation av kandidatexjobb

Specifikation av kandidatexjobb Specifikation av kandidatexjobb 3D-rekonstruktion av Rubiks kub André Gräsman Rasmus Göransson grasman@kth.se rasmusgo@kth.se 890430-3214 850908-8517 Introduktion Vi vill göra en förstudie om 3D rekonstruktion.

Läs mer

kl Tentaupplägg

kl Tentaupplägg Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer

Läs mer

Skurlängdskodning. aaaabbbbbbbccbbbbaaaa. Man beskriver alltså sekvensen med ett annat alfabet än det ursprungliga.

Skurlängdskodning. aaaabbbbbbbccbbbbaaaa. Man beskriver alltså sekvensen med ett annat alfabet än det ursprungliga. Datakompression fö 4 p1 Skurlängdskodning Ibland har man källor som producerar långa delsekvenser av samma symbol Det kan då vara praktiskt att istället för att beskriva sekvensen som en följd av enstaka

Läs mer

Introduktion till MATLAB

Introduktion till MATLAB 29 augusti 2017 Introduktion till MATLAB 1 Inledning MATLAB är ett interaktivt program för numeriska beräkningar med matriser. Med enkla kommandon kan man till exempel utföra matrismultiplikation, beräkna

Läs mer

Signalbehandling Röstigenkänning

Signalbehandling Röstigenkänning L A B O R A T I O N S R A P P O R T Kurs: Klass: Datum: I ämnet Signalbehandling ISI019 Enk3 011211 Signalbehandling Röstigenkänning Jonas Lindström Martin Bergström INSTITUTIONEN I SKELLEFTEÅ Sida: 1

Läs mer

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc. Introduktion till MATLAB Martin Nilsson Avdelningen för teknisk databehandling Institutionen för informationsteknologi Uppsala universitet MATLAB the Matrix Laboratory utvecklat av MathWorks, Inc. Matematisk

Läs mer

Sekantmetoden Beräkningsmatematik TANA21 Linköpings universitet Caroline Cornelius, Anja Hellander Ht 2018

Sekantmetoden Beräkningsmatematik TANA21 Linköpings universitet Caroline Cornelius, Anja Hellander Ht 2018 Sekantmetoden Beräkningsmatematik TANA21 Linköpings universitet Caroline Cornelius, Anja Hellander Ht 2018 1. Inledning Inom matematiken är det ofta intressant att finna nollställen till en ekvation f(x),

Läs mer

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

Uppgift 1 (grundläggande konstruktioner)

Uppgift 1 (grundläggande konstruktioner) Uppgift 1 (grundläggande konstruktioner) a) Skriv ett program som låter användaren mata in 7 heltal och som gör utskrifter enligt nedanstående körexempel. Mata in 7 heltal: 1 0 0 3 1 1 1 Tal nr 2 var en

Läs mer

Andragradsekvationer möter elever under sitt första år på gymnasiet.

Andragradsekvationer möter elever under sitt första år på gymnasiet. Christoph Kirfel Komplettera kvadraten och kuben med bilder Elever som för första gången ställs inför att lösa andragradsekvationer kan få hjälp att förstå kvadratkomplettering med hjälp av väl uttänkta

Läs mer

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Numeriska Metoder och Grundläggande Programmering för P1, VT2014 Numeriska Metoder och Grundläggande Programmering för P1, VT2014 Föreläsning 5: Filhantering i Matlab Mer om datatyper: celltabeller, gles lagring (Kap. 7 & 8 i MATLAB Programming for Engineers, S. Chapman)

Läs mer

2011 Studsvik AB PANORAMA-BILDTAGNING. Tony Björkman

2011 Studsvik AB PANORAMA-BILDTAGNING. Tony Björkman 2011 Studsvik AB Tony Björkman PANORAMA-BILDTAGNING Filminspelning och visuell inspektion är två beprövade metoder för avsyning av bränslestavar. Ett nytt sätt att avsyna är att skapa panoramabilder vilket

Läs mer

Datalogi för E Övning 3

Datalogi för E Övning 3 Datalogi för E Övning 3 Mikael Huss hussm@nada.kth.se AlbaNova, Roslagstullsbacken 35 08-790 62 26 Kurshemsida: http://www.csc.kth.se/utbildning/kth/kurser/2d1343/datae06 Dagens program Att skapa egna

Läs mer

Inledande programmering med C# (1DV402) Summera med while"-satsen

Inledande programmering med C# (1DV402) Summera med while-satsen Summera med while"-satsen Upphovsrätt för detta verk Inledande programmering med C# (1DV402) Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får

Läs mer

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET. UPPGIFT 1 TVÅPOTENSER. 2 ½ ¾ = 5575186299632655785383929568162090376495104 n = 142 är det minsta värde på n för vilket 2 Ò inleds med siffrorna 55. Uppgiften består i att skriva ett program som tar emot

Läs mer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4 Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa

Läs mer

Länkning av Prolog under C

Länkning av Prolog under C Länkning av Prolog under C Kent Boortz Swedish Institute of Computer Science Box 1263, S-164 28 Kista, Sweden 1 september 1991 T91:14 Sammanfattning SICStus länkmoduler ger möjlighet att blanda Prolog-

Läs mer

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion Staffan Romberger 2008-10-31 DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion Efter den här laborationen ska du kunna hantera vektorer och matriser, villkorssatser

Läs mer

Mina listor. En Android-applikation. Rickard Karlsson 2013-06-09. Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Mina listor. En Android-applikation. Rickard Karlsson 2013-06-09. Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu. Mina listor En Android-applikation Rickard Karlsson 2013-06-09 Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.se Innehållsförteckning 2. Innehållsförteckning 3. Abstrakt 4. Inledning/bakgrund

Läs mer

Säsongrensning i tidsserier.

Säsongrensning i tidsserier. Senast ändrad 200-03-23. Säsongrensning i tidsserier. Kompletterande text till kapitel.5 i Tamhane och Dunlop. Inledning. Syftet med säsongrensning är att dela upp en tidsserie i en trend u t, en säsongkomponent

Läs mer

NU NÄR DU BEKANTAT DIG MED RAMARNAS EGENSKAPER OCH VET. hur man markerar och ändrar dem, är det dags att titta lite närmare på

NU NÄR DU BEKANTAT DIG MED RAMARNAS EGENSKAPER OCH VET. hur man markerar och ändrar dem, är det dags att titta lite närmare på 6 Arbeta med ramar NU NÄR DU BEKANTAT DIG MED RAMARNAS EGENSKAPER OCH VET hur man markerar och ändrar dem, är det dags att titta lite närmare på hur du kan arbeta med dem i en design. De flesta designers

Läs mer

Bildbehandling i frekvensdomänen. Erik Vidholm

Bildbehandling i frekvensdomänen. Erik Vidholm Bildbehandling i frekvensdomänen Erik Vidholm erik@cb.uu.se 9 december 2002 Sammanfattning Detta arbete beskriver hur en bild kan tolkas som en tvådimensionell digital signal, hur denna signal Fouriertransformeras

Läs mer

UPPGIFT 1 TVETYDIGA DATUM

UPPGIFT 1 TVETYDIGA DATUM UPPGIFT 1 TVETYDIGA DATUM Datum skrivs på olika sätt i olika länder. Till exempel skulle datumet 03/05/01 i Sverige betyda 1 maj 2003, medan det i USA skulle vara 5 mars 2001 och i en del andra länder

Läs mer

Vektorgeometri för gymnasister

Vektorgeometri för gymnasister Vektorgeometri för gymnasister Per-Anders Svensson http://homepage.lnu.se/staff/psvmsi/vektorgeometri/gymnasiet.html Fakulteten för teknik Linnéuniversitetet Diagonalisering av linjära avbildningar III

Läs mer

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I L04.1 Marodören Inledning Genom att öva sig på de grundläggande koncepten i JavaScript öppnas vägen allteftersom till de mer avancerade funktionerna. Man måste lära sig krypa innan man kan gå, även i JavaScript!

Läs mer

Lösningsförslag till övningsuppgifter, del V

Lösningsförslag till övningsuppgifter, del V Lösningsförslag till övningsuppgifter, del V Obs! Preliminär version! Ö.1. (a) Vi kan lösa uppgiften genom att helt enkelt räkna ut avståndet mellan vart och ett av de ( 7 ) = 1 paren. Först noterar vi

Läs mer

Kodning av ansiktstextur med oberoende komponenter

Kodning av ansiktstextur med oberoende komponenter Kodning av ansiktstextur med oberoende komponenter Jörgen Ahlberg Report no. LiTH-ISY-R-2297 ISSN 1400-3902 Avdelning, Institution Division, department Datum Date Image Coding Group 2000-10-02 Department

Läs mer

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI TEKNISKA HÖGSKOLAN I LINKÖPING Matematiska institutionen Beräkningsmatematik/Fredrik Berntsson Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI Tid: 14-18, 14:e Mars, 2017 Provkod: TEN1 Hjälpmedel:

Läs mer

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581 Fuzzy logic 880328-2535 Innehåll Fuzzy logic... 1 1. Inledning... 4 2. Jämförelse mellan fuzzy logic och tvåvärdeslogik.... 4 3. Fuzzy sets.... 4 4. Linvistiska variabler... 5 5. Operatorer... 5 6. If-

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

Projekt 6. Fourieroptik Av Eva Danielsson och Carl-Martin Sikström

Projekt 6. Fourieroptik Av Eva Danielsson och Carl-Martin Sikström Projekt 6. Fourieroptik Av Eva Danielsson och Carl-Martin Sikström Introduktion I detta experiment ska vi titta på en verklig avbildning av fouriertransformen. Detta ska ske med hjälp av en bild som projiceras

Läs mer

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

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK DATORLABORATION 4 MATEMATISK STATISTIK, FÖR I/PI, FMS 121/2, HT-3 Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Läs mer

6 Derivata och grafer

6 Derivata och grafer 6 Derivata och grafer 6.1 Dagens Teori När vi plottar funktionen f(x) = x + 1x 99x 8 med hjälp av dosan kan man få olika resultat beroende på vilka intervall man valt. 00000 100000-00 -100 100 00-100000

Läs mer

MATEMATIK GU. LLMA60 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht 2014. Block 5, översikt

MATEMATIK GU. LLMA60 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht 2014. Block 5, översikt MATEMATIK GU H4 LLMA6 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht 24 I block 5 ingår följande avsnitt i Stewart: Kapitel 2, utom avsnitt 2.4 och 2.6; kapitel 4. Block 5, översikt Första delen av block 5

Läs mer