Kennisgestuurde beveiligingsapplicatie



Vergelijkbare documenten
Non Diffuse Point Based Global Illumination

SAMPLE 11 = + 11 = + + Exploring Combinations of Ten + + = = + + = + = = + = = 11. Step Up. Step Ahead

General info on using shopping carts with Ingenico epayments

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Examination 2DL04 Friday 16 november 2007, hours.

Eye Feature Detection Towards Automatic Strabismus Screening

Beïnvloedt Gentle Teaching Vaardigheden van Begeleiders en Companionship en Angst bij Verstandelijk Beperkte Cliënten?

MyDHL+ Van Non-Corporate naar Corporate

Add the standing fingers to get the tens and multiply the closed fingers to get the units.

Uitgebreid eindwerkvoorstel Lokaliseren van personen en objecten met behulp van camera s

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

Firewall van de Speedtouch 789wl volledig uitschakelen?

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010

Hertentamen 8D040 - Basis beeldverwerking

L.Net s88sd16-n aansluitingen en programmering.

i(i + 1) = xy + y = x + 1, y(1) = 2.

Lijnenspel. Remco van Groesen ( ) & Ellen Houbiers ( )

Het Effect van Verschil in Sociale Invloed van Ouders en Vrienden op het Alcoholgebruik van Adolescenten.

Waarmaken van Leibniz s droom

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

L.Net s88sd16-n aansluitingen en programmering.

Security Les 1 Leerling: Marno Brink Klas: 41B Docent: Meneer Vagevuur

DALISOFT. 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool. Connect the TDS20620V2. Start DALISOFT

Functioneren van een Kind met Autisme. M.I. Willems. Open Universiteit

Pesten onder Leerlingen met Autisme Spectrum Stoornissen op de Middelbare School: de Participantrollen en het Verband met de Theory of Mind.

Lichamelijke factoren als voorspeller voor psychisch. en lichamelijk herstel bij anorexia nervosa. Physical factors as predictors of psychological and

Introductie in flowcharts

Geslacht, Emotionele Ontrouw en Seksdrive. Gender, Emotional Infidelity and Sex Drive

Vakgroep CW KAHO Sint-Lieven

RECEPTEERKUNDE: PRODUCTZORG EN BEREIDING VAN GENEESMIDDELEN (DUTCH EDITION) FROM BOHN STAFLEU VAN LOGHUM

ANGSTSTOORNISSEN EN HYPOCHONDRIE: DIAGNOSTIEK EN BEHANDELING (DUTCH EDITION) FROM BOHN STAFLEU VAN LOGHUM

Chapter 4 Understanding Families. In this chapter, you will learn

ALGORITMIEK: answers exercise class 7

FRAME [UPRIGHT MODEL] / [DEPTH] / [HEIGHT] / [FINISH] TYPE OF BASEPLATE P Base plate BP80 / E alternatives: ZINC finish in all cases

Relatie tussen Cyberpesten en Opvoeding. Relation between Cyberbullying and Parenting. D.J.A. Steggink. Eerste begeleider: Dr. F.

van Werknemers Well-being Drs. P.E. Gouw

Four-card problem. Input

MyDHL+ ProView activeren in MyDHL+

Falende Interpretatie? De Samenhang van Faalangst met Interpretatiebias

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g

Esther Lee-Varisco Matt Zhang

Effecten van contactgericht spelen en leren op de ouder-kindrelatie bij autisme

Risico s van Technologisch Succes in digitale transformatie S T R A T E G I C A D V I S O R

Expertise seminar SURFfederatie and Identity Management

Classification of triangles

PERSOONLIJKHEID EN OUTPLACEMENT. Onderzoekspracticum scriptieplan Eerste begeleider: Mw. Dr. T. Bipp Tweede begeleider: Mw. Prof Dr. K.

My Inspiration I got my inspiration from a lamp that I already had made 2 years ago. The lamp is the you can see on the right.

Preschool Kindergarten

Verklaring van het beweeggedrag van ouderen door determinanten van. The explanation of the physical activity of elderly by determinants of

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14

Media en creativiteit. Winter jaar vier Werkcollege 7

Academisch schrijven Inleiding

Positieve, Negatieve en Depressieve Subklinische Psychotische Symptomen en het Effect van Stress en Sekse op deze Subklinische Psychotische Symptomen

Summary 124

Model Driven Software Development: Geen toekomst maar realiteit. 4 juni 2009, WTC, Amsterdam.

De Rol van Zelfregulatie, Motivatie en Eigen Effectiviteitsverwachting op het Volhouden

1. will + hele werkwoord (Future Simple) 2. shall + hele werkwoord 3. to be (am/is/are) going to + hele werkwoord

Cambridge Assessment International Education Cambridge International General Certificate of Secondary Education. Published

COGNITIEVE DISSONANTIE EN ROKERS COGNITIVE DISSONANCE AND SMOKERS

The genesis of the game is unclear. Possibly, dominoes originates from China and the stones were brought here by Marco Polo, but this is uncertain.

Handleiding Installatie ADS

Find Neighbor Polygons in a Layer

Calculator spelling. Assignment

z x 1 x 2 x 3 x 4 s 1 s 2 s 3 rij rij rij rij

open standaard hypertext markup language internetprotocol transmission control protocol internet relay chat office open xml

MyDHL+ Tarief berekenen

Relatie tussen Persoonlijkheid, Opleidingsniveau, Leeftijd, Geslacht en Korte- en Lange- Termijn Seksuele Strategieën

Taco Schallenberg Acorel

De Relatie Tussen de Gehanteerde Copingstijl en Pesten op het Werk. The Relation Between the Used Coping Style and Bullying at Work.

Leeftijdcheck (NL) Age Check (EN)

Understanding and being understood begins with speaking Dutch

B1 Woordkennis: Spelling

Effecten van een op MBSR gebaseerde training van. hospicemedewerkers op burnout, compassionele vermoeidheid en

De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim

It s all about the money Group work

Het Asterix project: methodologie van onderzoek bij zeldzame ziekten. Charlotte Gaasterland, Hanneke van der Lee PGO support meeting, 20 maart 2017

Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland

After that, the digits are written after each other: first the row numbers, followed by the column numbers.

150 ECG-problemen (Dutch Edition)

Teksten van de liederen die gospelkoor Inspiration tijdens deze Openluchtdienst zingt.

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 7 februari 2011

OPEN TRAINING. Onderhandelingen met leveranciers voor aankopers. Zeker stellen dat je goed voorbereid aan de onderhandelingstafel komt.

Keuzetwijfels in de Emerging Adulthood rondom Studie- en Partnerkeuze. in Relatie tot Depressie

The colour of a pixel in a bit map picture can be presented in different ways. For this assignment, we distinguish two categories:

Autonoom vinden van een object met een quadcopter

De Samenhang tussen Dagelijkse Stress en Depressieve Symptomen en de Mediërende Invloed van Controle en Zelfwaardering

9 daagse Mindful-leSs 3 stappen plan training

Quick scan method to evaluate your applied (educational) game. Validated scales from comprehensive GEM (Game based learning Evaluation Model)

Ben ik Lid van de Groep? Ervaren inclusie als Moderator van de Relatie tussen Procedurele Rechtvaardigheid en Organizational Citizenship Behavior.

!!!! Wild!Peacock!Omslagdoek!! Vertaling!door!Eerlijke!Wol.!! Het!garen!voor!dit!patroon!is!te!verkrijgen!op! Benodigdheden:!!

Creatief onderzoekend leren

Denken en Doen Doen of Denken Het verband tussen seksueel risicovol gedrag en de impulsieve en reflectieve cognitie.

Group work to study a new subject.

Summary 136

Travel Survey Questionnaires

Luister alsjeblieft naar een opname als je de vragen beantwoordt of speel de stukken zelf!

Engels op Niveau A2 Workshops Woordkennis 1

Borstkanker: Stichting tegen Kanker (Dutch Edition)

The first line of the input contains an integer $t \in \mathbb{n}$. This is followed by $t$ lines of text. This text consists of:

Invloed van het aantal kinderen op de seksdrive en relatievoorkeur

Transcriptie:

FACULTEIT INDUSTRIELE INGENIEURSWETENSCHAPPEN TECHNOLOGIECAMPUS DE NAYER Kennisgestuurde beveiligingsapplicatie Steven BLOMMAART Promotor: ing. Floris De Smedt Masterproef ingediend tot het behalen van de graad van master of Science in de industriële wetenschappen: Elektronica-ICT afstudeerrichting ICT Academiejaar 2014-2015

FACULTEIT INDUSTRIELE INGENIEURSWETENSCHAPPEN TECHNOLOGIECAMPUS DE NAYER Kennisgestuurde beveiligingsapplicatie Steven BLOMMAART Promotor: ing. Floris De Smedt Masterproef ingediend tot het behalen van de graad van master of Science in de industriële wetenschappen: Elektronica-ICT afstudeerrichting ICT Academiejaar 2014-2015

c Copyright KU Leuven Zonder voorafgaande schriftelijke toestemming van zowel de promotor(en) als de auteur(s) is overnemen, kopiëren, gebruiken of realiseren van deze uitgave of gedeelten ervan verboden. Voor aanvragen i.v.m. het overnemen en/of gebruik en/of realisatie van gedeelten uit deze publicatie, kan u zich richten tot KU Leuven Technologiecampus De Nayer, Jan De Nayerlaan 5, B-2860 Sint- Katelijne-Waver, +32 15 31 69 44 of via e-mail iiw.denayer@kuleuven.be. Voorafgaande schriftelijke toestemming van de promotor(en) is eveneens vereist voor het aanwenden van de in deze masterproef beschreven (originele) methoden, producten, schakelingen en programma s voor industrieel of commercieel nut en voor de inzending van deze publicatie ter deelname aan wetenschappelijke prijzen of wedstrijden.

Dankwoord Graag had ik even de mensen willen bedanken die mij hebben geholpen bij het tot stand brengen van deze thesis. In eerste instantie zou ik mijn promotor, ing. Floris De Smedt, willen bedanken. Hierbij kon ik met al mijn vragen terecht om deze thesis tot een goed einde te brengen. Tevens wil ik hem ook bedanken voor het ter beschikking stellen van een aantal klasses waarop ik mijn werk heb kunnen baseren. Verder wil ik ook de onderzoeksgroep EAVISE willen bedanken om mij de kans te geven om aan dit onderwerp te kunnen beginnen. Dit had niet mogelijk geweest zonder dit onderwerp op te splitsen in twee delen. Tot slot wil ik ook mijn vrienden en ouders bedanken voor de morele steun en voor het nalezen van deze scriptie op spelfouten. Steven Blommaart Edegem, mei 2015 v

Abstract Deze masterproef heeft als doel het combineren van beeldverwerking en kennisrepresentatie. We werken deze combinatie uit aan de hand van een case study. Hierin wordt een beveiligingsdeur gecontroleerd en wordt met behulp van beeldverwerking en kennisrepresentatie bepaald of de persoon of personen die voor de beveiligingsdeur staan, naar binnen mochten gaan of niet. Van zodra de deur opengaat wordt er gecontroleerd met objectdetectie hoeveel mensen er in de buurt van de beveiligingsdeur staan. Tevens wordt er ook gecontroleerd of het gaat om personeel of bezoekers. In onze case study maken we dit onderscheid op basis van een lichtblauwe trui. Voor elke persoon nabij bij de deur wordt er gekeken van waar de personen komen met behulp van objecttracking. Afhankelijk van de zone, beveiligd of onbeveiligd, verwachten we ander gedrag. Dit gedrag wordt beschreven in het model met behulp van kennisrepresentatie. Met behulp van IDP maken we een model dat scenario s beschrijft die worden toegelaten aan de hand van regels. Indien we uit de verzamelde beeldinformatie geen geldig model kunnen vinden, betekent dit dat er onrechtmatig toegang is verschaft via de beveiligingsdeur, wat tot een passende reactie, zoals een alarm, moet leiden. Trefwoorden: Objectdetectie, Objecttracking, Kennisrepresentatie vii

Abstract The purpose of this thesis is to combine image processing and knowledge representation. We will achieve this by creating a case study where a security door will be monitored. With the help of image processing and knowledge representation, there will be decided if the person or people who were standing near the security door, were allowed to go in or not. As soon as the door opens, there will be checked how many people there are standing near the security door with the help of object detecion. At the same time, people will be verified if they are employees or visitors. In this case study, they can be distinguised by an electric blue sweater. After that, we will determine where people came from with object tracking. Depending on the zone, secure or unsecure, we are expecting different behaviour. This behaviour will be described in a model with the help of knowledge representation. With the help of IDP, we will create a model that describe different scenarios based on some rules. If we can t find a valid model based on the data from the image processing algorithms, it would mean that people had illegal access through the security door. This should lead to an appropriate response, like an alarm. Keywords: Object Detection, Object Tracking, Knowledge Representation ix

Short summary General In this thesis, we will be researching ways to combine image processing together with knowledge representation. To do this, we will provide a case study. A security door will be monitored and as soon as the door is opened, image processing algorithms will interpret data from the video footage. This data will then be used to build a model, which will be validated using knowledge representation. The image processing part will happen in a C++ environment, together with the OpenCV library. For the knowledge representation part, we will make use of the IDP software. Literature There is a lot of literature on the internet describing object detection and object tracking. After studying some of the most commonly used object detectors, we came to the conclusion that the HOG method provides good results and is easy to implement with OpenCV functions. We also did some research on some object trackers, the Kalman Filter and the Particle Filter. We decided to use the Kalman filter because the linear tracker is rather easy to use and it is good enough for what we want to do with it. Implementation The application consists of two phases. The first phase, the configuration phase, allows the user to set up some parameters which will be used in the second phase, the execution phase. The user can define the office hours and the starting point of the video/image stream. As we don t have a sensor to detect when the security door is being opened, the user must also define when the door is being opened. After defining some parameters, he can mark some zones: the secure zone, the unsecure zone and the zone where the initial detections will happen. All these parameters will be stored in a file, which can easily be accessed by the execution phase. xi

xii The execution phase can be split up into several of stages. The first stage is called the initialization stage. At this stage we will load the parameters from the configuration file. After that, a time will be generated to be placed on the images. We are doing this because our security images don t have a time frame on them, but we will need that to decide if the door is being opened during or outside the office hours. The second stage is where we will wait until the door opens. All the images will be shown until that happens. The third stage occurs when the door is being opened. This will prompt the algorithm to look for people in the initial detection zone, as defined by the user in the configuration phase. These people will then be classified as a visitor or as an employee. We will be doing this by comparing a histogram of the detection with the histogram of a template from an employee. When the histograms have a lot of resemblances, the person is classified as an employee. Otherwise the person is classified as a visitor. Besides classifying people, the timestamp on the images determines if the door has been opened during or outside of office hours, using template matching. The fourth stage of our algorithm is to determine where the detected people came from by tracking them back in time. They will be followed until they reach the secure zone or the unsecure zone. If a person doesn t reach one of those zones, they will automatically be classified as a person who came from the unsecure zone. The last stage of our algorithm is the knowledge representation part. We gathered all the data from the image processing stages to build a model to validate the situation. A different model will be built based on time and office hours. The big difference between models is that during the office hours, visitors are allowed to go through the security door when there is an employee with them. Outside the office hours only employees are allowed to go through. Tests and results The results can be divided into four parts. A first part is the template matching part. To test this algorithm, we generated and chose a couple of timestamps and checked if they give the correct result. From the 12 timestamps we tested, we had a 100 % success rate. It is safe to conclude that this algorithm works. A second part is the object detection ratio. We are detecting on a multi scale level, where the difference between those levels can vary. We tested with four different scales: 2 %, 5 %, 10 % and

xiii 20 %. The lower the scale, the higher detection ration we had, but the more time it takes to process. We decided to choose for performance over time, so we will be working with a 2 % scale between levels. A third part of the results concerns the comparison of histograms. We need to set a threshold to distinguish visitors from employees. We have 5 different scenarios, with a total of 4 employees and 4 visitors. The highest score for a visitor is 0,6552, while the lowest score for an employee is 0,7604. We will be setting the threshold value to 0,75 or 75 %. The last part of the results is the model itself. We generated 15 different scenarios with 0 to 3 people and checked if the two models (outside and during office hours) are valid or invalid. We compared those results with what we would expect and encountered a 100 % success rate. Conclusion We built an application to combine image processing with knowledge representation. We can say we have fulfilled our goals, but there s still some room for improvement. The detection rate of people isn t a big success when people are standing close to the camera. Another detector might be better. A second improvement could be to make the code a bit more modular so the user can decide which parts of the algorithm they want to use, for instance; the inclusion of time in the algorithm.

Inhoudsopgave 1 Situering en doelstellingen 1 1.1 Situering........................................ 1 1.2 Doelstellingen..................................... 1 2 Literatuurstudie 3 2.1 Objectdetectie..................................... 3 2.1.1 Haar-like Features............................... 3 2.1.2 Histogram of Oriented Gradients........................ 4 2.1.3 Integral Channel Features........................... 5 2.1.4 Model Training................................. 6 2.1.5 Besluit...................................... 7 2.2 Objecttracking..................................... 7 2.2.1 Kalman Filter.................................. 7 2.2.2 Particle Filter.................................. 9 2.2.3 Besluit...................................... 10 2.3 Kennisrepresentatie.................................. 10 2.3.1 First-Order Logic................................ 11 2.3.2 ID-logic..................................... 12 2.3.3 IDP....................................... 12 2.3.4 Besluit...................................... 13 3 Specificaties 15 4 Beeldverwerking 17 4.1 Configuratie...................................... 17 4.2 Initialisaties....................................... 19 xv

xvi INHOUDSOPGAVE 4.2.1 Configuratie inlezen............................... 19 4.2.2 Afbeeldingen inlezen.............................. 19 4.2.3 Andere initialisaties............................... 21 4.3 Wachten op event................................... 22 4.4 Eventtrigger...................................... 23 4.4.1 Tijdsbepaling.................................. 23 4.4.2 Persoonsdetectie................................ 25 4.4.3 Histogrammen................................. 26 4.5 Backtracking...................................... 29 5 Kennisrepresentatie 31 5.1 Model opstellen..................................... 31 5.2 Model uitvoeren.................................... 34 6 Resultaten 37 6.1 Template Matching................................... 37 6.2 Objectdetectie..................................... 38 6.3 Histogrammen..................................... 39 6.4 Model.......................................... 40 7 Besluit 43 7.1 Toekomstig werk.................................... 44

Lijst van figuren 2.1 Voorbeelden van mogelijke Haar features....................... 4 2.2 Oppervlakte berekenen van de aangeduide rechthoek................ 4 2.3 Resultaat van een HOG berekening.......................... 6 2.4 Voorbeeld van Integral Channel Features....................... 6 2.5 Flowchart van de particle filter [3]........................... 9 4.1 Gebruiker die de beveiligde zone aan het markeren is................. 18 4.2 Voorbeeld van een configuratiebestand........................ 19 4.3 Tijd die nodig is om een afbeelding in te laden van een video............. 20 4.4 Tijd die nodig is om een afbeelding in te laden van een imagestream......... 21 4.5 Template die gebruikt wordt om personeel te herkennen............... 22 4.6 Standaard output.................................... 23 4.7 Afbeelding uit een sequentie die gebruikt wordt in het Caviar Project......... 24 4.8 Geschaalde templates................................. 26 4.9 Gedetecteerde personen wanneer de deur geopend wordt.............. 26 4.10 Histogrammen van bovenlichamen personen..................... 27 4.11 Genormaliseerde histogrammen van bovenlichamen personen............ 28 4.12 Het volgen van personen................................ 30 5.1 Controleren of tijdstip tijdens of buiten de kantooruren valt.............. 32 xvii

Lijst van tabellen 2.1 Vaak gebruikte logische symbolen........................... 11 6.1 Resultaten template matching............................. 37 6.2 Detectieresultaten met verschillende schalingsfactor die de grootte tussen twee lagen in de afbeeldingspiramide bepaalt......................... 38 6.3 Resultaten histogrammatching............................. 40 6.4 ID s van verschillende personen............................ 40 6.5 Testresultaten van het model.............................. 41 xix

Hoofdstuk 1 Situering en doelstellingen In dit hoofdstuk wordt een korte toelichting gegeven over de opdrachtgever en de verwachtingen van deze thesis. 1.1 Situering EAVISE 1 is een onderzoeksgroep die zich op Campus De Nayer in Sint-Katelijne-Waver bevindt. De onderzoeksgroep richt zich op enerzijds computervisie en anderzijds artificiële intelligentie. Het visiegedeelte van EAVISE is geïntegreerd in VISICS 2, een onderzoeksgroep aan de KU Leuven die zich focust op spraak- en beeldverwerking. Het artificiële gedeelte is geïntegreerd met DTAI 3. Deze onderzoeksgroep houdt zich ondere andere bezig met kennisrepresentatie, wat onder meer in deze thesis aan bod zal komen. 1.2 Doelstellingen Er bestaan verschillende methoden om personen te kunnen detecteren in camerabeelden en dan te volgen doorheen verschillende beelden. Voor mensen is het eenvoudig te interpreteren wat er gebeurt op de beelden, voor een computer is dit al iets moeilijker. De computer kan in deze taak ondersteund worden aan de hand van een model dat de menselijke logica omvat. Het doel van deze masterproef is om kennisrepresentatie te koppelen aan beeldverwerking. Dit wordt gedaan aan de hand van een case study. Na een bepaald event wordt via beeldverwerking bepaald of er aan een opgegeven model voldaan wordt. 1 Embedded Artificially intelligent VISion Engineering 2 VISion for Industry Communications and Services 3 Declaratieve Talen en Artificiële Intelligentie 1

2 1 Situering en doelstellingen Een event, in dit geval een veiligheidsdeur in een bank die opengaat, is enkel toegestaan in bepaalde gevallen, zoals bijvoorbeeld een personeelslid dat binnenkomt, een personeelslid dat een klant binnenlaat,... Van zodra het event gebeurd is, wordt er aan de hand van beeldverwerkingalgoritmes bepaald of dit event geldig of ongeldig is. Deze thesis zal ontwikkeld worden met behulp van C++, waarbij gebruik wordt gemaakt van OpenCV. Voor het kennisrepresentatiegedeelte zal gebruik worden gemaakt van IDP.

Hoofdstuk 2 Literatuurstudie In dit hoofdstuk worden de verschillende onderdelen besproken die kunnen gebruikt worden om deze thesis tot een goed einde te brengen. De literatuurstudie kan opgedeeld worden in drie delen: Objectdetectie (paragraaf 2.1), Objecttracking (paragraaf 2.2) en Kennisrepresentatie (paragraaf 2.3). 2.1 Objectdetectie Objectdetectie is een technologie die gebruikt wordt bij beeldverwerking om semantische objecten uit beelden en video s te halen. Deze objecten kunnen allerlei voorstellen, bijvoorbeeld auto s, zonnebrillen of personen. Wij zullen het hier hebben over persoonsdetectie. In volgende paragrafen worden er enkele technieken besproken: Haar-like features (paragraaf 2.1.1), HOG (paragraaf 2.1.2) en ICF (paragraaf 2.1.3). Na de bespreking van deze technieken wordt in paragraaf 2.1.4 nog kort aangehaald hoe, aan de hand hiervan, een model kan getraind worden. 2.1.1 Haar-like Features Een eerste manier om personen te herkennen is via Haar-like features. Deze techniek maakt gebruik van alternatieve kenmerken gebaseerd op Haar wavelets[11] in plaats van de intensiteit van de afbeelding. Viola en Jones[13] bouwden verder op dit idee en ontwikkelden de Haar-like features. Om de snelheid van deze techniek te verhogen, wordt er gewerkt met Integral Images en opgetelde oppervlaktetabellen. Hierbij is elke pixel de som van de een rechthoek, zoals te zien is in formule 2.1. Hierbij is I(x,y) de som van de pixels op plaats (x,y) en is i(x,y) de originele 3

4 2 Literatuurstudie pixelwaarde op (x,y). I(x,y) = x x,y y i(x, y) (2.1) som = I(C) + I(A) I(B) I(D) (2.2) Op deze manier kan de som van elke rechthoek in een afbeelding bepaald worden door middel van vier getallen en met behulp van formule 2.2. Figuur 2.1 is hier een visualisatie van. Figuur 2.1: Voorbeelden van mogelijke Haar features Met behulp van rechthoekige features wordt dan over de afbeelding gegaan via het sliding window principe. Met deze features wordt er op zoek gegaan naar contrastverschillen in vlakken. Figuur 2.2 laat een aantal mogelijke features zien die kunnen gebruikt worden. Figuur 2.2: Oppervlakte berekenen van de aangeduide rechthoek Viola en Jones hadden deze methode ontwikkeld om gezichten te kunnen detecteren. De methode is uitgebreid door Siala, M et al.[12] om ook volledige personen te kunnen detecteren. Hiervoor zijn ook functies voorzien in OpenCV. 2.1.2 Histogram of Oriented Gradients Histogram of Oriented Gradients (HOG) is een feature descriptor die gebruikt wordt om objecten, hier personen, te detecteren. Dit gebeurt op basis van contrastveranderingen (of gradiënten)

2 Literatuurstudie 5 tussen pixels. De gradiënten in de afbeelding worden bepaald met behulp van convolutiefilters. Door de afbeelding te convolueren met de filter, zoals aangegeven in formule 2.3, bekomen we voor iedere pixel de horizontale gradiënt. Een convolutie met de getransponeerde matrix zal leiden tot de verticale gradiënt. [1, 0, 1] (2.3) Het model dat gebruikt wordt door Dalal en Triggs [5] is getraind aan de hand van afbeeldingen van 64x128 pixels. Iedere afbeelding wordt opgedeeld in blokken van 16x16 pixels, met een overlap van 50 %. We hebben in het totaal dus 105 blokken. Van iedere pixel wordt een gradiënt bepaald. Voor ieder blok wordt een histogram opgebouwd aan de hand van de gevonden gradiënten. Het gebruikte histogram heeft 9 histogramwaarden (of bins) die elk een verschillende richting aangeven. De gradiëntvector wordt opgebouwd uit de horizontale en de verticale gradiënt die we aan de hand van convolutiefilters hebben bepaald. De grootte van deze vector kan eenvoudig bepaald worden aan de hand van Pythagoras, terwijl de oriëntatie kan bepaald worden aan de hand van de inverse tangens. Nu de grootte en de richting bepaald zijn, kan deze waarde bij in het histogram gezet worden. Zoals al eerder aangehaald, heeft het histogram 9 bins. Deze bins maken een opdeling tussen 0 en 180 graden. De gradiënten van de tegengestelde hoeken worden hierbij samenvoegd. Elke bin is dus 20 graden groot. De bijdrage die iedere pixel heeft in het histogram is in verhouding tot de grootte van de gradiëntwaarde van de pixel. De histogrammen van elke pixel van een blok worden bij elkaar opgeteld. Tot slot wordt het histogram nog genormaliseerd om robuster te zijn zijn tegen lokale belichtingsveranderingen. Dit gebeurt voor elk blok van de afbeelding. Op figuur 2.3 is het resultaat van een HOG berekening te zien. Om hier nu een persoon in te herkennen, moeten de features getraind worden in een model, wat in paragraaf 2.1.4 wordt uitgelegd. 2.1.3 Integral Channel Features Een andere methode om personen te kunnen detecteren is via Integral Channel Features (ICF). Hierbij wordt een combinatie gemaakt van de nauwkeurigheid van HOG-features en de snelheid van het cascade-framework van haar-features. Dollár et al. [6] hebben onderzoek gedaan naar wat de beste combinatie is om een zo hoog mogelijke detectioratio te verkrijgen. Hierbij zijn ze tot de conclusie gekomen dat er van elke afbeelding 9 features moeten berekend worden: zes

6 2 Literatuurstudie Figuur 2.3: Resultaat van een HOG berekening verschillende gradiënten, gebaseerd op HOG en 3 kleurkanalen (LUV). Iedere feature die berekend wordt, vormt een Channel. Figuur 2.4 toont hiervan een resultaat. Gebaseerd op het cascade framework zoals gebruikt door Viola en Jones voor gezichtsdetectie, wordt hier ook een cascade gemaakt van rechthoekige zones. Voor iedere zone wordt de som van de featurewaarden berekend in het bijbehorende kanaal. Dit kan efficiënt gebeuren door gebruik te maken van integral images. Figuur 2.4: Voorbeeld van Integral Channel Features Net zoals HOG en Haar-like wavelets, is ICF ook geïmplementeerd in de OpenCV-bibliotheek. Het nadeel hierbij is dat de oorspronkelijke implementatie van Dollár et al. niet dezelfde nauwkeurigheid haalt in OpenCV. Hierdoor wordt deze implementatie minder bruikbaar. 2.1.4 Model Training Om een persoon te kunnen detecteren, moet eerst een model worden getraind. Er worden honderden of duizenden samples van het object, in dit geval personen, ingelezen. Deze afbeeldingen worden allemaal geschaald naar dezelfde grootte. Naast samples van personen,

2 Literatuurstudie 7 moeten er ook tal van negatieve samples worden ingelezen die niets met personen te maken hebben. Om een idee te geven: voor HOG persoonsdetectie werden 460 positieve samples en 1218 negatieve samples gebruikt. Viola en Jones gebruikten voor hun gezichtsdetector ongeveer 5000 positieve samples en 9500 negatieve samples. Met behulp van features die berekend zijn, wordt een classifier getraind. Alle positive samples worden ingelezen en verwerkt. Wanneer dit gebeurd is, wordt er aan Hard-Negative Mining gedaan. Hierbij worden alle negatieve samples aan de classifier onderworpen. De bedoeling is dat er geen enkele detectie gebeurt bij de negatieve samples. Wanneer er toch een detectie is, spreken we over een false positive. In het geval van false positives, moet de classifier opnieuw getraind worden tot dat alle false positives verdwenen zijn. Vanaf dan is het model getraind en kunnen andere afbeeldingen onderworpen worden aan dit model. 2.1.5 Besluit We hebben hier drie verschillende technieken aangehaald om aan persoonsdetectie te kunnen doen. De ICF methode is niet zo goed gedocumenteerd in OpenCV, dus zal deze methode niet worden toegepast in onze applicatie. We hebben gekozen om met HOG aan persoonsdetectie te doen omdat deze techniek voor persoonsdetectie dient, terwijl de Haar-like features methode eerder wordt gebruikt voor gezichtsdetectie. 2.2 Objecttracking Met objecttracking kan een object worden gevolgd doorheen verschillende frames. Er zijn een aantal manieren om een object te volgen, waaronder de Kalman- en de Particle Filter. De gewone Kalman Filter kan gebruikt worden voor lineaire systemen, terwijl de Particle Filter ook gebruikt kan worden voor niet lineaire systemen. 2.2.1 Kalman Filter De Kalman Filter werd in 1960 ontwikkeld door R. Kalman[8]. Het is een set van verschillende wiskundige vergelijkingen die op een efficiënte en recursieve manier voorspellingen doen in het volgen van een object dat lineair beweegt. Er bestaat ook een niet-lineaire Kalmanfilter, maar daar gaan we in deze thesis niet verder op in. Omdat wiskundige formules op zichzelf niet zoveel vertellen, wordt de Kalmantracker uitgelegd a.d.h.v. een concreet voorbeeld: locatiebepaling van een rijdende auto met behulp van een GPS. Een GPS kan een locatie bepalen tot op een paar meter nauwkeurig, omdat er ruis op het

8 2 Literatuurstudie GPS-signaal kan zitten. De locatie van de auto kan ook bepaald worden door middel van zijn versnelling, snelheid en richting. De Kalmantracker kan opgedeeld worden in twee delen: de predict- en updatefase. In de predictfase wordt er met behulp van de snelheid, versnelling,... een voorspelling gedaan naar de nieuwe locatie op basis van de vorige locatie. Stel dat de auto rijdt tegen 20 m/s op een rechte lijn en er wordt elke seconde een nieuwe locatie bepaald, dan zal de nieuwe locatie 20 meter verder liggen. Maar binnen deze seconde kan er natuurlijk bijvoorbeeld iets veranderd zijn aan de snelheid. Daarom wordt er naast de nieuwe positie ook een nieuwe covariantie berekend. Bij een hogere snelheid is de nieuwe locatie onzekerder dan bij een lage snelheid. Een kleine afwijking bij een hoge snelheid kan voor een grote fout zorgen. Formule 2.4 geeft dit wiskundig weer. Hierbij is x t+1 de voorspelde volgende locatie, x t is de huidige locatie en u t stelt de beweging voor, in het voorbeeld 20 m/s. w x stelt de errorfactor of de covariantie voor van de meting. De matrices A en B leggen een verband tussen de vorige en de huidige locatie. x t+1 = A.x t + B.u t + w x (2.4) In de updatefase komt de GPS terug in het spel. De GPS bepaalt de nieuwe locatie van de auto. Ook op deze waarde zit een foutmarge. Dit kunnen we zien in formule 2.5. Hierbij is z t+1 de nieuwe voorspelde GPS-locatie, x t is de huidige locatie, w z is de errorfactor of de covariantie van de GPS. Net zoals bij de predictfase is C een matrix die een verband legt tussen de vorige en de huidige stap. z t+1 = C.x t + w z (2.5) Van zodra de predict- en updatefase gebeurd zijn, wordt aan de hand van beide waarden de nieuwe locatie bepaald met formule 2.6. x t+1 = x t+1 + K.(z t+1 z t+1 ) (2.6) Hierbij is x t+1 de waarde waarmee de volgende locatiebepaling zal gebeuren. z t+1 is de effectieve, nieuwe gemeten GPS-waarde. K is de Kalman gainfactor, een correctieterm. Deze factor gaat een grotere rol spelen als de waarde van de predictfase veel verschilt met de waarde van de updatefase. Deze stappen zullen zich blijven herhalen zolang er nieuwe data komt.

2 Literatuurstudie 9 2.2.2 Particle Filter Een andere manier om aan objecttracking te doen is door gebruik van de Particle Filter[7]. Ook deze filter zal uitgelegd worden aan de hand van een concreet voorbeeld. In dit voorbeeld hebben we een vliegtuig dat op een bepaalde hoogte vliegt. We kunnen meten hoe hoog het vliegtuig boven zeeniveau zit en we kunnen de afstand tot de grond bepalen. We hebben een kaart, maar we hebben geen idee waar we zitten. Figuur 2.5: Flowchart van de particle filter [3] Figuur 2.5 toont een flowchart die laat zien hoe de Particle Filter werkt. In een eerste stap worden er een aantal hypotheses gegenereerd waar het vliegtuig zich kan bevinden. Omdat we geen idee hebben waar het vliegtuig zich initieel bevindt, kan dit dus overal zijn. De gegenereerde hypotheses worden particles genoemd. In een tweede stap wordt aan elke particle een gewicht gegeven. Dit heeft te maken met de kans dat een bepaald particle de locatie is van het vliegtuig aan de hand van de metingen die gebeurd zijn. Hoe groter de kans is dat de particle de locatie van het vliegtuig is, hoe groter het gewicht van deze particle zal zijn. Vervolgens worden alle particles met een laag gewicht verwijderd aangezien de kans miniem is dat het vliegtuig zich daar zal bevinden.

10 2 Literatuurstudie Een derde stap van de particle filter is het resamplen van de particles. Het resamplen gebeurt rond de particles met een hoog gewicht die behouden zijn. Na het resamplen heeft elke particle terug hetzelfde gewicht. Een laatste stap is het updaten. Het vliegtuig is een beetje verder gevlogen, maar we weten niet met welke snelheid. Samen met het vliegtuig worden ook de particles verplaatst. Omdat we niet weten met welke snelheid het vliegtuig zich verplaatst, zit er ook wat variatie op het verplaatsen van de particles. Hierdoor kan het zijn dat sommige particles een ander gewicht krijgen, omdat sommige snelheden niet realistisch zijn. Als dit gebeurd is, wordt er terug naar stap 2 gegaan en blijft dit algoritme zitten in een lus tot dat er geen nieuwe data meer komt. 2.2.3 Besluit We hebben twee verschillende trackers besproken. Marron et al. [10] zijn tot het besluit gekomen dat de particle filter beter presteert in gevallen waarbij een groot aantal personen moet gevolgd worden in complexe situaties. De Kalmanfilter wordt eerder gebruikt bij het volgen van een beperkt aantal personen, zoals bijvoorbeeld bewakingsbeelden. Omdat in onze case maar een aantal personen moet gevolgd worden en omdat onze beelden ook bewakingsbeelden zullen voorstellen, hebben we beslist om de Kalmanfilter te gebruiken. 2.3 Kennisrepresentatie Kennisrepresentatie maakt deel uit van artificiële intelligentie waarbij informatie wordt voorgesteld zodat een computersysteem dit kan gebruiken om complexe taken uit te voeren. In onze doelstelling is opgegeven dat we gebruik zullen maken van de kennisrepresentatietaal IDP. IDP of Inductive Definition Programming[9] is een declaratieve oplossingsmethode in het programmeren. Dit betekent dat men het probleem beschrijft, in tegenstelling tot het imperatief programmeren, waarbij men beschrijft hoe het probleem opgelost moet worden. Bij declaratief programmeren zijn twee dingen belangrijk: de kwaliteit van de logica voor kennisrepresentatie en de efficiëntie van de logische conclusies. De taal die gebruikt wordt in IDP om te programmeren is ID-logic, een uitbreiding van de klassieke eerste orde logica met inductieve definities. Klassieke eerste orde logica, of FO, is een van de meest expressieve talen voor kennisrepresentatie. Het nadeel hierbij is dat niet alle kennis eenvoudig kan worden voorgesteld, zoals inductieve definities, wat bij ID-logic wel mogelijk is.

2 Literatuurstudie 11 2.3.1 First-Order Logic First-Order Logic is redeneren in symbolen, waarbij elke zin wordt opgedeeld in een onderwerp en een gezegde. Het gezegde definieert of past de eigenschappen aan van het onderwerp. Bij eerste orde logica kan het gezegde maar verwijzen naar één enkel onderwerp. Symbolen De symbolen van first order logic kunnen onderverdeeld worden in twee categorieën: de logische symbolen en de niet-logische symbolen. Het verschil tussen beiden is dat de logische symbolen altijd dezelfde betekenis hebben. In tabel 2.1 staan een aantal courant gebruikte logische symbolen. Niet-logische symbolen kunnen op verschillende manieren geïnterpreteerd worden. Deze symbolen stellen relaties, functies en constanten voor in de redenering. Symbool Betekenis voor elke er bestaat AND OR NOT als... dan... als en slecht als Tabel 2.1: Vaak gebruikte logische symbolen Formatieregels Formatieregels zijn regels om syntactisch in orde te zijn binnen first order logic. Deze worden onderverdeeld in drie categorieën: termen, formules en de volgorde van symbolen. Termen: de set van termen is gedefinieerd volgens deze twee regels. 1. Elke variabele is een term. 2. Elke expressie of functie van n argumenten is een term. Formules: de set van formules is gedefinieerd volgens deze vijf regels. 1. Als P een n-ary predikaatsymbool is, en t 1,..., t n zijn termen, dan is is P(t 1,..., t n ) een formule. 2. Als het gelijkheidsteken, =, een deel van de logica is en t 1 en t 2 zijn termen, dan is t 1 = t 2 een formule.

12 2 Literatuurstudie 3. Als A een formule is, dan is A ook een formule. 4. Als A en B formules zijn, dan is A B ook een formule. Hetzelfde geldt voor alle andere binary connectives. 5. Als A een variabele is en x is een variabele, dan zijn xa en xa formules. Volgorde van symbolen: Hoe hoger in het lijstje, hoe hoger de prioriteit. 1. 2. en 3. en 4. 2.3.2 ID-logic In de vorige paragraaf is First-Order Logica kort besproken. ID-logica bouwt hierop verder. Een vocabulary is een set van predikaat- en functiesymbolen. Een voorbeeld hiervan is formule 2.7. Hierbij is φ een First Order formule over. P(t) is het hoofd van de regel en φ is de body. De pijl is een definiërende implicatie, geen als... dan... uitdrukking. Een predikaat dat in het hoofd van een regel van een definitie staat, is een gedefinieerd predikaat. Elk ander symbool is een open symbool van de definitie. x (P(t) φ) (2.7) Een -structuur bestaat uit een domein D I. Voor elke n-ary predikaat P is er een relatie waarbij P I een deelverzameling is van D n I, en voor elke n-ary functiesymbool f geldt dat f I : D n I D I. De semantiek van ID-logic bouwt verder op de First Order logic s welgefundeerde semantiek voor definities. Als deze definitie als basis wordt gebruikt, dan kunnen we dit uitbreiden tot alle FO(ID) zinnen bij de standaard inductieve regels voor de klassieke logische connectives. 2.3.3 IDP De ID-logic theorie is gedefinieerd als een set van First Order zinnen en definities. De IDP taal is gebaseerd op een eerdere versie van ID-logic en is een getypeerde versie van deze logica. IDP kan voor tal van toepassingen gebruikt worden. Zo zijn er tal van voorbeelden[2] te vinden, zoals het opstellen van uurroosters, de kortste weg zoeken naar een plaats en het oplossen van Einstein s puzzel.

2 Literatuurstudie 13 Een IDP programma is op te delen in drie verschillende delen. Vocabulary: hier worden alle symbolen gedefinieerd waarover we uitspraken zullen doen. Theory: hier worden voorwaarden en regels opgesteld over de opgegeven Vocabulary. Structure: hier worden de symbolen uit het Vocabulary gedeelte gespecifieerd. Een IDP programma kan op drie verschillende manieren uitgevoerd worden. Een eerste manier is via modelexpansie. Hier worden verschillende modellen opgebouwd die voldoen aan de opgegeven regels. Een tweede manier is controleren of het model satisfiable is. Hierbij wordt gecontroleerd of een opgebouwd model voldoet aan de regels die zijn opgegeven. Een derde en laatste manier is een zo optimaal mogelijk model op te bouwen. Hierbij wordt er rekening gehouden met een aantal criteria, bijvoorbeeld een waarde die zo klein mogelijk moet zijn. 2.3.4 Besluit Omdat wij in onze case study een situatie moeten valideren of deze geldig is of niet, zullen wij werken met de satisfiable manier. We zullen dus een volledig model opbouwen en dit model dan controleren.

Hoofdstuk 3 Specificaties De implementatie die we in komende hoofdstukken uitwerken, combineert twee kennisdomeinen: beeldverwerking en kennisrepresentatie. Om de nodige beeldverwerking uit te voeren, wordt er gebruikt gemaakt van C++ en de OpenCV bibliotheek. De programmeertaal C++ zorgt ervoor dat videostreams snel en efficiënt kunnen verwerkt worden. Voor een intelligenter gebruik van de resultaten die we bekomen van het beeldverwerkingsgedeelte, maken we gebruik van kennisrepresentatie. Dit laat de eindgebruiker toe om een aanpasbaar en interpreteerbaar model op te bouwen. Om zo n model op te bouwen, wordt er gebruik gemaakt van de kennisrepresentatietaal IDP. De implementatie die hier gebruikt wordt, is opgebouwd op basis van fictieve scenario s waarin volgende regels gelden: Een personeelslid mag tijdens de kantooruren door de beveilingsdeur. Een personeelslid mag buiten de kantooruren door de beveilingsdeur, maar enkel als hij van de beveiligde zone komt. Een bezoeker mag tijdens de kantooruren door de beveilingsdeur, maar enkel als er een personeelslid bij is. Een bezoeker kan buiten de kantooruren nooit door de beveilingsdeur gaan. Een bezoeker kan nooit uit de beveiligde zone komen. Personeel kan herkend worden aan een licht blauwe trui. Hieronder vindt u een opsomming van de verschillende scenario s. Deze nummering zal gebruikt worden in hoofdstuk 6, waar de resultaten van het algoritme bespoken zullen worden. 15

16 3 Specificaties 1. Persoon 1 (personeelslid) gaat vanuit de onbeveiligde zone naar de beveiligingsdeur. 2. Persoon 1 (personeelslid) gaat vanuit de beveiligde zone naar de beveiligingsdeur. 3. Persoon 1 (bezoeker) gaat vanuit de onbeveiligde zone naar de beveiligingsdeur. 4. Persoon 1 (bezoeker) gaat vanuit de onbeveiligde zone naar de beveiligingsdeur en wordt binnengelaten door persoon 2 (personeelslid) die vanuit onbeveiligde zone komt. 5. Persoon 1 (bezoeker) gaat vanuit de onbeveiligde zone naar de beveiligingsdeur en wordt binnengelaten door persoon 2 (personeelslid) die vanuit beveiligde zone komt. Om wat flexibiliteit te hebben bij de implementatie, maken we een onderscheid tussen een configuratiefase en een uitvoeringsfase. Zoals af te leiden uit de naam, wordt de configuratiefase gebruikt om een configuratie uit te voeren, zodat een aantal parameters, die specifiek zijn voor een bepaald scenario, kunnen ingesteld worden. Hierdoor kan de broncode van de uitvoeringsfase onveranderd blijven. Het bekomen configuratiebestand zal gebruikt worden tijdens de uitvoeringsfase. De uitvoeringsfase leest vervolgens alle parameters in die de gebruiker bepaald heeft. Op basis van deze parameters worden dan de algoritmes uitgevoerd op een sequentiële manier. De uitwerking die we hier voorstellen is eventgebaseerd. Hierdoor wordt de videostream overlopen zolang de beveiligingsdeur niet geopend wordt. Van zodra de beveiligingsdeur wordt geopend, maken we gebruik van beeldverwerkingalgoritmes om voldoende informatie over de scene die we observeren te verzamelen. De algoritmes waar wij hier mee werken zijn persoonsdetectie, persoonstracking en het vergelijken van histogrammen. De informatie, die we verzameld hebben met behulp van beeldverwerking, wordt gevalideerd aan de hand van een model. Dit model bevat een beschrijving van de toegelaten situaties, welke we eerder hebben beschreven. Dit model wordt dan uitgevoerd om te controleren of de situatie geldig is. De reden om te wachten met detecteren en tracken tot dat de deur geopend wordt heeft een aantal voordelen t.o.v. direct detecteren en tracken. Zo worden enkel personen getrackt die iets te maken hebben met het scenario en de beveiligingsdeur. Toevallige passanten worden hierbij genegeerd. Een ander voordeel is dat de zoekruimte verkleind kan worden. Er moet enkel maar in de regio nabij de beveiligingsdeur gezocht worden naar personen. In het andere geval moet elke ingang gecontroleerd worden. De tijd die we hier mee besparen, kan eventueel dienen om krachtigere algoritmes te gebruiken of real-time verwerking te bekomen.

Hoofdstuk 4 Beeldverwerking In dit hoofstuk wordt er dieper ingegaan op de algoritmes die worden toegepast op onze beelden. In paragraaf 4.1 komt de configuratie aan bod waarbij de gebruiker een aantal parameters kan instellen. In paragraaf 4.2 wordt alles geïnitialiseerd om met het algoritme van start te kunnen gaan. Zo wordt hier o.a. het configuratiebestand ingelezen en wordt er dieper ingegaan op het openen van afbeeldingen. Tot slot wordt het beeldverwerkingsalgoritme besproken. Dat bestaat uit drie verschillende fases die in paragrafen 4.3 t.e.m. 4.5 uitgelegd zullen worden. 4.1 Configuratie Zoals eerder vermeld, wordt de configuratiefase gebruikt om een aantal scenariospecifieke parameters in te stellen. De configuratie kan gebeuren aan de hand van een videobestand of een afbeeldingssequentie. Ondanks dat het openen van een deur aan de hand van beeldverwerking zou kunnen gebeuren, verwachten we dat het resultaat van een sensor een veel betrouwbaarder resultaat zal geven. Het gebruik van een sensor zal dus in de praktijk gebruikt worden. Gezien we in onze testopstelling niet over een dergelijke sensor beschikken, maakt het manueel aangeven van het frame waar de deur opengaat nog deel uit van de configuratie. Omdat we verschillend gedrag verwachten tijdens of buiten de kantooruren, wordt deze parameter ook ingesteld in de configuratie. Na het ingeven van voorgaande parameters, verschijnt er een afbeelding uit de video of afbeeldingssequentie. Op deze afbeelding moeten er nog een aantal zones worden aangeduid. Een eerste zone is de beveiligde zone waaruit enkel personeel kan komen. Een tweede zone, de onbeveiligde zone, waaruit zowel bezoekers als personeel kunnen komen. Als laatste wordt de 17

18 4 Beeldverwerking Figuur 4.1: Gebruiker die de beveiligde zone aan het markeren is zone rond de beveiligingsdeur aangeduid, waarbij initieel naar personen wordt gezocht. Tijdens het configureren van deze zones, worden deze gevisualiseerd aan de hand van gekleurde lijnen, zoals te zien is in figuur 4.1. Op deze figuur is de gebruiker bezig met de beveiligde zone aan te duiden. Om de manuele initialisatie te vereenvoudigen, geven we de gebruiker steeds de kans opnieuw te beginnen om eventuele fouten te corrigeren. De beveiligde en onbeveiligde zone worden bijgehouden als polygonen, terwijl de zone rond de beveiligingsdeur wordt bijgehouden als een rechthoek. De zone rond de beveiligsingsdeur wordt namelijk gebruikt om initiële detecties te doen. Hierdoor is het gebruik van een rechthoek veel praktischer. Gezien het gezichtspunt van de camera, zijn de beveiligde en onbeveiligde zone moeilijker te vatten in een rechthoek. Daarom kunnen deze zones specifieker worden ingesteld. Deze zones hebben ook enkel maar een controlefunctie: controleren of een persoon uit één van deze zones afkomstig is. In figuur 4.2 kunt u het resultaat zien van een resulterend configuratiebestand. De twaalf asterisken bovenaan het bestand zijn een extra controle voor de uitvoeringsfase om te zien of het een geldig configuratiebestand is.

4 Beeldverwerking 19 Figuur 4.2: Voorbeeld van een configuratiebestand 4.2 Initialisaties 4.2.1 Configuratie inlezen Nadat het configuratiebestand is opgesteld, kan de uitvoeringsfase van start gaan. Dit is onder te verdelen in een aantal stukken. In 4.2.1 wordt het inlezen van het configuratiebestand besproken, dat in paragraaf 4.1 werd opgesteld. De opstart van het programma van de uitvoeringsfase dient te gebeuren op basis van een geldig configuratiebestand. Indien dit niet het geval is zal het programma vroegtijdig beëindigd worden. Het bestand, zoals voorgesteld in figuur 4.2, wordt vervolgens volledig ingelezen. Het pad naar de video of afbeeldingssequentie, het nummer van het startframe en het frame waar de deur opengaat, worden bijgehouden in constante parameters zodat deze niet meer overschreven kunnen worden. De kantooruren en de drie zones worden in hun respectievelijke vectoren weggeschreven. Van zodra dit gebeurd is, wordt de file gesloten en kan de initialisatie van het programma beginnen. 4.2.2 Afbeeldingen inlezen Zoals eerder besproken, maken we een onderscheid tussen input aan de hand van een videobestand of afbeeldingssequentie. Dit verschil is te zien in listing 4.1.

20 4 Beeldverwerking Listing 4.1: Openen van een afbeelding / / / Open the v i d e o f i l e / imagestream at the s t a r t i n g frame VideoCapture capture ; i f ( strcmp ( f i l e t y p e. c s t r ( ), Video ) == 0){ capture = new VideoCapture ( filename ) ; i f (! capture >isopened ( ) ) { c e r r << Unable to open video f i l e : << filename << endl ; e x i t ( EXIT FAILURE ) ; } capture >set (CV CAP PROP POS FRAMES, s t a r t f r a m e ) ; capture >> frame ; } else{ frame = imread ( getimagefromfilestream ( f n p r e f i x, f n s u f f i x, counter ) ) ; } i f (! frame. data ){ c e r r << Unable to open the image << endl ; e x i t ( EXIT FAILURE ) ; } Bij een video gebeurt het zoeken naar een specifiek frame telkens relatief ten opzichte van een frame. Bij een afbeeldingssequentie kan een frame direct gelezen worden op basis van het pad van het frame. Hier is er al meteen een duidelijk verschil qua tijd tussen de twee. Deze werden bepaald d.m.v. een tickcount die in het programma werd uitgevoerd. Op de grafiek van figuur 4.3 ziet u een aantal resultaten. Figuur 4.3: Tijd die nodig is om een afbeelding in te laden van een video

4 Beeldverwerking 21 Al deze waarden zijn een gemiddelde van vijf afzonderlijke pogingen om een frame te openen. Een verband tussen de gevonden waarden is er niet echt. Wanneer we hier lineaire regressie op toepassen, zien we wel dat er een stijgend verloop is, maar dat er ook heel wat uitschieters zijn. Deze zijn te verklaren doordat er in de video een aantal referentieframes zijn. De punten onder de rechten zijn frames die dicht bij zo n referentieframe liggen of een referentieframe zijn. De punten boven de as zijn frames die in het midden tussen twee verschillende referentieframes liggen. Als we de richtingscoëfficiënt verwaarlozen, dan komen we aan een gemiddelde van 176,5 ms om een frame te openen. In tegenstelling tot een afbeeldingssequentie ligt deze waarde een pak hoger dan bij een video, zoals te zien is in figuur 4.4. Hier halen we een gemiddelde van ongeveer 15 ms om een frame te openen. Aan de hand van deze resultaten krijgt een afbeeldingssequentie de voorkeur. Figuur 4.4: Tijd die nodig is om een afbeelding in te laden van een imagestream 4.2.3 Andere initialisaties Tot slot zijn er nog twee initialisaties die moeten gebeuren. Ten eerste wordt er een tijd gegenereerd om rechtsonderaan op het frame te plaatsen. Normaal gezien zou deze tijd het huidige tijdstip moeten zijn, maar om beter te kunnen testen, hebben we beslist om hier een random gegenereerde tijd van te maken. Dit is ter vervanging van de tijd die normaal gezien op bewakingsbeelden staat. Het plaatsen van deze tijd op het frame staat compleet los van het algoritme. Op basis van de tijd die op het frame staat, wordt dan beslist welk model er zal opgesteld worden. Voor experimentele doeleinden in onze applicatie, kan een personeelslid herkend worden aan de hand van een blauwe trui die hij of zij aanheeft. Een template wordt ingelezen van een

22 4 Beeldverwerking personeelslid zoals te zien is in figuur 4.5. Van deze template wordt enkel de bovenste helft gebruikt, aangezien dit een benadering is van het bovenlichaam van een persoon. Van dat gedeelte wordt dan een kleurenhistogram gemaakt. In paragraaf 4.4.3 wordt hier dieper op ingegaan. Figuur 4.5: Template die gebruikt wordt om personeel te herkennen 4.3 Wachten op event Alle initialisaties zijn gebeurd en dus kan het algoritme nu zijn werk gaan doen. Er zijn een aantal zaken die bij elk frame moeten gebeuren, eender waar het programma zich bevindt. Een Frame-object wordt aangemaakt aan de hand van een afbeelding, het tijdstip en het framenummer. Op de afbeelding, zoals in figuur 4.6, worden twee dingen toegevoegd. Linksbovenaan komt er een kader met het meegegeven framenummer, zodat de gebruiker een idee heeft waar de videostream ergens zit. Rechtsonderaan komt de tijd op de afbeelding te staan, welke dan kan worden bepaald wanneer dit nodig is. Het meegegeven framenummer wordt bijgehouden in het Frame-object, in tegenstelling tot de tijd die, indien nodig, bepaald kan worden via beeldverwerking. Het meegegeven framenummer wordt bijgehouden in het Frame object, in tegenstelling tot de tijd. Deze wordt indien nodig bepaald via beeldverwerking. Dit omdat het initieel de bedoeling was om camerabeelden te gebruiken waarop al een tijd staat aangeduid, aangezien het een veelvoorkomende methode is bij beveiligingsbeelden om de tijd aan te duiden op de afbeelding. Het plakken van het tijdstip op de afbeelding kan dus ook gezien worden als een soort van initialisatie. Vanaf hier begint dan de eigenlijke routine. De frames worden één voor één overlopen tot op het moment dat de deur opengaat.

4 Beeldverwerking 23 Figuur 4.6: Standaard output 4.4 Eventtrigger Op een bepaald moment zal de deur geopend worden. Als dit het geval is, zitten we in een volgende state: de objectdetectie state. Hier worden een aantal zaken bepaald: Er wordt bepaald hoe laat het is, en of dit tijdens of buiten de kantooruren is. Er wordt naar personen gezocht in de buurt van de deur. De gevonden personen worden geclassificeerd als personeelslid of als bezoeker. De algoritmes die hiervoor gebruikt worden, zullen hier uitgebreid besproken worden. 4.4.1 Tijdsbepaling Het algoritme dat hier uitgewerkt is, is enkel geldig voor onze tijdsaanduidingen op de afbeeldingen. Het is wel zo dat dit wel werkt op verschillende resoluties. Er zijn ook andere manieren om aan tijdsaanduiding te doen, zoals bijvoorbeeld bij het Caviar Project [1]. In figuur 4.7 is te zien dat zij bewakingsbeelden gebruiken waar tijd en datum linksbovenaan staan. Mits een kleine aanpassing zou het algoritme ook op deze beelden kunnen werken. Enkel de locatierechthoek van de tijd moet aangepast worden. Dit kan op twee manieren: de zone kan aangeduid worden in de configuratiefase of er moeten twee parameters in de uitvoeringsfase aangepast worden. De tijdsbepaling gebeurt hier op basis van template matching. Deze techniek wordt gebruikt om

24 4 Beeldverwerking Figuur 4.7: Afbeelding uit een sequentie die gebruikt wordt in het Caviar Project de tijd die op het scherm te zien is, te kunnen uitlezen. De locatie van de tijd op de afbeelding staat altijd op dezelfde plaats. De linkerbovenhoek van de rechthoek met de tijd bevindt zich op 85% van de breedte en 90% van de hoogte van het frame. De grootte van de rechthoek hangt af van de grootte van het frame. Als referentie worden er frames van 1280 bij 720 pixels gebruikt. Hierbij wordt een rechthoek gebruikt van 50 bij 100. Met behulp van formule 4.1 wordt een schalingsfactor bepaald. Indien deze niet gelijk is aan 1, betekent dit dat het frame een andere grootte heeft en dat de rechthoek met de tijd verkleind of vergroot moet worden. Deze herschaling gebeurt via het nearest-neighbor of dichtsbijzijnde buur methode. scale = width height 1280 720 (4.1) Bij deze methode wordt elke pixel vervangen door meerdere pixels van dezelfde kleur als de afbeelding vergroot moet worden. Bij het verkleinen van de afbeelding worden er rijen en kolommen verwijderd. Figuur 4.8 laat een aantal resultaten zien. Hierbij is duidelijk te zien dat, als de schaal groter wordt, er niet veel verandert. Wanneer de schaal naar beneden gaat is er een duidelijk verlies aan kwaliteit te zien. Bij een schaal van 0.5 zijn de cijfers nog duidelijk herkenbaar. Bij een schaal van 0.25 zijn een aantal cijfers niet echt duidelijk herkenbaar meer. Normaal gezien zou deze schaal niet voorkomen. Om aan deze schalingsfactor te geraken, moeten de camerabeelden al 16 keer kleiner zijn dan de referentie van 1280 bij 720 pixels. Dit komt neer op beelden van 320 bij 180 pixels, wat beekdverwerkingalgoritmes altijd uitdagend zal maken. Het grote voordeel van de Nearest Neighbor methode is de snelheid. Er moet namelijk maar een beperkt aantal berekeningen gebeuren, in tegenstelling tot andere methoden zoals bilineair of bicubic interpolatie.

4 Beeldverwerking 25 Er wordt een object van de klasse Tijd aangemaakt waarbij het stuk afbeelding met het tijdstip wordt meegegeven. Deze afbeelding wordt binair gemaakt: de achtergrond wordt zwart gemaakt, terwijl het tijdstip wit wordt gemaakt. Vervolgens worden templates van elk cijfer één voor één ingeladen. Afhankelijk van de grootte van de afbeelding worden deze templates herschaald volgens formule 4.1. Aangezien de originele afbeelding en de ingelezen templates nog in RGB waarden staan, worden deze twee afbeeldingen omgezet naar grijswaarden. Hierdoor is er nog maar één kleurkanaal i.p.v. drie. Elke template wordt over de afbeelding geschoven. Alle gevonden punten worden vervolgens onderworpen aan een threshold. In dit geval is deze threshold 90%. Met behulp van de minmaxloc functie uit de OpenCV-bibliotheek, worden de locaties bepaald waar er een match is gevonden. De afbeelding van de tijd wordt opgedeeld in vier vakken, aangezien er vier cijfers in het tijdstip staan. Dit zal worden bijgehouden in een array van vier integers die op -1 geïnitialiseerd worden. Met het dubbelpunt wordt geen rekening gehouden omdat dit niet veel plaats inneemt en het algoritme anders moeilijker zou maken. Met behulp van formule 4.2 kan worden bepaald op welke plaats het gevonden cijfer moet komen. T x stelt de breedte van de template voor. I x stelt de breedte van het stuk afbeelding met de tijd op voor, zoals te zien is in figuur 4.8. F x stelt de x-coördinaat van de locatie van de match voor. Dit is steeds de hoek linksonderaan. De correctiefactor T x /2 is nodig om het midden van de detectie te bepalen. Zonder deze correctiefactor kan het zijn dat het cijfer op de verkeerde plaats gezet wordt. L = F x + T x 2 I x4,metl [0,3] (4.2) Het algoritme kan vroegtijdig worden afgebroken als het vier cijfers heeft gevonden. Er wordt dan gecontroleerd of er op elke plaats wel een getal is ingevuld. Als dit het geval is worden het uur en de minuten naar het Time object weggeschreven. Als er een getal niet gevonden werd, dan zal er automatisch gewerkt worden met 00:00. 4.4.2 Persoonsdetectie In het configuratiegedeelte kon de gebruiker de zone nabij de beveiligingsdeur selecteren. In deze zone wordt gezocht naar personen die vervolgens worden geclassificeerd als bezoeker of als personeelslid. In het Frame object wordt de opgegeven rechthoek uitgesneden uit de afbeelding. Met behulp een HOG detector wordt er gezocht naar personen. Aangezien het persoonmodel van HOG achtergrond bevat, moeten de detecties nog een beetje verkleind worden. Deze verkleinde

26 4 Beeldverwerking (a) Origineel (b) Schaal 1/2 (c) Schaal 2 (d) Schaal 1/4 Figuur 4.8: Geschaalde templates detecties worden dan in het Frame object bijgehouden en kunnen ten allen tijde opgevraagd worden. In figuur 4.9 is een initiële detectie te zien op het moment dat de deur geopend wordt. Figuur 4.9: Gedetecteerde personen wanneer de deur geopend wordt In paragraaf 4.5 wordt er nog verder ingegaan op persoonsdetectie, maar dan in combinatie met het tracken van personen. De gevonden detecties worden vervolgens onderworpen aan een controle, waarbij een kleurenhistogram bepaalt welke rol (personeel of bezoeker) iedere detectie heeft. 4.4.3 Histogrammen Zoals als te lezen was in paragraaf 4.2, werd er in het begin van het programma een template ingelezen van een personeelslid. Deze template wordt vergeleken met elke persoon die zich in de nabijheid van de deur bevindt.

4 Beeldverwerking 27 Van de template of detectie wordt het kleurdomein aangepast van RGB naar HSV. In het HSV domein zit namelijk de kleur zelf maar op 1 kanaal, namelijk H. Hierdoor kunnen we met één histogram werken in plaats van drie. Van de afbeelding wordt alleen maar met het bovenste gedeelte gewerkt: we controleren namelijk op de kleur van een trui. Het onderste gedeelte maakt niet uit en zou het algoritme alleen maar moeilijker maken. Vervolgens wordt het histogram voorbereid. Er wordt gewerkt met een array van 180x1. De 180 slaagt op de range van het H-domein dat in OpenCV gebruikt wordt. De array heeft geen tweede dimensie omdat er geen rekening gehouden wordt met de saturatie of de intensiteit van de kleur. Dit omdat de lichtinval soms anders kan zijn, wat dan een negatief effect heeft bij het vergelijken van twee histogrammen. (a) 96x96 pixels (b) 74x74 pixels (c) 74x73 pixels Figuur 4.10: Histogrammen van bovenlichamen personen In figuur 4.10 zijn een aantal histogrammen te zien waarmee gewerkt wordt in het programma. Hier is al een duidelijk verschil te zien tussen een bezoeker en een personeelslid. Er is echter nog één probleem: de gebruikte afbeeldingen zijn niet even groot. Gezien de patches niet even groot zijn, maken we een oneerlijke vergelijking. Grotere patches hebben meer pixels, en zodoende de som van meer pixels opnemen in het resulterende histogram. Om dit tegen te gaan worden de histogrammen genormaliseerd zodat alle waarden van het histogram gelegen zijn tussen 0 en 1. Het bepalen van histogramwaarde gebeurt volgens formule 4.3. Hierbij is V n,i de genormaliseerde waarde, V i het aantal pixels met een bepaalde waarde en V max het aantal van de histogramwaarde die het meeste voorkomt. Het resultaat hiervan is te zien in figuur 4.11. V n,i = V i V max meti [0,179] (4.3)

28 4 Beeldverwerking (a) 96x96 pixels (b) 74x74 pixels (c) 74x73 pixels Figuur 4.11: Genormaliseerde histogrammen van bovenlichamen personen Het vergelijken van histogrammen kan op verschillende manieren gebeuren. Dit kan gedaan worden volgens een aantal methodes zoals de correlatiemethode, de chi-kwadraatmethode of de Bhattacharyya-methode. We hebben ervoor gekozen om volgens de correlatiemethode te werken, aangezien we hier al wat voorkennis over hebben. Met behulp van formule 4.4 kan de correlatiecoëfficiënt berekend worden. ρ(x,y ) = E[(X E(X))(Y E(Y ))] σ(x).σ(y ) (4.4) Hierbij is de teller gelijk aan de covariantie van X en Y. De noemer is het product van de twee standaardafwijkingen. De uitkomst van deze deling geeft ons een getal tussen -1 en 1. De output van de OpenCV functie geeft een getal weer tussen 0 en 1. Hierbij wordt er dus enkel gekeken naar de absolute waarde van het getal. Hoe dichter dit getal bij 1 ligt, des te beter de twee histogrammen op elkaar lijken. Met de bekomen correlatiewaarde kunnen we nu gaan beslissen of de gedetecteerde persoon een personeelslid of een bezoeker is. Dit doen we door deze waarde te vergelijken met een threshold-waarde. Als de waarde boven deze threshold ligt, dan is de persoon een personeelslid. Bij een waarde kleiner dan de threshold, kunnen we besluiten dat het gaat om een bezoeker. Elke persoon heeft nu een rol toegewezen gekregen. Om aan backtracking te kunnen doen, moet er een tracker geïnitialiseerd worden zodat de personen kunnen gevolgd worden doorheen verschillende frames.

4 Beeldverwerking 29 4.5 Backtracking De tracker werd in de eventtrigger fase al geïnitialiseerd op de posities waar personen zijn gedetecteerd. Op basis van deze detecties zal er aan backtracking gedaan worden. De personen zullen gevolgd worden tot dat ze in ofwel de beveiligde zone ofwel de onbeveiligde zone komen. Aangezien er altijd iets kan mislopen, zoals bijvoorbeeld een opeenvolging van voorspellingen die verkeerd zijn, is er een fail-safe mechanisme ingebouwd. Indien de tracker geen van deze zones bereikt op het einde van de video, zal er automatisch vanuit gegaan worden dat de persoon in kwestie uit de onbeveiligde zone komt. Het tracken van personen begint steeds met het terug zoeken van de persoon op het volgende frame, in ons geval het vorige frame aangezien we aan het backtracken zijn. Er wordt telkens maar op een deel van het frame gezocht. Het heeft namelijk geen zin om helemaal aan de andere kant van het frame naar dezelfde persoon te zoeken. De keuze voor de breedte van de detectiezone hangt samen met de zone die door de gebruiker aangeduid werd als de zone rond de beveiligingsdeur. De hoogte van de detectiezone heeft ook deels te maken met de zone rond de beveiligingsdeur: de bovengrens is namelijk de x-coördinaat van de linkerbovenhoek van de zone rond de beveiligingsdeur. De ondergrens van de detectiezone is standaard de onderkant van het frame, omdat de camera bijna recht naar de beveiligingsdeur kijkt. Van zodra een persoon zich van deze deur verwijdert, zal de detectierechthoek van deze persoon groter worden naar mate deze dichter bij de camera komt. In deze detectiezone wordt dus terug gezocht naar deze persoon. Hierbij zijn drie resultaten mogelijk, waarbij elk resultaat een andere aanpak vereist. 1. Er is geen enkele detectie 2. Er is één detectie 3. Er zijn meerdere detecties In het eerste geval waarbij er geen detectie is gebeurd, is de oplossing simpel. Er wordt aan de tracker gevraagd om een voorspelling te doen waar de persoon zich zou moeten bevinden. In het tweede geval is er één persoonsdetectie. Nu moet de vraag gesteld worden: is dit wel een correcte detectie? Daarom wordt de analytische afstand bepaald tussen de huidige detectie en de voorgaande detectie. Indien deze afstand kleiner is dan een voorgedefinieerde waarde, dan kunnen we er vanuitgaan dat de detectie weldegelijk de detectie is die we zoeken. In dit geval wordt de tracker geüpdatet met de gevonden waarde. In het andere geval wordt er aan de tracker gevraagd om een voorspelling te doen.

30 4 Beeldverwerking In het derde en laatste geval zijn er meerdere detecties gebeurd. De oorzaak hiervan kan zijn dat e e n of meerdere detecties een false positive zijn, maar het kunnen evengoed 2 personen zijn die vlak bij elkaar staan. Ook hier wordt de analytische afstand bepaald tussen de vorige detectie en alle detecties op het huidige frame. Na deze berekening wordt er enkel nog rekening gehouden met de detectie die de kleinste afstand heeft en wordt deze afstand terug onderworpen aan een thresholdwaarde. Naargelang het resultaat doet de tracker een voorspelling of wordt de tracker geu pdatet. Van zodra de tracker zijn werk heeft gedaan bij het huidige frame, wordt er gecontroleerd of dit punt in de beveiligde of onbeveiligde zone ligt. Van zodra dit gebeurt, wordt de tracker stopgezet en kan de locatie bepaald worden waarvan de persoon komt. De backtracking fase loopt teneinde van zodra alle personen in een zone zijn aangekomen of wanneer het startframe is bereikt. Wanneer een persoon niet in een zone is aangekomen, wordt er vanuitgegaan dat de persoon uit de onbeveiligde zone komt zoals in het begin van dit paragraaf werd vermeld. Om dit alles te visualiseren worden alle detectiepunten en, indien nodig, de voorspellingen van elke persoon bijgehouden en worden deze op een afbeelding aan de gebruiker getoond, zoals te zien is in figuur 4.12. Hier werden in het begin twee personen gedetecteerd (zie figuur 4.9). Ee n persoon is al uit beeld verdwenen via de beveiligde zone. De andere persoon wordt nog steeds gevolgd. Figuur 4.12: Het volgen van personen