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

Relevanta dokument
Ansiktsigenkänning med MATLAB

Signaler och System Höstterminen -02 IT3 Rasha Alshammari Andreas Nissemark Zakai kass-saliba Pavel Carballo

Bildbehandling i frekvensdomänen

Ett enkelt OCR-system

TEM Projekt Transformmetoder

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

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion

Signal- och bildbehandling TSBB03, TSBB14

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

Digitala projekt rapport

Vad är programmering Jonas Lindemann

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

Laboration 4: Digitala bilder

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

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

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

Färglära. Ljus är en blandning av färger som tillsammans upplevs som vitt. Färg är reflektion av ljus. I ett mörkt rum inga färger.

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

Obligatoriska uppgifter i MATLAB

Per Holm Inlämningsuppgift 2, PTDC 2014/15 2 / 19. Med c = i konvergerar inte talföljden:

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

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

Föreläsning 5-6 Innehåll

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

Projekt i Bildanalys: Mönsterigenkänning inom bioinformatik

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

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

Regression med Genetiska Algoritmer

Bildbehandling, del 1

2011 Studsvik AB PANORAMA-BILDTAGNING. Tony Björkman

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

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

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

JavaScript del 3 If, Operatorer och Confirm

Tentamen, Programmeringsteknik för BME, F och N

L A B R A P P O R T 1

Tentamen i Beräkningsvetenskap I (nya versionen), 5.0 hp, Del A

Histogram över kanter i bilder

Felsökning av mjukvara

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund Marcus Widblom Senast ändrad: 13 / 05 / 08

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 8 december 2015 Sida 1 / 22

Sphero SPRK+ Appen som används är Sphero Edu. När appen öppnas kommer man till denna bild.

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

MMA132: Laboration 2 Matriser i MATLAB

Börja koda. Vad är programmering? Installera Processing

Torstens Digitalbildguide

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

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

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Projekt 3: Diskret fouriertransform

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

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

1) Automatisk igenkänning av siffror. Miniprojektuppgifter ppg för Signal- och Bildbehandling. av siffror. Klassificering av virusceller.

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

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

Tentamen i. Programmering i språket C

Lab5 för prgmedcl04 Grafik

JavaScript del 5 Funktioner

Värmedistribution i plåt

Arduinokurs. Kurstillfälle 4

ID1004 Laboration 4, November 2012

Föreläsning 1 & 2 INTRODUKTION

kl Tentaupplägg

Användarmanual TextAppen Online

Miniprojekt: Vattenledningsnäten i Lutorp och Vingby 1

Signal- och bildbehandling TSBB03

TAGTOOL Användarmanual

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

DT1130 Spektrala transformer Tentamen

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

Föreläsning 11. Giriga algoritmer

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

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

Färgmeny. Utskriftsläge. Färgkorrigering. Tonersvärta. Manuell färg. Skriva ut. Använda färg. Pappershantering. Underhåll. Felsökning.

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

Så skapas färgbilder i datorn

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Simulering av Poissonprocesser Olle Nerman, Grupprojekt i MSG110,GU HT 2015 (max 5 personer/grupp)

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA

Föreläsning 6: Introduktion av listor

I den tidigare filen Manual Editor belystes grunderna för enkel uppdatering samt editorns utformning.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

Föreläsning 8: Aritmetik och stora heltal

Grafiska pipelinen. Edvin Fischer

Slutrapport Get it going contracts

Miniprojekt: Vattenledningsnätet i Lutorp 1

Grafik. För enklare datorsystem

Transkript:

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 detta projekt är att fördjupa oss inom ett område inom kursen Signaler och System och i själva arbetet lyckas jämföra två bilder och finna skillnader i dessa. Detta implementeras sedan i ett enkelt övervakningssystem. Programmet, som skrivits i Matlab, får in två bilder tagna inom ett kort tidsintervall. På dessa bilder räknas först korrelationen ut och denna jämförs mot ett gränsvärde. Detta konstaterar om det skett en nog stor förändring för att systemet ska reagera. Vi har efter arbetet kunnat konstatera att den svåraste delen vad gäller jämförelse av två bilder är att hitta en bra metod för att bestämma vad som är en signifikant förändring och inte. 2

Innehållsförteckning Inledning...4 Syfte...4 Problemformulering...4 Kravspecifikation...5 Lösning och genomförande...5 Testkörning...8 Resultat och slutsatser...9 Utökningsmöjligheter...9 Referenser...10 Appix...11 3

Inledning Bildbehandling är något som vi är intresserade av och vi tror att tillämpningar inom övervaknings- och bildhanteringsbranschen är något som bara kommer att öka. Digitalkameror har snart konkurrerat ut vanliga kameror, datorer är snart var mans egom. Detta leder till att vem som helst snart har den hårdvara som krävs för ett enkelt övervakningssystem och då kommer tillhörande mjukvara att efterfrågas på en helt annan nivå än idag. Här ser vi något som vi skulle kunna inrikta oss mot. Syfte Syftet med detta projekt är att fördjupa oss inom ett område inom kursen Signaler och System och i och med detta utöka våra kunskaper i ämnet. Målet med själva arbetet är att lyckas jämföra två bilder och finna skillnader i dessa. Problemformulering Hur kan metoder inom bildbehandlingsområdet implementeras till att skapa ett övervakningssystem? 4

Kravspecifikation Övervakningssystemet består av en fast monterad digitalkamera ansluten till en dator där vår mjukvara finns installerad. Med korta jämna tidsintervall tas bilder mot området som skall övervakas. Dessa bilder skickas sedan vidare till mjukvaran som avgör om en förändring har skett och anses vara nog kritisk. Om så är fallet aktiveras ett larm där lämplig person blir uppmärksammad på att något har skett. Därefter kan personen få bildinformation presenterad på ett antal sätt och avgöra vad som tillkommit alternativt försvunnit på bilden. Inkommande bild Bilderna jämföres Tidigare bild Signifikant skillnad JA? NEJ? Inkommande bild blir referensbild Larm!!!! Bilden visas på bildskärm Åtgärd 5

Lösning och genomförande Övervakningssystemets mjukvara har konstruerats i Matlab där våra idéer har konkretiserats till ett program. Programmet tar in två bilder vilka transformeras till matriser. Dessa matriser räknas sedan om till att representera färgernas intensitet med ett värde mellan 0-255, där låga värden motsvarar mörkt och höga värden motsvarar ljust. Därefter beräknas korrelationen mellan Bild1 och Bild2 enligt följande formel 1, vilken implementeras i metod2.m (se appix). C xy = 1 1 N N n= 0 [ x( n) x( n) ][ y( n) y( n) ] σ x σ y x(n) är intensiteten i varje pixel i bild1. y(n) är intensiteten i varje pixel i bild2. σ är respektive bilds standardavvikelse. Korrelationen används för att avgöra om någon relevant skillnad har skett mellan bilderna genom att värdet jämförs mot ett gränsvärde som vi valt. Två identiska bilder resulterar i att korrelationen mellan bilderna är 1, dvs. bilderna är perfekt korrelerade. Två helt motsatta bilder, dvs. en bild och dess negativ ger korrelationen 1. Två bilder utan någon som helst likhet ger korrelationen 0. Om en bild anses ha förändrats så presenteras detta genom två bilder. Den första visar bilden som förändrats, med förändringarna markerade med rött. En stor förändring i intensitet symboliseras av en stark röd färg och vice versa. Först beräknas absolutbeloppet mellan bilderna och sparas i en matris. Sedan rekurserar vi genom matrisen vars värden jämförs mot de uppsatta gränserna för varje intensitetsnivå av rött. Resultatet sparas ned i en matris som slutligen representeras som en bild. 1 Svärdström, Signaler och system, s.250 6

Den andra bilden lyfter ast fram förändringen i dess ursprungs intensitet. Övrig omgivning färgas vitt. Denna bilds pixel-intensitets absolutbelopp beräknas först på samma sätt som ovan. Efter detta så jämförs alla förändringar mot ett gränsvärde, alla pixlar som ej har förändrats nog mycket färgas vita. Här presenteras hela förloppet schematiskt. Bild1 Bild2 Bilderna läses in i Matlab Tar fram färgernas intensitet i varje pixel. och presenterar detta som gråskala. Beräknar bildernas korrelation Korrelationen > gränsvärdet TRUE FALSE Bild1: Förändringarna färgas röda efter dess intesitet & Bild2: Förändringen presenteras mot vit bakgrund Ingen skillnad 7

Testkörning Här är resultatet av en testkörning av två bilder. Ursprungsbild1 Här är bilden som visar ursprungsläget. Ursprungsbild2 Här har någon mystisk person smygit sig in. Kanske har han något fuffens på gång? Resultatbild1 Här har förändringen markerats med rött i olika nyanser. Resultatbild2 Här har förändringen framhävts i dess original intensitet medans det som ej har ändrats har fått färgen vitt. 8

Resultat och slutsatser Med hjälp av Matlab har vi åstadkommit mjukvaran för ett enkelt bevakningssystem, vilket var vårat mål. Vi har under arbetets gång stött på flera problem som vi inte förutsåg vid starten av projektet. Det svåraste momentet var dock inte helt oväntat att bestämma om och hur en förändring har skett. Vi använde oss av bildernas korrelation vilket är ett bra mått om en stor förändring har skett i begränsad del av bilden, tex om en människa kommit in i bilden. Däremot fungerar måttet sämre för mindre förändringar i avgränsat område tex om en mus smyger in i bilden. Detta skulle kunna ge samma korrelationsvärde som en liten intensitetsförändring över hela bilden skulle generera, vilket i våran implementering inte skulle räknas som en förändring. Ett annat problem vi har stött på under projektets gång var att om man t.ex. bara subtraherar två bilder utan att ta absolutbeloppet av varje enskild punkts förändring så kan stora förändringar åt olika håll ta ut varandra. I det stora hela tycker vi att vi har lyckats få lite mer grepp om hur bildbehandling är en del av signalbehandlingsområdet och vi känner oss nöjda med att vi har lyckats uppnå huvudsyftet med projektet. Utökningsmöjligheter En utökning av projektet vore att vi fördjupa oss i andra metoder för att på ett mer precist sett avgöra huruvida en förändring av bilden har skett. En effektiv utökning hade varit att med hjälp av indata kunna identifiera vissa typer av förbestämda objekt. Med hjälp av detta hade man kommit från vissa begränsningar vad gällande verifieringen om att något signifikant har hänt i bilden. 9

Referenser Svärdström.S, Signaler och System, 1999 Rice Universitets: Digital signal processing hemsida http://www.dsp.rice.edu/courses/elec301/ 10

Appix Matlab kod: function overvakning(bild1, bild2) % Projekt Signaler & System ht 2002, Gustav Björcke, Henrik Nilsson och Jakob Brundin % % Huvudprogram som anropar delfunktionern. %Läs in bilderna och spara dem i matriser matris1 = imread(bild1); matris2 = imread(bild2); %omvandla bilderna till gråskala matris1g = rgb2gray(matris1); matris2g = rgb2gray(matris2); %Rita upp resultat i figur. if( metod2(matris1g,matris2g) < 0.99) figure(1) metod1(matris1g, matris2g); figure(2) metod3(matris1g, matris2g); 'PIP PIP PIP' else 'Ingen skillnad...' 11

function metod1(bild1, bild2) %Gör om varje tal i matrisen till en double m1 = im2double(bild1); m2 = im2double(bild2); %Skapar en ny matris med den absoluta differensen mellan bild 1 och bild 2. diff = (abs(m2 - m1)); %Sparar storleken på bilderna. (längd och bredd) size1 = size(m1); size2 = size(m2); %Skapar en ny matris. m3 = zeros(size1,size2,3); %Sparar absolutbeloppen i diff. m3 = diff; %Loopa igeon bilden och kontrollera pixel för pixel om absolutbeloppen %överstiger våra uppsatta gränser. Beroe på skillnaderna skrivs %olika starka färger ut i bilden. for i = 1:(size1(1)) for j = 1:(size1(2)) if ((diff(i,j) >= 0) & (diff(i,j) <= 0.13)) m3(i,j,1)=m1(i,j); m3(i,j,2)=m1(i,j); m3(i,j,3)=m1(i,j); if ((diff(i,j) > 0.13) & (diff(i,j) <= 0.16)) m3(i,j,1)=0.5; if ((diff(i,j) > 0.16) & (diff(i,j) <= 0.30)) m3(i,j,1)=0.6; if ((diff(i,j) > 0.30) & (diff(i,j) <= 0.50)) m3(i,j,1)=0.7; if ((diff(i,j) > 0.50) & (diff(i,j) <= 0.60)) m3(i,j,1)=0.8; 12

if ((diff(i,j) > 0.60) & (diff(i,j) <= 0.70)) m3(i,j,1)=0.9; if ((diff(i,j) > 0.70) & (diff(i,j) <= 1.0)) m3(i,j,1)=1; imagesc(m3); 13

function korrelation = metod2(bild1, bild2) %Gör om varje tal i matrisen till en double m1 =im2double(bild1); m2 = im2double(bild2); %Sparar storleken på bilderna. (längd och bredd) size1 = size(m1); size2 = size(m2); %Initiera variabler som används i loopen. kvadratsummam1 = 0; kvadratsummam2 = 0; raknare = 0; summam1= 0; summam2= 0; summa = 0; %Beräkna medelintensiteten för de två biderna. for i = 1:(size1(1)) for j = 1:(size1(2)) summam1 = m1(i,j) + summam1; summam2 = m2(i,j) + summam2; raknare = raknare + 1; meanm1 = summam1/raknare; meanm2 = summam2/raknare; %Beräknar korrelationen mellan de två bilderna raknare = 0; for i = 1:(size1(1)) for j = 1:(size1(2)) summa = ((m1(i,j)-meanm1)*(m2(i,j)-meanm2))+summa; kvadratsummam1 = (m1(i,j)-meanm1)^2 + kvadratsummam1; kvadratsummam2 = (m2(i,j)-meanm2)^2 + kvadratsummam2; raknare = raknare + 1; stdm1 = (kvadratsummam1/raknare)^0.5; stdm2 = (kvadratsummam2/raknare)^0.5; korrelation = (1/raknare) * (summa/(stdm1*stdm2)) 14

function metod3(bild1, bild2) %Gör om varje tal i matrisen till en double m1 =im2double(bild1); m2 = im2double(bild2); %Skapar en ny matris med den absoluta differensen mellan bild 1 och bild 2. diff = (abs(m2 - m1)); %Sparar storleken på bilderna. (längd och bredd) size1 = size(m1); size2 = size(m2); %Skapar en ny matris. m3 = zeros(size1,size2,3); %Sparar absolutbeloppen i diff. m3 = diff; %Loopa igeon bilden och kontrollera pixel för pixel och beroe på om absolutbeloppen %överstiger respekteiver understiger uppsatta gränser så sätts pixlarna %till ursprunglig intensitet respektive vitt. for i = 1:(size1(1)) for j = 1:(size1(2)) if ((diff(i,j) >= 0) & (diff(i,j) <= 0.10)) m3(i,j,1)=1; m3(i,j,2)=1; m3(i,j,3)=1; if ((diff(i,j) > 0.10) & (diff(i,j) <= 1)) m3(i,j,1)=m1(i,j); m3(i,j,2)=m1(i,j); m3(i,j,3)=m1(i,j); imagesc(m3); 15