4.3.2 Feature matching... 26

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "4.3.2 Feature matching... 26"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ Τομέας Τηλεπικοινωνιών και Τεχνολογίας της Πληροφορίας Εργαστήριο Ενσύρματης Τηλεπικοινωνίας Διπλωματική Εργασία της φοιτήτριας του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Μαγδαληνής Παπαϊωάννου του Ιωάννη Με αριθμό μητρώου: 7359 Θέμα Δημιουργία Χάρτη Βάθους Σκηνής σε Υπολογιστικά Συστήματα Παράλληλης Επεξεργασίας Επιβλέπων Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Αριθμός Διπλωματικής Εργασίας: Πάτρα, Μάρτιος 2015

2 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η διπλωματική εργασία με θέμα Δημιουργία Χάρτη Βάθους Σκηνής σε Υπολογιστικά Συστήματα Παράλληλης Επεξεργασίας Της φοιτήτριας του τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Μαγδαληνής Παπαϊωάννου Με αριθμό μητρώου: 7359 Παρουσιάστηκε δημόσια και εξετάστηκε στο τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις 2/3/2015 Ο Επιβλέπων Ο Διευθυντής Τομέα Ευάγγελος Δερματάς Αναπληρωτής Καθηγητής Νικόλαος Φακωτάκης Καθηγητής

3 Αριθμός Διπλωματικής Εργασίας: Θέμα: Δημιουργία Χάρτη Βάθους Σκηνής σε Υπολογιστικά Συστήματα Παράλληλης Επεξεργασίας Φοιτήτρια: Μαγδαληνή Παπαϊωάννου Επιβλέπων: Ευάγγελος Δερματάς

4 Περίληψη Σκοπός της παρούσας εργασίας ήταν η μελέτη της μεθόδου κατασκευής του χάρτη βάθους μιας σκηνής από δύο εικόνες της, οι οποίες προσομοιάζουν την ανθρώπινη διοφθαλμική όραση. Η μέθοδος αναλύθηκε στους βασικούς της αλγορίθμους, και εξετάστηκε κατά πόσο και με ποιόν τρόπο θα μπορούσαν αυτοί να παραλληλοποιηθούν. Το OpenCL framework και η OpenCV βιβλιοθήκη μελετήθηκαν, και βρέθηκαν κατάλληλες και ικανές για την παραλληλοποίηση ενός αλγορίθμου υπολογιστικής όρασης. Με χρήση των παραπάνω υλοποιήθηκαν ενδεικτικά κάποιοι αλγόριθμοι και υπολογίστηκε το σχετικό βάθος των χαρακτηριστικών σημείων των εικόνων. Τέλος έγινε αξιολόγηση των αλγορίθμων ως προς την ταχύτητα και την ποιότητα των αποτελεσμάτων.

5 Περιεχόμενα I Η θεωρία 4 1 Εισαγωγή Αντιγράφοντας τη φύση Η βασική αρχή: triangulation Τα βήματα της διαδικασίας Ο απαραίτητος εξοπλισμός 12 3 Προσαρμογή του χρώματος (Color mapping) 14 4 Αντιστοίχιση των χαρακτηριστικών σημείων των εικόνων Epipolar ευθείες Ευθυγράμμιση των epipolar ευθειών Κριτήρια αντιστοίχισης Αντιστοίχιση εικονοστοιχείου προς εικονοστοιχείο Feature matching Παρεμβολή δεδομένων (Data interpolation) Inverse distance weighted methods Rectangle based blending methods Triangle based blending methods Finite element based methods Foley s methods Global basis function type methods Αλγόριθμοι βελτιστοποίησης Ελαχιστοποίηση της ενέργειας μέσω Markov random fields Aggregation via iterative weight adapting Άλλες τεχνικές Ανάκτηση του βάθους 41 8 Κατασκευή του depth map 44 1

6 9 Εφαρμογές 47 II Οι βιβλιοθήκες 48 1 Εισαγωγή 49 2 OpenCL Με λίγα λόγια Το σύστημα μνήμης Ιστορική αναδρομή OpenCL OpenCL OpenCL OpenCL CodeXL debugger & profiler Το στήσιμο ενός OpenCL συστήματος 54 4 C++ αρχείο: Ο κώδικας που τρέχει στον host Βιβλιοθήκες Setup Εκτέλεση του κυρίως κώδικα του προγράμματος και των πυρήνων Cleanup C αρχείο: Οι πυρήνες της OpenCL Τι είναι ο πυρήνας Ο ορισμός του πυρήνα Η προσδιοριστική λέξη kernel Τα ορίσματα του πυρήνα Το σώμα του πυρήνα OpenCV Η δομή της OpenCV Βασικά τεχνικά χαρακτηριστικά Νamespace Αυτόματη διαχείριση μνήμης Αριθμητική κορεσμού Διαχείριση συγκεκριμένων τύπων δεδομένων Διαχείριση λαθών (errors) Re-enterability Το OCL τμήμα της OpenCV

7 III Η υλοποίηση 69 1 Color mapping των εικόνων εισόδου 70 2 Εύρεση και αντιστοίχιση των χαρακτηριστικών σημείων των εικόνων Μέθοδος Εντοπισμός χαρακτηριστικών σημείων Εξαγωγή πληροφορίας γύρω από τα χαρακτηριστικά σημεία Αντιστοίχιση των χαρακτηριστικών σημείων Μέθοδος Εντοπισμός χαρακτηριστικών σημείων και εξαγωγή πληροφορίας γύρω από αυτά Αντιστοίχιση των χαρακτηριστικών σημείων Μέθοδος Μέθοδος Μέθοδος Εντοπισμός χαρακτηριστικών σημείων και εξαγωγή πληροφορίας γύρω από αυτά Αντιστοίχιση των χαρακτηριστικών σημείων Δημιουργία χάρτη βάθους 82 4 Αποτελέσματα και συμπεράσματα Histogram matching Αντιστοίχιση σημείων και εύρεση βάθους

8 Μέρος I Η θεωρία 4

9 Κεφάλαιο 1 Εισαγωγή Η κατασκευή του χάρτη βάθους δύο εικόνων είναι μία μέθοδος τρισδιάστατης ανακατασκευής. Στον τομέα της υπολογιστικής όρασης και των γραφικών, ως τρισδιάστατη ανακατασκευή, ή 3d reconstruction, αναφέρεται η διαδικασία αναπαράστασης του σχήματος και της μορφής πραγματικών αντικειμένων ή σκηνών μέσω ενός τρισδιάστατου μοντέλου. [19] Αν το μοντέλο που προκύπτει απ την ανακατασκευή έχει τη δυνατότητα να μεταβάλλει το σχήμα του στο χρόνο, η μέθοδος ονομάζεται non-rigid ή spatio-temporal reconstruction. Η τρισδιάστατη ανακατασκευή μπορεί να υλοποιηθεί με ενεργητικές ή παθητικές μεθόδους. Οι ενεργητικές μέθοδοι αλληλεπιδρούν με το προς ανακατασκευή αντικείμενο. Ενα απλό παράδειγμα μιας τέτοιας, μηχανικής μεθόδου θα ήταν η τοποθέτηση του αντικειμένου σε μια περιστρεφόμενη βάση ακριβείας και η χρήση ενός μέτρου για την αποτύπωση της κάθε διάστασής του. [22] Η διαφορά των παθητικών μεθόδων είναι πως δεν αλληλεπιδρούν με το προς ανακατασκευή αντικείμενο. Χρησιμοποιούν μόνο έναν αισθητήρα, ο οποίος μετρά την ηλεκτρομαγνητική ακτινοβολία που εκπέμπει ή αντανακλά η επιφάνεια του αντικειμένου. Τις περισσότερες φορές αυτός ο αισθητήρας είναι μια συνηθισμένη κάμερα, ή καλύτερα δύο (στην περίπτωση του χάρτη βάθους) ή περισσότερες (στην περίπτωση πλήρους τρισδιάστατου μοντέλου) συγχρονισμένες, συνηθισμένες κάμερες. Το σύνολο δεδομένων που εισάγεται στο σύστημα α- ποτελείται από εικόνες ή βίντεο, τραβηγμένα από διαφορετικές οπτικές γωνίες. [20] Η ανακατασκευή τρισδιάστατων μοντέλων με βάση πραγματικά πλάνα αποκτά στις μέρες μας όλο και περισσότερες εφαρμογές, από τη χρήση σε γραφικά ταινιών και video games ή σε εφαρμογές εικονικής πραγματικότητας, μέχρι την κατασκευή βιολογικών μοντέλων, ακόμα και ανθρωπίνων μελών. 5

10 Σχήμα 1.1: Παράδειγμα εξοπλισμού ενεργητικής μεθόδου ανακατασκευής Σχήμα 1.2: Παράδειγμα εξοπλισμού παθητικής μεθόδου ανακατασκευής Η σύγχρονη τάση για την εφαρμογή τους στις τηλεπικοινωνίες, όπως στην τηλεδιάσκεψη, και γενικότερα στην καθημερινή ζωή, καθιστά τη χρήση ειδικού εξοπλισμού ακριβή και δυσλειτουργική, σε αντίθεση με τις κοινές κάμερες που είναι ευρέως διαδεδομένες. Γι αυτό οι παθητικές μέθοδοι, που βασίζονται στη χρήση απλών καμερών, φαίνεται να επικρατούν των ενεργητικών, και είναι 6

11 εκείνες που θα αναλύσω εγώ στη μελέτη μου. Και στις δύο περιπτώσεις πάντως, η έξοδος του συστήματος είναι ένα μοντέλο τριών διαστάσεων. Οταν πρόκειται για έναν χάρτη βάθους, η τρίτη διάσταση υποκαθίσταται από μία χρωματική κλίμακα. 1.1 Αντιγράφοντας τη φύση Ολοι το παρατηρήσαμε όταν ήμασταν ακόμη παιδιά, παίξαμε κι αναρωτηθήκαμε μ αυτό: Αν κλείσουμε το ένα μάτι και στη συνέχεια το άλλο, τα αντικείμενα του χώρου φαίνεται ν αλλάζουν θέση. Γιατί; Μα γιατί τα μάτια μας βρίσκονται σε κάποια απόσταση μεταξύ τους! Οι εικόνες που προσλαμβάνουν λοιπόν κάθε στιγμή δεν είναι ακριβώς ίδιες. Τις διακρίνει μια μικρή διαφορά προοπτικής. Παρακάτω εικονίζεται μια μεγάλου μεγέθους προτομή του Wagner. Η α- ριστερή εικόνα δείχνει πως φαίνεται η προτομή απ το αριστερό μας μάτι και η δεξιά απ το δεξί. Η διαφορά προοπτικής δεν είναι έντονη, αλλά είναι ξεκάθαρα αισθητή. [45] Σχήμα 1.3: Διαφορά προοπτικής Αυτή η διαφορά δε γίνεται αντιληπτή όταν έχουμε και τα δυο μας μάτια ανοιχτά. Ο εγκέφαλος τη μετατρέπει στην αίσθηση του βάθους. Πάνω σ αυτό βασίζεται ο άνθρωπος στην προσπάθειά του να δημιουργήσει μια τρισδιάστατη αναπαράσταση του χώρου έχοντας στη διάθεσή του δισδιάστατη πληροφορία από συμβατικές κάμερες. 7

12 1.2 Η βασική αρχή: triangulation Οι περισσότεροι αλγόριθμοι που χρησιμοποιούνται σήμερα εξάγουν πληροφορία από ένα ζευγάρι φωτογραφιών, τραβηγμένο ταυτόχρονα από φωτογραφικές μηχανές με σταθερή διαφορά προοπτικής, το οποίο προσομοιώνει την προσλαμβάνουσα του διοφθαλμικού οπτικού συστήματος του ανθρώπου. Ο κάθε αλγόριθμος αντιστοιχεί τα σημεία της μίας εικόνας στα σημεία της άλλης. Εχοντας αυτή την πληροφορία, μπορούμε να καταλάβουμε πόσο αλλάζει η θέση του κάθε σημείου στην εικόνα, εξ αιτίας της διαφορετικής θέσης των μηχανών. Οπως είναι αναμενόμενο, όσο πιο μακριά βρίσκεται ένα αντικείμενο, τόσο λιγότερο θα φαίνεται να έχει μετακινηθεί μεταξύ των δύο λήψεων, λόγω διαφορετικής προοπτικής. [4] Σχήμα 1.4: Διαφορά προοπτικής, ανάλογα με την απόσταση Με χρήση απλών αρχών της Ευκλείδιας γεωμετρίας, μπορούμε να υπολογίσουμε ακριβώς πόσο μακριά από τη φωτογραφική μηχανή βρίσκεται το κάθε σημείο, αν γνωρίζουμε τη μεταβολή της θέσης του στις δύο εικόνες και τη σχετική θέση του συστήματος των μηχανών. Πιο συγκεκριμένα, η μέθοδος αυτή ονομάζεται triangulation (τριγωνοποίηση) ή αλλιώς back projection και αφορά στον προσδιορισμό της θέσης ενός σημείου στο χώρο με δεδομένη την προβολή του πάνω σε δύο ή περισσότερες εικόνες. [37] Η μέθοδος της τριγωνοποίησης εκμεταλλεύεται το γεγονός πως κάθε σημείο στο χώρο θα αντιστοιχεί σε ένα μοναδικό ζευγάρι σημείων στις δύο εικόνες. [57] Εξ ορισμού οι συντεταγμένες των δύο αυτών σημείων είναι διαφορετικές. Αν θεωρήσουμε ζευγάρι πανομοιότυπων μηχανών, τοποθετημένων με παράλληλους οπτικούς άξονες και σε απόσταση d, προκύπτει το σύστημα του σχήματος 1.6, όπου P το παρατηρούμενο σημείο, και P R, P L τα αντίστοιχα σημεία στις δύο εικόνες. Σε συστήματα αυτής της διάταξης, τα αντίστοιχα σημεία βρίσκονται πάντα στο ίδιο ύψος της εικόνας. Άρα έχουν κοινή τεταγμένη και διαφορετική τετμημένη. Η διαφορά των τετμημένων d = x L x R ονομάζεται disparity. Θεωρώντας το disparity όλων των σημείων της εικόνας γνωστό, όπως ε- πίσης την απόσταση των δύο μηχανών b και την εστιακή τους απόσταση f, 8

13 Σχήμα 1.5: Κάθε σημείο στο χώρο αντιστοιχεί σε ένα μοναδικό ζευγάρι σημείων στις δύο εικόνες. Σχήμα 1.6: Εύρεση των συντεταγμένων του σημείου στο χώρο οι συντεταγμένες του παρατηρούμενου σημείου στο χώρο μπορούν εύκολα να 9

14 βρεθούν βάσει των τύπων: [9] X = b x L x L x R Y = b y L x L x R Z = b f x L x R 1.3 Τα βήματα της διαδικασίας Για την ανακατασκευή του χάρτη βάθους, θα πρέπει κατ αρχήν να έχουμε στη διάθεσή μας τον απαραίτητο εξοπλισμό, ώστε να συλλέξουμε με επιτυχία το σύνολο των δεδομένων που θα υποστεί επεξεργασία. Ο εξοπλισμός αυτός, όπως αναφέρθηκε και προηγουμένως, δεν είναι κάτι παραπάνω από δύο όμοιες κάμερες, κατάλληλα τοποθετημένες. Στη συνέχεια πρέπει να υπολογίσουμε το βάθος. Αυτό είναι το πιο απαιτητικό σημείο του προβλήματος, αφού το βάθος είναι η πληροφορία που χάνεται κατά την απεικόνιση του τρισδιάστατου χώρου σε δισδιάστατη εικόνα. Το κλειδί εδώ είναι να μπορέσουμε να ορίσουμε τα αντίστοιχα σημεία στις δύο εικόνες, έτσι ώστε να εφαρμόσουμε σε κάθε ζευγάρι τριγωνοποίηση για να καθορίσουμε την απόστασή του απ τις κάμερες, στο χώρο. Ο υπολογισμός του βάθους μπορεί να εκτελεστεί σε έξι βήματα. Το πρώτο βήμα είναι να ρυθμίσουμε τις δύο κάμερες με τον ίδιο ακριβώς τρόπο, έτσι ώστε οι εικόνες που θα προκύψουν να έχουν ακριβώς τις ίδιες χρωματικές ιδιότητες. Αν δεν μπορούμε να το πετύχουμε αυτό, ή αν θέλουμε ακόμη μεγαλύτερη ομοιότητα στις εικόνες μας, θα πρέπει να κάνουμε color mapping, δηλαδή να αντιστοιχίσουμε τα χρώματα της μίας εικόνας στα χρώματα της άλλης. Στην προσπάθειά μας να αντιστοιχίσουμε τα σημεία των δύο εικόνων, θα μας διευκόλυνε πολύ να ξέρουμε σε ποια περιοχή της εικόνας περίπου θα πρέπει να ψάξουμε για την κάθε αντιστοίχιση. Αν οι δύο κάμερες έχουν τοποθετηθεί με παράλληλους άξονες, τα αντίστοιχα σημεία θα βρίσκονται στο ίδιο ύψος. Αν όχι, θα πρέπει οι εικόνες να υποστούν τους κατάλληλους μετασχηματισμούς (στρεβλώσεις) ώστε τα αντίστοιχα σημεία να βρεθούν τεχνητά στο ίδιο ύψος. Το επόμενο βήμα είναι η αντιστοίχιση των σημείων αυτή καθ εαυτή. Αυτό είναι ίσως το πιο απαιτητικό κομμάτι της όλης διαδικασίας και υπάρχουν πάρα πολλοί και πολύ διαφορετικοί τρόποι για να επιτευχθεί. Οι αλγόριθμοι που έχουν αναπτυχθεί για το σκοπό αυτό μπορούν να διαχωριστούν σε δύο κατηγορίες. Τους αλγορίθμους που αντιστοιχίζουν εικονοστοιχείο προς εικονοστοιχείο και τους αλγορίθμους που αντιστοιχίζουν συγκεκριμένα χαρακτηριστικά σημεία των δύο εικόνων. Στη συνέχεια, μπορούμε 10

15 προαιρετικά να εφαρμόσουμε αλγορίθμους οι οποίοι βελτιστοποιούν τις αντιστοιχίσεις, είτε επαναληπτικά είτε συμπεριλαμβάνοντας περισσότερα κριτήρια καταλληλότητας για κάθε αντιστοίχιση. Εφόσον η δεύτερη κατηγορία αλγορίθμων αντιστοιχίας δεν αντιστοιχίζει όλα τα εικονοστοιχεία αλλά μόνο κάποια απ αυτά, παραμένει άγνωστη η μετατόπιση μεγάλου μέρους των σημείων της εικόνας. Αν λοιπόν χρησιμοποιηθεί κάποιος τέτοιος αλγόριθμος, θα πρέπει στη συνέχεια να εκτελεστεί μια επί πλέον διαδικασία, που σκοπό έχει να «μαντέψει» το disparity των εικονοστοιχείων που δεν έχουν αντιστοιχηθεί. Η διαδικασία ονομάζεται παρεμβολή δεδομένων. Τέλος εφαρμόζουμε τριγωνοποίηση την τεχνική που αναφέρθηκε παραπάνω, για να βρούμε τη θέση του κάθε σημείου στο χώρο. Τα αποτελέσματα της τριγωνοποίησης χρησιμοποιούνται αυτούσια για τη δημιουργία του depth map της εικόνας. [21] [46] 11

16 Κεφάλαιο 2 Ο απαραίτητος εξοπλισμός Δύο πανομοιότυπες κάμερες, με γνωστά χαρακτηριστικά, τοποθετούνται σε γνωστή και σταθερή απόσταση μεταξύ τους. Οι οπτικοί τους άξονες είναι επιθυμητό να είναι παράλληλοι. Τίθεται εδώ ένα σημαντικό ερώτημα: Σε ποια απόσταση (baseline) θα ήταν καλύτερο να τοποθετηθούν οι κάμερες Η απάντηση είναι σχεδόν αδύνατο να δοθεί, και πόσο μάλλον ως γενική αρχή για κάθε είδους εφαρμογή. Η βέλτιστη baseline είναι δύσκολο να βρεθεί. Μεγάλη baseline ισοδυναμεί με μεγάλο disparity, κάτι που δυσχεραίνει το πρόβλημα της αναζήτησης. Μικρή baseline αντίθετα δίνει τόσο μικρό disparity που μπορεί να καταλήξει σε λανθασμένα συμπεράσματα για το βάθος. Πρέπει να βρεθεί η χρυσή τομή. Για την ταυτόχρονη ενεργοποίηση του κλείστρου των δύο ανεξάρτητων ψηφιακών μηχανών έχει αναπτυχθεί open source λογισμικό, το οποίο υλοποιεί ένα master slave σύστημα μεταξύ τους. Σχήμα 2.1: Η στέρεο-κάμερα της Kodak Για την απλοποίηση της όλης διαδικασίας έχουν κατασκευαστεί εξειδικευ- 12

17 μένες κάμερες, οι «στέρεο κάμερες», οι οποίες περιλαμβάνουν δύο ξεχωριστούς, ανεξάρτητους φακούς. Η απόσταση μεταξύ των φακών λέγεται «stereo base» και όσο μεγαλώνει, τόσο εντονότερο είναι το τρισδιάστατο εφέ που προσδίδει. Παρ όλ αυτά, συνήθως είναι 6,35cm, ίση δηλαδή με την απόσταση των ματιών του ανθρώπου. [36] Κατασκευάζονται επίσης στέρεο κάμερες για τη λήψη βίντεο αντί μεμονωμένων φωτογραφιών. Αυτές αναφέρονται συχνά ως 3d camcorders. [18] Σχήμα 2.2: Panasonic 3D camcorder Στέρεο κάμερες προσαρτούνται επίσης πολλές φορές σε καντράν αυτοκινήτων, για την υλοποίηση συστημάτων αυτόματης πλοήγησης. Οι εικόνες που λαμβάνουν οι κάμερες αποθηκεύονται σε png φορμάτ, ούτως ώστε να αποφεύγεται η απώλεια πληροφορίας. 13

18 Κεφάλαιο 3 Προσαρμογή του χρώματος (Color mapping) Ενα σύστημα στερεοσκοπικής όρασης χαρακτηρίζεται από καθορισμένη γεωμετρία και δύο πανομοιότυπες κάμερες. Δεδομένων των παραπάνω, η απόχρωση των αντίστοιχων σημείων στο κάθε ζευγάρι εικόνων θεωρείται συνήθως ίδια, και πάνω σ αυτή τη θεώρηση, που ονομάζεται CIB (Constant Image Brightness) στηρίζονται οι περισσότερες εργασίες σχετικά με τη στερεοσκοπική όραση. Η CIB θεώρηση όμως αποδεικνύεται λανθασμένη βάσει των [55] [66] [65], κάτι που έχει μεγάλο αντίκτυπο στην ανάκτηση του βάθους απ τα στέρεο ζευγάρια, αφού οι αλγόριθμοι που αντιστοιχίζουν τα σημεία στις εικόνες είναι συνήθως πολύ ευαίσθητοι σε τέτοιου είδους διαφορές. Γι αυτό και κρίνεται απαραίτητη η διόρθωση της διαφοράς της απόχρωσης στις εικόνες, και κατ επέκταση η τεχνητή επιβολή της CIB. Αυτή η πρακτική ονομάζεται color mapping ή color transfer και έχει ως στόχο να αντιστοιχίσει τις αποχρώσεις της πηγαίας εικόνας στις αποχρώσεις της εικόνας στόχου. Υπάρχουν δύο είδη color mapping αλγορίθμων. Οι μεν βασίζονται στις στατιστικές ιδιότητες των χρωμάτων της εικόνας, και οι δε σε κάποια δεδομένη αντιστοιχία μεταξύ των εικονοστοιχείων των εικόνων. [27] Εφόσον στην εφαρμογή που εξετάζουμε, το color mapping εκτελείται με στόχο να μπορέσουμε να βρούμε ευκολότερα την αντιστοιχία των εικονοστοιχείων, η χρήση της πρώτης κατηγορίας αλγορίθμων είναι μονόδρομος. Ο κλασικός αλγόριθμος που στηρίζεται στις στατιστικές ιδιότητες των χρωμάτων είναι ο αλγόριθμος histogram matching. Αυτός ο αλγόριθμος έχει ως στόχο να δώσει στη συνάρτηση αθροιστικής πυκνότητας πιθανότητας της πηγαίας εικόνας την ίδια μορφή με τη συνάρτηση αθροιστικής πυκνότητας πιθανότητας της εικόνας στόχου. [31] Αν και απλός, είναι ευαίσθητος σε διαφορές του περιεχομένου των δύο εικόνων, κάτι που επηρεάζει σημαντικά την υπό εξέταση εφαρμογή, αφού η λήψη 14

19 Σχήμα 3.1: Σχηματική αναπαράσταση του αλγορίθμου histogram matching των εικόνων γίνεται υπό διαφορετική οπτική γωνία, και η όλη διαδικασία εύρεσης του βάθους στηρίζεται στο disparity, δηλαδή στη μετακίνηση των αντίστοιχων εικονοστοιχείων της μίας εικόνας σχετικά με την άλλη. Υπάρχουν πιο εξελιγμένοι αλγόριθμοι που βασίζονται στις χρωματικές στατιστικές ιδιότητες των εικόνων. Αντιμετωπίζουν το παραπάνω πρόβλημα ρυθμίζοντας τη μέση τιμή και την τυπική απόκλιση του χρώματος των εικόνων στο Lab χρωματικό σύστημα.[34] Ενας τέτοιος αλγόριθμος είναι ο [58], ο οποίος φαίνεται να έχει εντυπωσιακά αποτελέσματα, ακόμα και σε εικόνες με εντελώς διαφορετικό περιεχόμενο. 15

20 Σχήμα 3.2: Παράδειγμα αποτυχημένης εφαρμογής του αλγορίθμου histogram matching 16

21 Σχήμα 3.3: Παράδειγμα επιτυχημένης εφαρμογής color mapping 17

22 Κεφάλαιο 4 Αντιστοίχιση των χαρακτηριστικών σημείων των εικόνων Εφόσον η διαφορά της απόχρωσης των εικόνων έχει διορθωθεί, δε μας μένει παρά να βρούμε σε ποιο σημείο της μίας εικόνας αντιστοιχεί το κάθε σημείο της άλλης. Αυτό είναι ίσως το κρισιμότερο κομμάτι όλης της διαδικασίας, αφού για να καθορίσουμε το disparity, και από κει να ανακτήσουμε το βάθος, θα πρέπει να είμαστε σε θέση να εκτελέσουμε σωστά τις αντιστοιχίσεις. Πρόκειται για το λεγόμενο πρόβλημα της αντιστοίχισης. 4.1 Epipolar ευθείες Κατ αρχάς τίθεται το εύλογο ερώτημα: Δεδομένου ενός σημείου στην αριστερή εικόνα, είναι απαραίτητο να ψάξουμε ολόκληρη τη δεξιά εικόνα για να βρούμε το αντίστοιχό του; Η απάντηση είναι ξεκάθαρα, όχι. Σε ποια περιοχή της εικόνας πρέπει όμως να περιορίσουμε την αναζήτησή μας; Οι φακοί των δύο φωτογραφικών μηχανών (C1, C2) και το παρατηρούμενο σημείο (Ρ) ορίζουν ένα επίπεδο, όπως φαίνεται στο σχήμα 4.1. Αυτό το επίπεδο ονομάζεται epipolar επίπεδο, και τέμνει το επίπεδο των προσλαμβανόμενων εικόνων, δημιουργώντας μια ευθεία που συνεχίζει απ τη μια εικόνα στη δεύτερη: την epipolar ευθεία. [39] Εφόσον η epipolar ευθεία περνά απ το εξεταζόμενο σημείο στη μία εικόνα (Ρ1), εξ ορισμού θα περνά και απ το αντίστοιχο σημείο στη δεύτερη εικόνα (Ρ2). Αρκεί λοιπόν να περιορίσουμε την αναζήτησή μας κατά μήκος αυτής της ευθείας. 18

23 Σχήμα 4.1: Epipolar επίπεδο και epipolar ευθεία. Μ αυτόν τον τρόπο, τα υποψήφια αντίστοιχα σημεία μειώνονται δραματικά, και η απόδοση του αλγορίθμου ανιστοίχισής μας, όποιος κι αν είναι αυτός, αυξάνει κατακόρυφα. 4.2 Ευθυγράμμιση των epipolar ευθειών Τι θα συνέβαινε αν οι οπτικοί άξονες των δύο καμερών δεν ήταν παράλληλοι μεταξύ τους; Σε αυτή την περίπτωση, συνεχίζει να υφίσταται το epipolar επίπεδο, αλλά οι epipolar ευθείες δεν είναι πλέον οριζόντιες, ούτε και αποτελεί η μία προέκταση της άλλης, όπως φαίνεται στο σχήμα 4.2. [39] Σχήμα 4.2: Μη ευθυγραμμισμένες epipolar ευθείες. 19

24 Αν όμως γνωρίζουμε τη σχετική τοποθέτηση των δύο καμερών, μπορούμε να υπολογίσουμε τη θέση των ευθειών στις δύο εικόνες και στη συνέχεια να τις μετασχηματίσουμε κατάλληλα ώστε οι epipolar ευθείες να ευθυγραμμιστούν μεταξύ τους. Η διαδικασία αυτή ονομάζεται image rectification, και επιτυγχάνεται επαναπροβάλλοντας τις εικόνες σε ένα κοινό επίπεδο, παράλληλο στην ευθεία που ενώνει τα οπτικά κέντρα των φακών. Αυτό υλοποιείται με τον υπολογισμό των δισδιάστατων μετασχηματισμών της προβολής των εικόνων, που ονομάζονται homographies. Η διαδικασία τροποποιεί την προοπτική των εικόνων με τρόπο τέτοιο ώστε οι epipolar ευθείες να ευθυγραμμίζονται. [5] [4] Το αποτέλεσμά της φαίνεται στο σχήμα 4.3. Σχήμα 4.3: Ευθυγραμμισμένες epipolar ευθείες. Οι Loop και Zhang στο [64] προτείνουν μια μέθοδο που υλοποιεί τα παραπάνω, φροντίζοντας ταυτόχρονα να ελαχιστοποιείται η παραμόρφωση των εικόνων εξ αιτίας της αλλαγής της προοπτικής. Αυτό επιτυγχάνεται αποσυνθέτοντας το συνολικό μετασχηματισμό (homography) σε τρεις διακριτούς μετασχηματισμούς. Η όλη διαδικασία ολοκληρώνεται σε τρία διακριτά στάδια. Εστω οι έχουμε στη διάθεσή μας τις πηγαίες εικόνες του σχήματος 4.4. Στο πρώτο στάδιο οι πηγαίες εικόνες υφίσταται έναν μετασχηματισμό που ονομάζεται ειδικός μετασχηματισμός προβολής (specialized projective transform). Αυτός έχει ως σκοπό να παραλληλοποιήσει τις epipolar ευθείες, προ- 20

25 Σχήμα 4.4: Πηγαίες εικόνες βάλλοντάς τες σε κοινό επίπεδο, όπως περιγράφηκε παραπάνω. Μετά το μετασχηματισμό, οι epipolar ευθείες είναι όντως παράλληλες, αλλά δεν είναι εύθυγραμμισμένες. Στο επόμενο στάδιο οι epipolar ευθείες ευθυγραμμίζονται, με την εφαρμογή του μετασχηματισμού ομοιότητας (similarity transform). Στο τρίτο και τελευταίο στάδιο, ο αλγόριθμος επιδιώκει να επιτύχει την ελάχιστη οριζόντια παραμόρφωση και για τις δύο εικόνες, εφαρμόζοντας τον μετασχηματισμό ψαλιδισμού (shearing transform). Σχήμα 4.5: Ειδικός μετασχηματισμός προβολής Θεωρώντας τις εικόνες ως πίνακες γραμμικής άλγεβρας, όλοι οι παραπάνω μετασχηματισμοί ισοδυναμούν με μετασχηματισμούς πινάκων. 21

26 Σχήμα 4.6: Μετασχηματισμός ομοιότητας Σχήμα 4.7: Μετασχηματισμός ψαλιδισμού 4.3 Κριτήρια αντιστοίχισης Πλέον, με τον έναν ή τον άλλο τρόπο, έχουμε ευθυγραμμίσει τις epipolar ευθείες και είμαστε στην ευχάριστη θέση να προσπαθήσουμε να λύσουμε το πρόβλημα της αντιστοίχισης, ξέροντας ακριβώς που να ψάξουμε για τα ομόλογα εικονοστοιχεία. Το πρόβλημα της αντιστοίχισης μπορεί να λυθεί με έναν απ τους τρόπους που ακολουθούν Αντιστοίχιση εικονοστοιχείου προς εικονοστοιχείο Η μέθοδος αυτή, όπως λέει και η επικεφαλίδα, έχει στόχο να αντιστοιχίσει με τον καλύτερο δυνατό τρόπο ΟΛΑ τα εικονοστοιχεία της μιας εικόνας στα εικονοστοιχεία της άλλης. Στην πιο απλή της μορφή, η μέθοδος ελέγχει το κόστος αντιστοίχισης του ενός εικονοστοιχείου της πρώτης εικόνας με το κάθε ένα απ τα εικονοστοιχεία 22

27 της δεύτερης εικόνας που ανήκουν στην ίδια epipolar ευθεία. Στη συνέχεια επιλέγει ως αντίστοιχο το εικονοστοιχείο για το οποίο προκύπτει το βέλτιστο κόστος. [39] Σχήμα 4.8: Ελεγχος κόστους αντιστοίχισης εικονοστοιχείου με κάθε ένα απ τα εικονοστοιχεία της epipolar ευθείας στη δεύτερη εικόνα. Πρόκειται για ένα πυκνό (dense) πρόβλημα, αφού υπολογίζει το κόστος για κάθε πιθανό εικονοστοιχείο της εικόνας στόχου. Παρόλο που αυτού του είδους οι αλγόριθμοι δε θα μπορούσαν να χαρακτηριστούν ιδιαίτερα αποδοτικοί, καταλήγουν σε ένα πυκνό πλέγμα αντιστοιχιών που δεν είναι αναγκαίο να υποστεί στη συνέχεια παρεμβολή δεδομένων. Αυτό το χαρακτηριστικό τους κάνει να συναγωνίζονται επάξια τους αλγορίθμους αντιστοίχισης χαρακτηριστικών που θα αναλύσουμε στη συνέχεια. Εκείνοι ε- πιλύουν ένα αραιό πρόβλημα, αλλά στη συνέχεια απαιτούν την παρεμβολή δεδομένων στα αποτελέσματά τους. Για την αύξηση της ακρίβειας, συνήθως ο αλγόριθμος θεωρεί ένα τετράγωνο παράθυρο συγκεκριμένου μεγέθους γύρω απ το κάθε εικονοστοιχείο στις δύο εικόνες, και υπολογίζει το κόστος αντιστοίχισης αξιοποιώντας την πληροφορία που βρίσκεται εντός αυτού του παραθύρου. [5] Πως επιλέγουμε το μέγεθος του παραθύρου; Το μέγεθος του παραθύρου αποτελεί μια κρίσιμη παράμετρο για την επιτυχία του αλγορίθμου μας. Η επιλογή του δεν είναι εύκολη υπόθεση, καθώς διαφορετικά μεγέθη έχουν διαφορετικά πλεονεκτήματα και μειονεκτήματα: Τα μικρότερα παράθυρα προσφέρουν μεγαλύτερη ακρίβεια, αλλά είναι ευάλωτα στο θόρυβο. Αντίθετα, τα μεγαλύτερα παράθυρα παρόλο που είναι ανθεκτικά στο θόρυβο, δεν είναι τόσο ακριβή, και αυξάνουν την υπολογιστική πολυπλοκότητα του αλγορίθμου. [4] Οι χάρτες βάθους για το στέρεο ζευγάρι εικόνων εισόδου της εικόνας 4.9, που προέκυψαν από τη χρήση ενός αλγορίθμου αντιστοίχισης σημείων με πλάτος παραθύρου 3 και 10 εικονοστοιχεία αντίστοιχα, φαίνονται στην εικόνα Είναι προφανές πως είμαστε υποχρεωμένοι να συμβιβαστούμε κάπου μεταξύ των δύο εκδοχών, να βρούμε τη χρυσή τομή. Συνήθως αυτό επιτυγχάνεται μετά 23

28 Σχήμα 4.9: Στέρεο-ζευγάρι εικόνων εισόδου Σχήμα 4.10: Αποτελέσματα αλγορίθμου αντιστοίχισης με πλάτος παραθύρου 3 και 10 εικονοστοιχεία. από δοκιμές, και προφανώς εξαρτάται από το είδος της εφαρμογής που θέλουμε να υλοποιήσουμε. Υπολογισμός του κόστους αντιστοίχισης Υπάρχουν διάφοροι τρόποι ορισμού του κόστους αντιστοίχισης, αλλά τις περισσότερες φορές αυτό υπολογίζεται με μια επαναληπτική διαδικασία άθροισης και βελτιστοποίησης. Οι πιο συνηθισμένοι ορισμοί του κόστους αντιστοίχισης είναι δύο: Το άθροισμα τετραγωνικών διαφορών (sum of squared differences-ssd) και η κανονικοποιημένη συσχέτιση (normalized cross correlation). [4] 24

29 Υπολογισμός του κόστους SSD Αν W L και W R το αριστερό και δεξί παράθυρο αντίστοιχα, διαστάσεων m m pixels: Σχήμα 4.11: Αριστερό και δεξί παράθυρο Ορίζεται η συνάρτηση παραθύρου: W m (x, y) = {u, v x m 2 u x + m 2, y m 2 v y + m 2 } Και το κόστος SSD, το οποίο ισούται με το τετράγωνο του αθροίσματος της μεταβολής της έντασης (Intensity, I) σε συνάρτηση με το disparity (d) για κάθε εικονοστοιχείο εντός του παραθύρου: C r (x, y, d) = (u,v) W m(x,y) [I L (u, v) I R (u d, v)] 2 Για κάθε pixel της αριστερής εικόνας, υπολογίζουμε το κόστος αντιστοίχισης για κάθε pixel στην ίδια epipolar ευθεία της δεξιάς εικόνας. Επιλέγουμε τελικά ως αντίστοιχο, το σημείο με το ελάχιστο κόστος αντιστοίχισης SSD, όπως φαίνεται στο σχήμα [39] [4] Υπολογισμός της κανονικοποιημένης συσχέτισης Η κανονικοποιημένη συσχέτιση (normalized cross correlation) υπολογίζεται με παρόμοιο τρόπο, μέσω του τύπου: i,j W [I 1(i, j) I 2 (x + i, y + j)] i,j W [I 1(i, j) 2 ] i,j W [I 2(x + i, y + j) 2 ] Για κάθε pixel της αριστερής εικόνας, υπολογίζουμε τη συσχέτιση με κάθε pixel στην ίδια epipolar ευθεία της δεξιάς εικόνας. Επιλέγουμε τελικά ως αντίστοιχο, το σημείο με τη μέγιστη συσχέτιση, όπως φαίνεται στο σχήμα [4] Εχουν επινοηθεί αρκετά ακόμη κριτήρια αντιστοίχισης, που δεν είναι όμως το ίδιο δημοφιλή. Εναν κατάλογο μπορεί να βρει κανείς στο [40]. 25

30 Σχήμα 4.12: Επιλέγεται το σημείο με το ελάχιστο κόστος SSD Feature matching Εφόσον η αντιστοίχιση όλων των εικονοστοιχείων της κάθε εικόνας ένα προς ένα είναι ένα δύσκολο υπολογιστικά πρόβλημα, αναπτύχθηκε μία μέθοδος με λιγότερες απαιτήσεις σε πόρους. Σύμφωνα με αυτή τη μέθοδο, εξάγεται από την κάθε εικόνα ένα πεπερασμένο σύνολο χαρακτηριστικών σημείων. Αυτή η διαδικασία ονομάζεται feature extraction. Αν αυτά τα χαρακτηριστικά σημεία είναι προσεκτικά επιλεγμένα, μπορεί η αντιστοίχισή τους να δώσει σχεδόν ακέραιη την πληροφορία που θα έδινε ολόκληρο το σετ δεδομένων, αλλά με πολύ μικρότερο υπολογιστικό κόστος. Πρόκειται για ένα αραιό (sparce) υπολογιστικό πρόβλημα.[30] Τι σημαίνει χαρακτηριστικό Δεν υπάρχει καθολικός ή ακριβής ορισμός για το είδος των χαρακτηριστικών, και η επιλογή τους κάθε φορά γίνεται με βάση το είδος της εφαρμογής ή το πρόβλημα προς επίλυση.[29] Απαραίτητα κριτήρια για να επιλεγεί ένα σημείο ως χαρακτηριστικό, είναι αφ ενός η δυνατότητα ανίχνευσής του από κάποιον αλγόριθμο, και αφ ετέρου η επανάληψή του σε εικόνες της ίδιας σκηνής, τραβηγμένες από διαφορετικές οπτικές γωνίες.[47] Πρέπει δηλαδή να παραμένει αμετάβλητο σε διακυμάνσεις 26

31 Σχήμα 4.13: Επιλέγεται το σημείο με τη μέγιστη συσχέτιση. Σχήμα 4.14: Αντιστοίχιση χαρακτηριστικών. της φωτεινότητας και σε γεωμετρικές μεταβολές, όπως περιστροφή, αλλαγή μεγέθους κ.α.[3] Είναι σημαντικό επίσης τα χαρακτηριστικά να είναι μοναδικά, δηλαδή να οδηγούν σε μονοσήμαντες αντιστοιχίσεις με τα ομόλογα χαρακτηριστικά των άλλων εικόνων, και τέλος να είναι σχετικά ασυνήθιστα, δηλαδή να μην απαντώνται πολύ συχνά στην εικόνα.[3] 27

32 Σχήμα 4.15: Χαρακτηριστικά αμετάβλητα ως προς την οπτική γωνία. Τα βασικά είδη χαρακτηριστικών[29] Ακμές Οι ακμές υποδηλώνουν ένα όριο μεταξύ δύο περιοχών μιας εικόνας. Το σχήμα τους είναι σε γενικές γραμμές αυθαίρετο (αν και τίθενται σ αυτό κάποιοι περιορισμοί ομαλότητας) και η δομή τους μονοδιάστατη. Ορίζονται από τα σημεία της εικόνας με την υψηλότερη βάθμωση (gradient), δηλαδή με την πιο απότομη μεταβολή απόχρωσης. Οι περισσότεροι αλγόριθμοι ανίχνευσης ακμών λειτουργούν ανιχνεύοντας τα σημεία της εικόνας με την υψηλότερη βάθμωση και ενώνοντάς τα στη συνέχεια για τη δημιουργία μιας συνεχόμενης ακμής. Γωνίες/ Σημεία ενδιαφέροντος Οι δύο όροι χρησιμοποιούνται εναλλάξ για να περιγράψουν τα ίδια «μυτερά» χαρακτηριστικά με τη δισδιάστατη δομή. Στην ουσία αποτελούν ακμές, οσοδήποτε μικρού μεγέθους, με το ιδιαίτερο χαρακτηριστικό ότι αλλάζουν κατεύθυνση εξαιρετικά απότομα. Ανιχνεύονται στα σημεία της εικόνας όπου το gradient παρουσιάζει υψηλή κυρτότητα. Εκτός απ τις γωνίες, οι αλγόριθμοι ανίχνευσης γωνιών ανιχνεύουν επίσης φωτεινά στίγματα σε σκούρο φόντο. Αυτά είναι τα λεγόμενα σημεία ενδιαφέροντος, που για ιστορικούς λόγους μπορεί να αναφέρονται επίσης ως γωνίες. Blobs (μάζες) Πρόκειται για ένα συμπληρωματικό χαρακτηριστικό, που ο- δηγεί στην ανίχνευση ολόκληρων περιοχών στην εικόνα που είναι ομοιόμορφες και δεν ανιχνεύονται από του απλούς ανιχνευτές γωνιών. Παρ όλ αυτά, κάθε blob (μάζα) χαρακτηρίζεται από κάποιο τοπικό μέγιστο ή ένα κέντρο βάρους, και άρα μπορούμε να θεωρήσουμε πως οι ανιχνευτές περιοχών βασίζονται στις ίδιες αρχές με τους ανιχνευτές γωνιών. Ridges (ραχοκοκαλιές) Μπορούν να θεωρηθούν γενικευμένοι άξονες σε 28

33 μακρόστενα αντικείμενα. Η ανίχνευσή τους είναι αλγοριθμικά δυσκολότερη απ των υπόλοιπων χαρακτηριστικών, και άρα χρησιμοποιούνται σπανιότερα, αλλά παρουσιάζουν εξαιρετικά αποτελέσματα κατά την ανίχνευση δρόμων ή ερυθρών αιμοσφαιρίων, τα οποία έχουν μακρόστενη δομή. Σχήμα 4.16: Blob - Ακμή - Γωνία Η ανίχνευση των χαρακτηριστικών feature detectors Για τη ανίχνευση των χαρακτηριστικών έχουν αναπτυχθεί διάφοροι αλγόριθμοι (detectors), οι οποίοι συνήθως ανιχνεύουν ενός ή δύο ειδών χαρακτηριστικά, όπως φαίνεται στην εικόνα 4.17.[29] Σχήμα 4.17: Δυνατότητες αλγορίθμων ανίχνευσης 29

34 Σε γενικές γραμμές οι παραπάνω αλγόριθμοι λειτουργούν με τον εξής τρόπο: Η εικόνα χωρίζεται σε παράθυρα. Μετακινώντας το παράθυρο, υπολογίζεται η μεταβολή του κάθε εικονοστοιχείου εντός του. Σχήμα 4.18: Μετακίνηση του παραθύρου. Από το σύνολο των μεταβολών, δημιουργείται για κάθε παράθυρο ένας πίνακας Η, οι ιδιοτιμές και τα ιδιοδιανύσματα του οποίου υπολογίζονται στη συνέχεια. Τα ιδιοδιανύσματα μας δείχνουν την κατεύθυνση προς την οποία, αν κινήσουμε το παράθυρο, οι μεταβολές θα είναι οι μέγιστες δυνατές, και οι α- ντίστοιχες ιδιοτιμές μας αποκαλύπτουν το μέγεθος της μεταβολής προς τις κατευθύνσεις αυτές. Με βάση τα παραπάνω μπορούμε να αποφασίσουμε αν σε κάθε παράθυρο υπάρχει κάποιο χαρακτηριστικό, και ποιο χαρακτηριστικό είναι αυτό. Αν η μεταβολή προς τη μια κατεύθυνσης είναι πολύ μεγαλύτερη απ ότι προς την άλλη, μάλλον εντοπίσαμε μια ακμή. Αν η μεταβολές είναι εξίσου μεγάλες προς κάθε κατεύθυνση, εντοπίσαμε ένα σημείο ενδιαφέροντος. Κι αν δε φαίνεται να υπάρχει ουσιαστική μεταβολή προς καμία κατεύθυνση, βρισκόμαστε εντός μιας περιοχής ενδιαφέροντος. [3] Τα αποτελέσματα των αλγορίθμων ανίχνευσής μπορούν να είναι είτε δυαδικά, δηλαδή να δηλώνουν αν υπάρχει ή όχι το συγκεκριμένο χαρακτηριστικό σε κάποιο σημείο της εικόνας, είτε να παρουσιάζονται ως μεγέθη σε μια κλίμακα βεβαιότητας για την ύπαρξη του χαρακτηριστικού. Γενικά, αν η αναπαράσταση της εικόνας ως ένα σύνολο χαρακτηριστικών πρόκειται να υποστεί περαιτέρω επεξεργασία, είναι καλή ιδέα να χρησιμοποιείται η κλίμακα βεβαιότητας. Αν χρησιμοποιηθεί αυτή η μέθοδος, η τελική εικόνα θα είναι σε γενικές γραμμές λιγότερο ευάλωτη στο θόρυβο.[28] Η αντίστοιχη μεταβολή των αποτελεσμάτων φαίνεται στο σχήμα

35 Σχήμα 4.19: Εικόνα εισόδου - Depth map - Certainty map. Πληροφορία γύρω απ τα χαρακτηριστικά - Feature descriptors Είμαστε πλέον σε θέση να ανιχνεύσουμε τα χαρακτηριστικά ενδιαφέροντος σε κάθε εικόνα. Πώς όμως μπορεί να επιτευχθεί η αξιόπιστη αντιστοίχιση των χαρακτηριστικών της μίας εικόνας με τα χαρακτηριστικά της άλλης Εδώ αναλαμβάνουν δράση οι descriptors χαρακτηριστικών. Ο descriptor περιλαμβάνει πληροφορία για την εικόνα σε μια περιοχή γύρω απ το ανιχνεύσιμο χαρακτηριστικό. Ο πιο απλός descriptor είναι ένα τετράγωνο παράθυρο. Είναι σημαντικό όμως ο descriptor, όπως και το ίδιο το χαρακτηριστικό, να είναι αμετάβλητος σε χωρικές παραμορφώσεις, όπως ολίσθηση, περιστροφή ή αλλαγή μεγέθους, έτσι ώστε η αντιστοίχιση των χαρακτηριστικών να είναι αρκετά αξιόπιστη.[3] Η πιο συνηθισμένη πρακτική υπολογισμού ενός descriptor που να ικανοποιεί τα παραπάνω είναι ο υπολογισμός πολλαπλών descriptors σε διαφορετικές κλίμακες και στη συνέχεια η άθροισή τους σε μια Gauss-ιανή πυραμίδα. Μ αυτό τον τρόπο υπολογίζεται ο MOPS descriptor (Multiscale Oriented Patches Descriptor). Σχήμα 4.20: MOPS descriptor εξαγόμενος σε πέντε επίπεδα πυραμίδας. Πιο συγκεκριμένα, ο αλγόριθμος ορίζει ένα παράθυρο εικονοστοι- 31

36 χείων περιμετρικά του χαρακτηριστικού που έχει ανιχνευθεί. Απ αυτό το παράθυρο υπολογίζει πολλαπλά 8 8 παράθυρα γύρω απ το χαρακτηριστικό, σε διαφορετικές κλίμακες. Στη συνέχεια τα περιστρέφει ώστε να γίνουν οριζόντια, και τα κανονικοποιεί αφαιρώντας τους τη μέση τιμή και διαιρώντας τα με την τυπική απόκλιση του αρχικού παραθύρου.[54] Σχήμα 4.21: Το παράθυρο του MOPS descriptor περιστρέφεται και κανονικοποιείται. Ενα πιο σύγχρονο είδος descriptor είναι ο SIFT descriptor (Scale Invariant Feature Transform). Κατά τον υπολογισμό του SIFT descriptor επιλέγουμε ένα τετραγωνικό παράθυρο γύρω απ το κάθε χαρακτηριστικό. Στη συνέχεια αυτό χωρίζεται σε ένα πλέγμα 4 4. Για κάθε κελί του 4 4 πλέγματος υπολογίζουμε το ιστόγραμμα του προσανατολισμού της βάθμωσης των εικονοστοιχείων. Το κάθε ιστόγραμμα ορίζει 8 διακριτές διευθύνσεις. Προκύπτουν λοιπόν = 128 διακριτές διευθλυνσεις, που αποτελούν το 128 διαστάσεων διάνυσμα του SIFT descriptor.[47][51] Η χρήση του SIFT descriptor κρίνεται ως η πιο αποτελεσματική μέθοδος στην εμπεριστατωμένη συγκριτική έρευνα του [63] και έχει πάνω από 4000 α- ναφορές σύμφωνα με το scholar google. Μπορεί να χειριστεί με επιτυχία μεταβολές στην οπτική γωνία και στη φωτεινότητα, είναι γρήγορος αρκετά ώστε να εκτελείται σε πραγματικό χρόνο, και υπάρχει διαθέσιμος ανοιχτός κώδικας για την υλοποίησή του.[3] Ενα αποτέλεσμα της εφαρμογής του φαίνεται στο σχήμα

37 Σχήμα 4.22: Υπολογισμός του διανύσματος του SIFT descriptor Σχήμα 4.23: Αποτελέσματα αντιστοίχισης χαρακτηριστικών, μετά τη χρήση του SIFT descriptor. Η αντιστοίχιση των χαρακτηριστικών Εφόσον με τον ένα ή τον άλλο τρόπο έχουμε στη διάθεσή μας τους descriptors, μας μένει να βρούμε τις καλύτερες αντιστοιχίες των descriptors της μιας εικόνας προς τους descriptors της δεύτερης. Οπως και στην αντιστοίχιση pixel προς pixel, ορίζουμε μια συνάρτηση α- πόστασης μεταξύ των descriptors των δύο εικόνων, και επιλέγουμε ως καταλληλότερη αντιστοιχία εκείνη που ελαχιστοποιεί την απόσταση. Η πιο απλή συνάρτηση απόστασης είναι το κόστος SSD, που χρησιμοποιήθηκε και στην αντιστοιχία εικονοστοιχείου προς εικονοστοιχείο. Το μειονέκτημά του είναι πως δεν προβλέπει κάποιο τρόπο ώστε να αποφεύγονται λανθασμένες αντιστοιχίσεις. Ενα παράδειγμα πιθανής λανθασμένης αντιστοίχισης φαίνεται στο σχήμα 4.24, όπου η αντιστοιχία δεν είναι αμφιμονοσήμαντη: ένα χαρακτηριστικό της μίας εικόνας μπορεί να αντιστοιχιστεί με περίπου το ίδιο κόστος με πολλά χαρακτηριστικά της δεύτερης εικόνας, και ο αλγόριθμος είναι δυνατό να «μπερδευτεί». Για να αποφύγουμε τέτοιου είδους αντιστοιχίσεις, μπορούμε να αξιοποι- 33

38 Σχήμα 4.24: Παράδειγμα πολυσήμαντης αντιστοιχίας. ήσουμε το λόγο των αποστάσεων για δύο διαφορετικές αντιστοιχίες. Αν ο λόγος είναι κοντά στη μονάδα σημαίνει πως η αντιστοιχία ΔΕΝ είναι αμφιμονοσήμαντη και άρα καμία απ τις δύο εναλλακτικές δεν προσφέρει μια καλή λύση. Θα πρέπει λοιπόν να επιλέγουμε αντιστοιχίες που δίνουν λόγο αποστάσεων πολύ μικρότερο της μονάδας, ένδειξη πως υπάρχει μεγάλο πλεονέκτημα της μίας σε σχέση με την άλλη, και άρα η αντιστοιχία είναι αμφιμονοσήμαντη. Σχήμα 4.25: Συγκρίνεται ο λόγος των αποστάσεων f1-f2 και f1-f2. Οπως ανέφερα και παραπάνω, αντιστοιχίες που δίνουν μικρή απόσταση θεωρούνται και επιτυχημένες. Αλλά κάποιος θα πρέπει να ορίσει πόσο μικρή ή πόσο μεγάλη θα είναι αυτή η απόσταση. Αν τα χαρακτηριστικά που θα επιλεγούν είναι κατάλληλα και η κρίσιμη τιμή απόστασης επιλεγεί σωστά, θα διαχωρίζει πλήρως τις επιτυχημένες από τις αποτυχημένες αντιστοιχίες.[3] 34

39 Κεφάλαιο 5 Παρεμβολή δεδομένων (Data interpolation) Δεδομένου ενός αραιού συνόλου σημείων, το οποίο προσδιορίστηκε μέσω της αντιστοίχισης χαρακτηριστικών, πως μπορούμε να ανακτήσπυμε τη συνολική επιφάνεια, που ορίζεται απ τις αντιστοιχίες όλων των εικονοστιχείων; Η λύση είναι μία, και λέγεται data interpolation. Data interpolation λέγεται η μέθοδος κατά την οποία ανακατασκευάζονται νέα σημεία δεδομένων, ανάμεσα στα ήδη υπάρχοντα.[32] Πιο συγκεκριμένα, scattered data interpolation είναι η διαδικασία που σκοπό έχει να ανακτήσει μια ομαλή (με συνεχείς μερικές πρώτες παραγώγους) συνάρτηση δύο ανεξαρτήτων μεταβλητών F(x,y), η τιμή της οποίας είναι δεδομένη σε συγκεκριμένα σημεία - τα σημεία που βρήκαμε παραπάνω. Τα συγκεκριμένα σημεία δε χρειάζεται να πληρούν κάποια προϋπόθεση ως προς τη διάταξή ή την πυκνότητά τους στο χώρο, και από κει προκύπτει ο όρος scattered, που σημαίνει διάσπαρτος. Η συνάρτηση F(x,y), η παρεμβάλλουσα (interpolant), αντιπροσωπεύει το disparity για κάθε ζευγάρι σημείων στην εικόνα. Υπάρχουν πολλές διαφορετικές τεχνικές που σκοπό έχουν να υλοποιήσουν τα παραπάνω. Οι τεχνικές αυτές μπορούν να χωριστούν σε δύο μεγάλες κατηγορίες. Στις global τεχνικές, στις οποίες μεταβολή σε ένα σημείο συνεπάγεται και μεταβολή στο αποτέλεσμα συνολικά, και στις local τεχνικές, στις οποίες μεταβολή ενός σημείου ισοδυναμεί σε μεταβολή του αποτελέσματος μόνο τοπικά. Οι local τεχνικές συνήθως υλοποιούνται μέσω της εφαρμογής global τεχνικών σε υποσύνολα των γνωστών σημείων, και στη συνέχεια μέσω της ανάμιξης και διασύνδεσης των αποτελεσμάτων. Η εφαρμογή κάποιας global τεχνικής σε Ν δεδομένα σημεία συνεπάγεται την επίλυση ενός συστήματος Ν εξισώσεων. Επειδή οι απαιτήσεις σε πόρους για την επίλυση τέτοιων συστημάτων αυξάνονται γεωμετρικά ως προς το Ν, κρίνεται 35

40 απαραίτητη η εφαρμογή local τεχνικών σε προβλήματα πολλών σημείων κάτι που εξ ορισμού υποβαθμίζει την πολυπλοκότητα, όπως ανέφερα παραπάνω. Οι τεχνικές μπορούν και πρέπει επίσης να ταξινομηθούν με βάση τον τρόπο με τον οποίο εκτελούν την ανακατασκευή της συνάρτησης. Οι βασικές κατηγορίες με βάση τις οποίες γίνεται αυτό είναι οι εξής:[60] 5.1 Inverse distance weighted methods Μια οικογένεια μεθόδων οι οποίες εκτελούν παρεμβολή για την οποία τα βάρη των σημείων έχουν σταθμιστεί με χρήση της συνάρτησης που δημιούργησε ο Donald Shephard, όπως αυτή περιγράφεται στο [67]: f(p ) = (D i ) C [w i(z i + z i )] (D i ) N (P ) [z i] D i N (P ) [ ] (D i ) C [w i], (d i < ɛ) D i, (d i > ɛ)forsomed i Οπου w i μια συνάρτηση βάρους, d i οποιοδήποτε σημείο που ανήκει στο σύνολο των δεδομένων σημείων D i και z i το disparity του σημείου αυτού. Στην οικογένεια ανήκει αυτούσια η μέθοδος του Shephard, και άλλες μέθοδοι οι οποίες χρησιμοποιούν συναρτήσεις που αποτελούν γενικεύσεις ή παραλλαγές της αρχικής συνάρτησης, και λειτουργούν καλύτερα υπό συνθήκες. 5.2 Rectangle based blending methods Η βασική ιδέα στην οποία στηρίζεται όλη αυτή η οικογένεια μεθόδων περιγράφεται στο [61]. Στην ουσία πρόκειται για μια local μέθοδο interpolation, στην οποία οι διακριτές περιοχές γύρω απ τα δεδομένα σημεία για τις οποίες γίνεται ο υπολογισμός της επιφάνειας και στη συνέχεια η μίξη, είναι τετράγωνες αντί για κυκλικές, όπως συνηθίζεται. Ενα απ τα βασικά πλεονεκτήματα αυτής της μεθόδου είναι πως αρκεί μικρότερος αριθμός επικαλυπτόμενων τετραγώνων απ ότι δίσκων, τα οποία αν τοποθετηθούν με τον κατάλληλο τρόπο δίνουν καλά αποτελέσματα. Η βασική συνάρτηση interpolation, που περιγράφεται στο [61] και αποτελεί τη βάση αυτής της κατηγορίας, δε δίνει ικανοποιητικά αποτελέσματα, αλλά υπάρχουν πολλές άλλες παραλλαγές που λειτουργούν με τον επιθυμητό τρόπο. 5.3 Triangle based blending methods Η interpolation συνάρτηση που χρησιμοποιείται στις μεθόδους αυτές βασίζεται επίσης στη συνάρτηση του Shephard. Η διαφορά εδώ έγκειται στο ότι οι συναρτήσεις βάρους στοχεύουν στην τριγωνοποίηση της κυρτής επιφάνειας που ορίζεται απ τα δεδομένα σημεία. 36

41 Τα βασικά σημεία της μεθόδου είναι τα εξής: Αρχικά χωρίζουμε το εξωτερικό κυρτό κέλυφος σε ημιάπειρα τετράγωνα και τρίγωνα, μέσω της κατασκευής παραλληλογράμμων σε κάθε κορυφή του κελύφους. Στη συνέχεια, βρίσκουμε την τιμή της παρεμβάλουσας σε κάθε εξωτερικό σημείο απ τις τιμές της συνάρτησης κόμβου σε ένα ή δύο κοντινότερα σημεία (ανάλογα αν χρησιμοποιούνται τετράγωνα ή τρίγωνα). 5.4 Finite element based methods Η κατηγορία των μεθόδων αυτών χρησιμοποιεί ένα σύνολο C συναρτήσεων πεπερασμένων σημείων για την τριγωνοποίηση του κυρτού κελύφους που ορίζεται απ τα δεδομένα σημεία. Αυτό απαιτεί τον υπολογισμό κάποιων παραγώγων στα σημεία αυτά. Το ποιες παράγωγοι θα είναι αυτές καθορίζεται απ το είδος της μεθόδου κάθε φορά, και όπως αποδεικνύεται, η κατάλληλη επιλογή τους παίζει καθοριστικό ρόλο στην αποτελεσματικότητα του αλγορίθμου. 5.5 Foley s methods Οι μέθοδοι του Foley, όπως περιγράφονται στα [69] και [59], βασίζονται σε διάφορες ιδέες. Η κυρίαρχη απ αυτές είναι η χρήση μιας γενικευμένου νευτωνικού τύπου συνάρτησης ως παρεμβάλλουσας. Μια άλλη ιδέα είναι η χρήση μιας παρεμβάλλουσας για τη δημιουργία ενός πλέγματος σημείων πάνω στα οποία μπορούν να κατασκευαστούν προσεγγίσεις μέσω γινομένων. 5.6 Global basis function type methods Αυτή η κατηγορία μεθόδων χαρακτηρίζεται απ την εξής κεντρική ιδέα. Για κάθε δεδομένο σημείο (x k, y k ) διαλέγουμε μία συνάρτηση G k (x, y) και τους κατάλληλους συντελεστές A k, τέτοιους ώστε η F (x, y) = Σ k A k G k (x, y) να παρεμβάλει (interpolate) τα δεδομένα. Πρόκειται ίσως για την πιο απλή και ευθεία μέθοδο υπολογισμού της παρεμβάλλουσας. Παρ όλ αυτά, κατάλληλες επιλογές για την G k (x, y) είναι δύσκολο να γίνουν. Επιπρόσθετα, η μέθοδος είναι global και άρα απαιτεί την επίλυση συστήματος πολλών εξισώσεων για κάθε πρόβλημα. 37

42 Κεφάλαιο 6 Αλγόριθμοι βελτιστοποίησης Η διαδικασία που έχει περιγραφεί μέχρι στιγμής είναι η κλασική προσέγγιση. Η κλασική προσέγγιση δίνει πολύ λεπτομερειακές εκτιμήσεις επιφανειών, και στο πλαίσιό της έχουν αναπτυχθεί πολύ γρήγοροι αλγόριθμοι. Παρουσιάζει όμως και δύο μειονεκτήματα. Κατ αρχάς, δε λειτουργεί ικανοποιητικά σε μεγάλες επιφάνειες με πολύ ο- μοιόμορφη υφή. Σε τέτοιου είδους επιφάνειες μπορεί να ανιχνεύσει λανθασμένα ανομοιομορφίες. Γενικότερα είναι επιρρεπής στο θόρυβο. Κατά δεύτερον, μπερδεύεται όταν συναντά ασυνέχειες, κοντά δηλαδή στις διαχωριστικές ακμές των επιφανειών, όπου μπορεί να υπάρχουν και επικαλύψεις μεταξύ κοντινών και μακρινών αντικειμένων.[46] Γι αυτούς τους λόγους έχουν δημιουργηθεί αλγόριθμοι που εφαρμόζονται μετά την ολοκλήρωση της κλασικής προσέγγισης ή κατά τη διάρκεια αυτής, και σκοπό έχουν να ελέγξουν και να βελτιστοποιήσουν τις αντιστοιχίσεις που έχουν οριστεί κατά την εφαρμογή της. Κάποιοι απ αυτούς τους αλγορίθμους περιγράφονται στη συνέχεια. 6.1 Ελαχιστοποίηση της ενέργειας μέσω Markov random fields Η μέθοδος αυτή εφαρμόζεται μετά το πέρας της κλασικής προσέγγισης, για να πετύχει βελτίωση των ήδη υπαρχόντων αποτελεσμάτων. Στηρίζεται στην πολύ λογική θεώρηση οτι μια επιτυχημένη στέρεο αντιστοιχία χαρακτηρίζεται από: 1. Επιτυχημένη αντιστοίχιση των πιξελ της μίας εικόνας με τα pixel της άλλης. 2. Ομαλότητα (smoothness). Δηλαδή, αν δύο pixel βρίσκονται σε κοντινές θέσεις, θα πρέπει σε γενικές γραμμές τα disparities που τους αντιστοιχούν να είναι περίπου ίσα. 38

43 Αν προσπαθήσουμε να εκφράσουμε τα παραπάνω με μαθηματικό τρόπο: 1. Το κόστος αντιστοίχισης των pixel εκφράζεται ως: matchcost = (x,y) I(x, y) J(x + d (x,y), y) 2. Το smoothness εκφράζεται ως: smoothnesscost = neighborpixels(p,q) d p d q Ο στόχος του συγκεκριμένου αλγορίθμου είναι να επιλέγει τις αντιστοιχίσεις έτσι ώστε να ελαχιστοποιείται η ενέργεια, που ισούται με το άθροισμα των δύο παραπάνω: energy = matchcost + smoothnesscost Η βελτίωση έγκειται δηλαδή στο γεγονός πως ο αλγόριθμος συνυπολογίζει στις αποφάσεις του την ομαλότητα, εκτός απ το κόστος αντιστοίχισης, και άρα μετά την εφαρμογή της προκύπτουν επιφάνειες πιο ομοιόμορφες και λείες. Αντιμετωπίζεται έτσι, με λίγα λόγια, το πρώτο μειονέκτημα της κλασικής μεθόδου που αναφέρεται παραπάνω. Η συνάρτηση ενέργειας που χρησιμοποιείται ονομάζεται MRF (Markov Random Field).[48] 6.2 Aggregation via iterative weight adapting Πρόκειται για μια μέθοδο που ενδείκνυται για τη βελτιστοποίηση αλγορίθμων αντιστοίχισης εικονοστοιχείου προς εικονοστοιχείο, και εφαρμόζεται παράλληλα μ αυτούς για την επίτευξη καλύτερων αποτελεσμάτων. Μια απλή μέθοδος αντιμετώπισης του προβλήματος κακής αντιστοίχισης των εικονοστοιχείων περιφερειακά των διαχωριστικών ακμών διαφορετικών ε- πιφανειών, είναι η αύξηση του μεγέθους του παραθύρου, όπως έχει αναφερθεί και παραπάνω. Η τεχνική αυτή αν και απλή στην κατανόηση και αποτελεσματική κατά του θορύβου, έχει άλλα μειονεκτήματα, όπως μικρή διακριτική ικανότητα και υπολογιστική πολυπλοκότητα που αυξάνεται συναρτήσει του μεγέθους του παραθύρου. Η παρούσα μέθοδος βασίζεται στο γεγονός πως οι κλασικοί αλγόριθμοι α- ντιστοίχισης εικονοστοιχείου προς εικονοστοιχείο χρησιμοποιούν συνήθως ως κριτήρια αντιστοίχισης σταθμισμένα αθροίσματα. Προσαρμόζει λοιπόν επαναληπτικά τα βάρη άθροισης που χρησιμοποιούνται σ αυτούς τους αλγορίθμους, με στόχο πιο επιτυχημένες αντιστοιχίσεις. Λόγω των επιβαλλόμενων επαναλήψεων της διαδικασίας, η μέθοδος αυξάνει την υπολογιστική πολυπλοκότητα των προβλημάτων αντιστοίχισης. Ενας καλός 39

44 τρόπος μείωσης της υπολογιστικής πολυπλοκότητας της μεθόδου είναι η μείωση του μεγέθους του παραθύρου με βάση το οποίο γίνεται η βελτιστοποίηση. Μπορούμε να αντισταθμίσουμε την απώλεια πληροφορίας λόγω του μειωμένου μεγέθους, επαναλαμβάνοντας περισσότερες φορές το στάδιο της βελτιστοποίησης. Τα αποτελέσματα μιας τέτοιου είδους μεθόδου, που περιγράφεται αναλυτικά στο [56] φαίνονται στο σχήμα 6.1. Σχήμα 6.1: Αποτελέσματα της μεθόδου Aggregation via iterative weight adapting Παρατηρούμε πως τα περιγράμματα των διάφορων αντικειμένων φαίνονται πάρα πολύ ξεκάθαρα. Η μέθοδος αποσκοπεί στην αντιμετώπιση του δευτέρου μειονεκτήματος που εντοπίσαμε στην κλασική μέθοδο. 6.3 Άλλες τεχνικές Προφανώς οι αλγόριθμοι που έχουν επινοηθεί για τη βελτίωση της απόδοσης της κλασικής μεθόδου είναι πολύ περισσότεροι. Υπάρχουν στοχαστικές και ντετερμινιστικές μέθοδοι. Υπάρχει η ιδέα του διαχωρισμού της εικόνας σε δύο πεδία: το ομοιόμορφο πεδίο και το πεδίο που περιλαμβάνει τις ασυνέχειες της εικόνας. Σ αυτή την ιδέα βασίζεται ο δημοφιλής αλγόριθμος που περιγράφεται στο [62]. Άλλες μέθοδοι στηρίζονται στην ανάπτυξη μοντέλων σε πλέγματα, κλπ. 40

45 Κεφάλαιο 7 Ανάκτηση του βάθους Εχουμε πλέον αντιστοιχίσει όλα τα σημεία της μίας εικόνας στα σημεία της δεύτερης, είτε άμεσα, υπολογίζοντας τις καλύτερες αντιστοιχίες, είτε έμμεσα, αντιστοιχίζοντας κάποια σημεία και υπολογίζοντας την παρεμβάλλουσα αυτών. Ξέρουμε λοιπόν το disparity για κάθε ζευγάρι αντίστοιχων σημείων στις δύο εικόνες. Οπως έχει αναφερθεί παραπάνω, πρόκειται για τη διαφορά της θέσης του ίδιου σημείου του χώρου στην κάθε εικόνα, όταν προβάλλεται υπό διαφορετική προοπτική σε δύο κάμερες. Δηλαδή d = x left x right Σχήμα 7.1: Left image vs Right image Με δεδομένο το disparity του κάθε σημείου του χώρου, μπορούμε να βρούμε την απόστασή του απ την κάμερα, με μία μέθοδο που, όπως επίσης αναφέρθηκε παραπάνω, ονομάζεται τριγωνοποίηση, και στηρίζεται σε βασικές αρχές της γεωμετρίας. Πιο αναλυτικά. Στο σχήμα 7.2, αν Ο το κέντρο του φακού της κάμερας, f η εστιακή απόσταση, και Β το σημείο του τρισδιάστατου αντικειμένου που προβάλλεται στο σημείο Ε, τότε, βάσει των όμοιων τριγώνων: x i f = x z 41

46 Σχήμα 7.2: Ομοια τρίγωνα για μία κάμερα Δηλαδή ο λόγος της οριζόντιας απόστασης του σημείου απ το κέντρο του φακού προς την απομάκρυνσή του ισούται με το λόγο της απόστασής του απ το κέντρο του κάδρου προς την εστιακή απόσταση. Σχήμα 7.3: Ομοια τρίγωνα για δύο κάμερες 42

47 Οταν τώρα έχουμε δύο κάμερες, τοποθετημένες παράλληλα (όπως στα περισσότερα συστήματα στερεοσκοπικής όρασης) και σε απόσταση β μεταξύ τους, όπως στο σχήμα 7.3, και πάλι βάσει των ομοίων τριγώνων: z f = x x l z f = x b x r z f = y = y y l y r Άρα σύμφωνα με τα παραπάνω, μπορούμε να βρούμε τις τρεις συντεταγμένες του κάθε σημείου στο χώρο εφαρμόζοντας τους τύπους: z = x = x l z f f b = f b x l x r d y = y l z f Οπου z η συντεταγμένη του βάθους. = b + x r z f = y r z f Παρατηρούμε ότι το βάθος είναι αντιστρόφως ανάλογο του disparity, και αυτό είναι λογικό, αφού όσο πιο μακριά βρίσκεται κάθε αντικείμενο, τόσο λιγότερο αλλάζει η προοπτική απ την οποία προβάλλεται σε δύο φακούς που είναι τοποθετημένοι σε μικρή απόσταση μεταξύ τους. [39] Για την επίλυση των παραπάνω τύπων και εύρεση των τιμών των συντεταγμένων για κάθε σημείο, εκτός απ το disparity, είναι απαραίτητο να γνωρίζουμε την εστιακή απόσταση (f) της κάθε κάμερας, καθώς και την απόσταση των δύο καμερών μεταξύ τους (b). Αυτές οι παράμετροι είναι εύκολο να καθοριστούν, αφού είμαστε συνήθως σε θέση να ορίσουμε οι ίδιοι τη διάταξη του συστήματος, ή έστω γνωρίζουμε εκ των προτέρων τη διάταξη που χρησιμοποιήθηκε για τη δημιουργία του σετ δεδομένων που χρησιμοποιούμε. 43

48 Κεφάλαιο 8 Κατασκευή του depth map Σ αυτό το σημείο είμαστε πλέον σε θέση να υπολογίσουμε τις ακριβείς συντεταγμένες για κάθε σημείο του χώρου το οποίο απεικονίζεται στην εικόνα μας. Μπορούμε λοιπόν να κατασκευάσουμε το depth map της εικόνας, αν χρωματίσουμε το κάθε εικονοστοιχείο ανάλογα με την απόστασή του σε σχέση με την κάμερα. Τα depth maps αναφέρονται συχνά και ως εικόνες 2,5 διαστάσεων, αφού πρόκειται για εικόνες δύο διαστάσεων οι οποίες φέρουν πληροφορία τριών διαστάσεων. Η τρίτη διάσταση αναπαριστάται μέσω της χρωματικής κλίμακας. Αποτελέσματα διάφορων αλγορίθμων για τη δημιουργία depth maps, οι οποίοι υλοποιήθηκαν κατά τη συγκριτική μελέτη [68] απεικονίζονται παρακάτω: Σχήμα 8.1: Ground truth - βασισμένο στην εικόνα Τσυκυβα 44

49 Σχήμα 8.2: Αποτέλεσμα μεθόδου 1. Σχήμα 8.3: Αποτέλεσμα μεθόδου 2. 45

50 Σχήμα 8.4: Αποτέλεσμα μεθόδου 3. Σχήμα 8.5: Αποτέλεσμα μεθόδου 4. 46

51 Κεφάλαιο 9 Εφαρμογές Διάφορες εφαρμογές που αφορούν ην υπολογιστική όραση, τα γραφικά μέσω υπολογιστή και την υπολογιστική γεωμετρία απαιτούν στις μέρες μας την ανακατασκευή επιφανειών από πλάνα πραγματικών τοπίων. Αυτές οι εφαρμογές ποικίλλουν και καλύπτουν ένα ευρύ φάσμα, από τη διατήρηση της πολιτιστικής μας κληρονομιάς, μέχρι το ηλεκτρονικό εμπόριο διαμέσου κινουμένων σχεδίων, και την ανακατασκευή τοπίων εικονικής πραγματικότητας. Παλιότερα η τρισδιάστατη ανακατασκευή γινόταν μόνο μέσω δεδομένων που είχαν συλλεχθεί από ειδικές διατάξεις, συνήθως laser scanners. Αυτές οι διατάξεις όμως εκτός του ότι ήταν πολύ ακριβές, απαιτούσαν ειδικό χειρισμό και συγκεκριμένες συνθήκες λειτουργίας. Γι αυτό, παρόλο που οι αλγόριθμοι που είχαν αναπτυχθεί ειδικά για την επεξεργασία αυτού του είδους των δεδομένων ήταν αποτελεσματικοί, η φύση των σκηνών που μπορούσε να σκαναριστεί και να ανακατασκευαστεί ήταν σημαντικά περιορισμένο. Η πρόσφατη ανάπτυξη του στερεοσκοπικού εξοπλισμού, που είναι φθηνός και εύχρηστος αφού αποτελείται από κάμερες με δύο φακούς, και αλγορίθμων ικανών να διαχειριστούν τις στερεοσκοπικές λήψεις και να δώσουν ικανοποιητικά και αξιόπιστα αποτελέσματα σε σχέση με τη γεωμετρία των παρατηρούμενων εικόνων, άνοιξε στους ερευνητές/ καλλιτέχνες τεράστιους ορίζοντες ως προς τις σκηνές που μπορούν να αναπαρασταθούν και τις εφαρμογές στις οποίες αυτές μπορούν να χρησιμοποιηθούν. 47

52 Μέρος II Οι βιβλιοθήκες 48

53 Κεφάλαιο 1 Εισαγωγή Μετά τη μελέτη που αναπτύχθηκε παραπάνω, στη διπλωματική μου εργασία προσπάθησα να κατασκευάσω η ίδια το χάρτη βάθους ενός ζευγαριού εικόνων. Πιο αναλυτικά: χρησιμοποίησα ένα στέρεο ζευγάρι εικόνων οι οποίες έχουν τραβηχτεί απ το παρμπρίζ ενός αυτοκινήτου και απεικονίζουν το σκηνικό ενός δρόμου. Επεξεργάστηκα τις εικόνες μέσω της κάρτας γραφικών του υπολογιστή μου, χρησιμοποιώντας το API της OpenCL, καθώς και συναρτήσεις του ocl module της OpenCV. Συγκεκριμένα, για την εξαγωγή του depth map αρχικά υλοποίησα και ε- φάρμοσα στις δύο εικόνες τον αλγόριθμο histogram matching, ούτως ώστε να έχουν ακριβώς το ίδιο χρώμα και η αντιστοίχιση των εικονοστοιχείων να εκτελεστεί με τη μεγαλύτερη δυνατή ακρίβεια. Η υλοποίηση του αλγορίθμου έγινε με συγγραφή των απαραίτητων OpenCL kernels και την εκτέλεσή τους μέσω του API της OpenCL. Στη συνέχεια προχώρησα στην ανίχνευση των χαρακτηριστικών σημείων των εικόνων, την αντιστοίχισή τους και την εύρεση της απόστασης αυτών από την κάμερα. Αυτό υλοποιήθηκε με πέντε διαφορετικούς τρόπους, πάντα με τη χρήση συναρτήσεων της OpenCV βιβλιοθήκης, κάποιες από τις οποίες άνηκαν στο OCL τμήμα αυτής. Τέλος οι πέντε διαφορετικές υλοποιήσεις αναλύθηκαν και συγκρίθηκαν ως προς τα αποτελέσματα και το χρόνο εκτέλεσής τους. Στο παρόν μέρος της εργασίας εξηγώ τα βασικά σημεία των τεχνολογιών που χρησιμοποίησα και τα βήματα που θα πρέπει να εκτελέσει κανείς ώστε να μπορέσει να τις χρησιμοποιήσει. Στο τρίτο μέρος εξηγείται αναλυτικά η υλοποίηση των απαραίτητων αλγορίθμων, παρατίθενται τα αποτελέσματα των διαφορετικών μεθόδων εύρεσης του βάθους, και γίνεται ανάλυση και σύγκρισή τους. 49

54 Κεφάλαιο 2 OpenCL 2.1 Με λίγα λόγια Η OpenCL (Open Computing Language) είναι ένα framework για τη δημιουργία προγραμμάτων που μπορούν να τρέξουν σε ετερογενείς πλατφόρμες, οι ο- ποίες αποτελούνται από πολλούς και διαφορετικούς μεταξύ τους επεξεργαστές, όπως CPUs, GPUs, DSPs κ.α. Το σύνολο επεξεργαστών, οι οποίοι ονομάζονται devices, συνδέεται άμεσα με έναν κεντρικό επεξεργαστή που καλείται host. Το framework περιλαμβάνει ένα API, μια γλώσσα ειδικού σκοπού και έναν OpenCL C compiler. Το (API) δίνει τη δυνατότητα διαχείρισης της συνολικής πλατφόρμας μέσω του host. Ετσι, εντολές που τρέχουν στον host μπορούν να εκτελούν προγράμματα στις devices και να διαχειρίζονται τη μνήμη τους. Τα προγράμματα αυτά καλούνται πυρήνες (kernels) και μπορούν να εκτελούνται παράλληλα, εφόσον το hardware το επιτρέπει. Η γλώσσα ειδικού σκοπού εξυπηρετεί στη συγγραφή των πυρήνων, και βασίζεται στη C99. [26] Ο OpenCL C compiler μεταγλωττίζει τους πυρήνες κατά τη διάρκεια της ε- κτέλεσης του προγράμματος (compiled at run-time), ούτως ώστε οι εφαρμογές να είναι φορητές μεταξύ διαφορετικών πλατφορμών. Πρόκειται για ένα ανοικτό πρότυπο, το οποίο αναπτύσσεται και συντηρείται από το μη κερδοσκοπικό τεχνολογικό όμιλο Khronos Group, ο οποίος ιδρύθηκε και λειτουργεί με σκοπό την ανάπτυξη ανοικτού standard APIs για τη δημιουργία ή/και την αναπαραγωγή πολυμέσων μέσω μιας ευρείας γκάμας συσκευών. [33] Υποστηρίζεται από τους περισσότερους μεγάλους κατασκευαστές επεξεργαστών. [35] 2.2 Το σύστημα μνήμης Η OpenCL ορίζει μια ιεραρχία τεσσάρων επιπέδων όσον αφορά στη μνήμη των συσκευών της: 50

55 Global memory (καθολική μνήμη) Μνήμη κοινή για όλες τις συσκευές. Επιτρέπει στις συσκευές να διαμοιράζονται δεδομένα, αλλά έχει μεγάλη καθυστέρηση πρόσβασης. Read-only memory (μνήμη ανάγνωσης μόνο) Μικρότερη μνήμη χαμηλής καθυστέρησης, η οποία μπορεί να δεχτεί εγγραφές από τον host αλλά προσπελαύνεται από τις συσκευές μόνο για ανάγνωση. Local memory (τοπική μνήμη) Μνήμη διαμοιραζόμενη μεταξύ πολλών επεξεργαστικών στοιχείων της ίδιας συσκευής. Per-element private memory (καταχωρητές) Ιδιωτική μνήμη του κάθε στοιχείου. Η παραπάνω ιεραρχία δεν είναι απαραίτητο να υλοποιείται μέσω hardware σε κάθε συσκευή. Οι συσκευές επίσης δεν είναι απαραίτητο να έχουν κοινή μνήμη με τον host. Το API του host παρέχει τρόπους διαχείρισης των buffers μνήμης των συσκευών, και ειδικές εντολές για τη μεταφορά των δεδομένων από και προς αυτούς. [35] 2.3 Ιστορική αναδρομή Το specification της OpenCL αναπτύχθηκε αρχικά απ την Apple Inc., η οποία κατέχει και τα δικαιώματα της επωνυμίας. Στη συνέχεια βελτιώθηκε με τη συνεργασία ειδικών αντιπροσώπων των εταιρειών AMD, Qualcomm, Intel και Nvidia, και υποβλήθηκε ως πρόταση στο Khronos Group. Το group δούλεψε επί πέντε μήνες για να καταφέρει να ορίσει πλήρως τις τεχνικές λεπτομέρειες του specification για την OpenCL 1.0, που τελικά ε- γκρίθηκε για δημόσια παρουσίαση στις 8 Δεκεμβρίου του OpenCL 1.0 Η OpenCL 1.0 παρουσιάστηκε για πρώτη φορά στο κοινό από την Apple, μαζί με το λειτουργικό σύστημα X Snow Leopard για Mac στις 28 Αυγούστου του Σύμφωνα με την αντίστοιχη ανακοίνωση τύπου: Το Snow Leopard επεκτείνει την υποστήριξη του σύγχρονου hardware μέσω της Open Computing Language (OpenCL), η οποία επιτρέπει σε οποιαδήποτε εφαρμογή να εκμεταλλέυεται τις τεράστιες υπολογιστικές δυνατότητες της κάρτας γραφικών, κάτι που προηγουμένως ήταν δυνατό μόνο για εφαρμογές γραφικών.[2] Καθώς η OpenCL προτάθηκε ως ανοικτό standard, ένας ένας οι μεγάλοι κατασκευαστές επεξεργαστών αναγνώρισαν τη χρησιμότητά της και ξεκίνησαν να την υποστηρίζουν. [35] 51

56 2.3.2 OpenCL 1.1 Η OpenCL 1.1 παρουσιάστηκε απ το Khronos Group στις 14 Ιουνίου του 2010, και προσέθεσε αξιοσημείωτη λειτουργικότητα, περισσότερη ευελιξία και βελτιωμένη απόδοση στον παράλληλο προγραμματισμό. Για να επιτευχθούν τα παραπάνω, συμπεριλήφθηκαν στο πρότυπο νέοι τύποι δεδομένων, περισσότερα συμβατά φορμάτ εικόνων, δυνατότητα χειρισμού των δεδομένων από διαφορετικές διεργασίες του host, πρόσβαση στους buffers από πολλαπλές συσκευές και δυνατότητα επεξεργασίας συγκεκριμένων περιοχών τους, κ.α. [35] OpenCL 1.2 Το specification της OpenCL 1.2 ανακοινώθηκε στις 15 Νοεμβρίου του 2011 από το Khronos Group, και έκανε τη διαφορά σε σχέση με τις προηγούμενες εκδόσεις στον τομέα της απόδοσης και των δυνατοτήτων παραλληλισμού που παρείχε. Οι πιο αξιοσημείωτες απ αυτές τις δυνατότητες είναι: device partitioning, δηλαδή δυνατότητα ανάθεσης διαφορετικών εργασιών σε διαφορετικά τμήματα της ίδιας συσκευής, δυνατότητα δημιουργίας εξωτερικών OpenCL βιβλιοθηκών, βελτιωμένη υποστήριξη εικόνων, δυνατότητα ενσωμάτωσης πυρήνων σε συσκευές ειδικού σκοπού, κ.α OpenCL 2.0 Το Khronos Group παρουσίασε το specification της OpenCL 2.0 στις 18 Νοεμβρίου του Αυτό περιελάμβανε αρκετές ακόμα βελτιώσεις, όσον αφορά στις εικόνες, στην εικονική μνήμη, στο χώρο διαυθύνσεων, και άλλα. Πρόκειται για το ισχύον specification αυτή τη στιγμή. [35] 2.4 CodeXL debugger & profiler Οι πυρήνες της OpenCL γράφονται σε ειδικά αρχεία C, επέκτασης.cl. Τα συνήθη Integrated Development Environments (IDEs) δεν προσφέρουν δυνατότητες debugging για αρχεία τύπου.cl. Δεν παρέχουν καν το υποτυπώδες syntax highlighting. Μ αυτόν τον τρόπο γίνεται πολύ δύσκολο για τον προγραμματιστή να ε- ντοπίσει ακόμα και τα απλούστερα σφάλματα στον κώδικα του, κάτι που μπορεί να εξελιχθεί σε μεγάλο πρόβλημα, όσο η έκταση και η πολυπλοκότητα των πυρήνων αυξάνει. Για να λύσει το παραπάνω πρόβλημα, η AMD ανέπτυξε για τους χρήστες των συστημάτων της τη σουίτα CodeXL. 52

57 Η CodeXL είναι μια σουίτα προγραμματιστικών εργαλείων που περιλαμβάνει GPU debugger, GPU profiler, CPU profiler και στατικό αναλυτή πυρήνων OpenCL. Είναι διαθέσιμη δωρεάν, είτε ως αυτόνομη εφαρμογή διεπαφής χρήστη για λειτουργικά συστήματα windows και linux, είτε ως επέκταση του windows visual studio. Οι δυνατότητες που δίνει στο χρήστη είναι οι εξής: GPU Debugger Ο GPU debugger επιτρέπει την αποσφαλμάτωση OpenCL και OpenGL κλήσεων API, καθώς και OpenCL πυρήνων. Δίνει στον προγραμματιστή τη δυνατότητα να ορίζει breakpoints ή να εκτελεί τον κώδικα γραμμή γραμμή, βρίσκοντας έτσι σφάλματα, βελτιστοποιώντας την απόδοση, ελαχιστοποιώντας την κατανάλωση μνήμης, και βελτιώνοντας συνολικά την ποιότητα του παραγόμενου κώδικα. Πιο συγκεκριμένα, η δυνατότητα αποσφαλμάτωσης OpenCL πυρήνων σε πραγματικό χρόνο, επιτρέπει στον προγραμματιστή να επιβλέπει την ε- κτέλεση των πυρήνων σε άμεση σύνδεση με τις API κλήσεις, να βρίσκει τα σφάλματα εντός τους, και να έχει πρόσβαση στις μεταβλητές του κάθε work-group και work-item που τρέχει τον πυρήνα, σε κάθε χρονική στιγμή. Στατικός αναλυτής πυρήνων OpenCL Ο στατικός αναλυτής πυρήνων δίνει τη δυνατότητα στον προγραμματιστή να κάνει compile, να αναλύσει και να αποσυνθέσει τον κώδικα του κάθε πυρήνα, καθώς και να κάνει μια εκτίμηση της απόδοσής του, χωρίς να τρέξει τη συνολική εφαρμογή. CPU & GPU Profiler Η CodeXL σουίτα παρέχει εργαλεία CPU και GPU profiling. Ο CPU profiler βοηθά να ερευνάται, να αναλύεται και να βελτιώνεται η απόδοση των εφαρμογών, των drivers και του λογισμικού συστήματος των CPU της AMD. Δίνει τη δυνατότητα εφαρμογής διαφόρων τεχνικών profiling, όπως profiling με βάση το χρόνο (ΤΒΡ) ή με βάση τα γεγονότα (ΕΒΡ), και sampling με βάση την εντολή. Ο GPU profiler συλλέγει και οπτικοποιεί δεδομένα σχετικά με την απόδοση της GPU, το ίχνος των εφαρμογών και την κατοχή των πυρήνων, κατά τη διάρκεια της εκτέλεσης OpenCL εφαρμογών. Αυτό ωφελεί στο να εντοπίζονται τα κρίσιμα σημεία που προκαλούν καθυστέρηση στην εφαρμογή, και να βρίσκονται τρόποι αντιμετώπισής τους με σκοπό τη βελτίωση απόδοσης των εφαρμογών που τρέχουν στις πλατφόρμες της AMD. [23] [6] 53

58 Κεφάλαιο 3 Το στήσιμο ενός OpenCL συστήματος Τα βήματα που πρέπει να εκτελέσουμε ώστε να μπορέσουμε να γράψουμε κώδικα ο οποίος θα εκτελείται σε μια κάρτα γραφικών AMD Radeon είναι τα εξής: Κατ αρχάς, πρέπει να κατεβάσουμε το AMD APP SDK (AMD, Accelerated Parallel Processing, Software Development Toolkit) [24] από την επίσημη σελίδα της AMD και να το εγκαταστήσουμε. Το κατάλληλο πακέτο και ο τρόπος εγκατάστασης διαφέρουν ανάλογα με το λειτουργικό σύστημα και τα προγραμματιστικά εργαλεία που θα επιλέξουμε να χρησιμοποιήσουμε. Πρέπει στη συνέχεια να σιγουρευτούμε πως διαθέτουμε την πιο πρόσφατη έκδοση του catalyst driver για το μοντέλο της κάρτας που χρησιμοποιούμε, ώστε να υποστηρίζει κάθε δυνατότητα της OpenCL. Τέλος, δημιουργούμε ένα αρχείο C++ (με επέκταση.cpp) στο οποίο θα γράφουμε τον κώδικα που θα τρέχει στον host -σειριακός κώδικας και κλήσεις προς το API της OpenCL- και ένα αρχείο C (με επέκταση.cl) που θα περιλαμβάνει τους kernels μας. Συνδέουμε κατάλληλα τα δύο αρχεία, ώστε το ένα να μπορεί να δει το άλλο. Είμαστε πλέον έτοιμοι να γράψουμε το πρώτο πρόγραμμά μας. 54

59 Κεφάλαιο 4 C++ αρχείο: Ο κώδικας που τρέχει στον host 4.1 Βιβλιοθήκες Για να καταφέρουμε να καλέσουμε συναρτήσεις της OpenCL μέσω C++, θα πρέπει στο C++ αρχείο μας να συμπεριληφθούν οι βιβλιοθήκες cl και CLUtil. Θα πρέπει επίσης να συμπεριλάβουμε σ αυτό κλασικές βιβλιοθήκες οι οποίες θα διευκολύνουν τη συγγραφή του σειριακού τμήματος του κώδικά μας. 4.2 Setup Για να αποκτήσουμε πρόσβαση στις συσκευές της πλατφόρμας, πρέπει να ε- κτελέσουμε μια διαδικασία προετοιμασίας, κατά την οποία θα ορίσουμε κάποιες αλληλοεξαρτώμενες δομές. Η σχέση εξάρτησης των παραπάνω δομών, και τελικά ο τρόπος λειτουργίας μιας εφαρμογής στον host μπορεί να παρουσιαστεί παραστατικά με τη χρήση μιας αναλογίας: ένα παιχνίδι με κάρτες. [49] Σε ένα παιχνίδι με κάρτες ο dealer κάθεται στο ίδιο τραπέζι με έναν ή περισσότερους παίκτες, και τους μοιράζει κάρτες. Ο κάθε παίκτης κρατά τις κάρτες στο χέρι του και αποφασίζει με ποιον τρόπο θα παίξει καλύτερα. Οι παίκτες δε μπορούν να αλληλεπιδρούν μεταξύ τους ή να βλέπουν ο ένας τις κάρτες του άλλου, μπορούν όμως να συνεννοούνται με τον dealer, ο οποίος αναλαμβάνει το συντονισμό της παρτίδας και ικανοποιεί τα αιτήματά τους. Εκτός από τον dealer και τους παίκτες, στην αναλογία μας έχει ενεργό συμμετοχή και το τραπέζι γύρω από το οποίο λαμβάνει χώρα το παιχνίδι. Δεν είναι υποχρεωμένοι να συμμετάσχουν στην παρτίδα όλοι όσοι κάθονται στο τραπέζι, αλλά το να κάθεται κανείς στο τραπέζι είναι αναγκαία προϋπόθεση για να συμμετάσχει. 55

60 Στην αναλογία μας, ο dealer αντιστοιχεί στον host. Οτιδήποτε άλλο καθορίζει την εξέλιξη του παιχνιδιού, αντιστοιχεί στις έξι δομές δεδομένων της OpenCL που πρέπει να δημιουργηθούν και να αρχικοποιηθούν ούτως ώστε να τρέξει η εφαρμογή στον host. [49] Συσκευές Οι OpenCL συσκευές αντιστοιχούν στους παίκτες. Οπως ο κάθε παίκτης λαμβάνει κάρτες απ τον dealer, έτσι και οι συσκευές λαμβάνουν απ τον host πυρήνες προς εκτέλεση. Η κάθε συσκευή αναπαρίσταται με το id της, που δηλώνεται με τύπο cl_device_id. Πυρήνες Οι πυρήνες της OpenCL αντιστοιχούν στις κάρτες του παιχνιδιού. Ο host μοιράζει πυρήνες προς εκτέλεση στις συσκευές, όπως ο dealer μοιράζει κάρτες στους παίκτες. Ο κάθε πυρήνας δηλώνεται με τύπο cl_kernel. Πρόγραμμα Το πρόγραμμα αντιστοιχεί στην τράπουλα. Οπως ο dealer μοιράζει τις κάρτες της τράπουλας στους παίκτες, ο host μοιράζει τους πυρήνες του προγράμματος στις συσκευές. Command queue Η command queue της OpenCL αντιστοιχεί στο χέρι του παίκτη. Ο παίκτης παίζει κάθε φορά μια απ τις κάρτες που κρατά στο χέρι του. Σε αναλογία, η συσκευή εκτελεί έναν απ τους πυρήνες που βρίσκονται στην command queue της. Η command queue δηλώνεται με τύπο cl_command_queue. Context Το context της OpenCL αντιστοιχεί στο τραπέζι του παιχνιδιού. Το τραπέζι δίνει τη δυνατότητα στους παίκτες να ανταλλάσσουν κάρτες. Το context επιτρέπει στις συσκευές να λαμβάνουν πυρήνες και να μεταφέρουν δεδομένα.δηλώνεται με τύπο cl_context. Πλατφόρμα Το hardware το οποίο δίνει τη δυνατότητα να τρέξουν όλα τα παραπάνω, είναι μια ετερογενής πλατφόρμα, η οποία θα μπορούσε να αντιστοιχεί στη λέσχη χαρτοπαιξίας όπου εκτυλίσσεται το παιχνίδι καρτών. Η πλατφόρμα δηλώνεται με τύπο cl_platform. Τα παραπάνω οπτικοποιούνται στο σχήμα 3.1. Μέσω του C++ API, η αρχικοποίηση των παραπάνω δομών γίνεται ως εξής: [53] [1] Τύπος συσκευής Ο τύπος της συσκευής (CPU ή GPU) βρίσκεται με χρήση της κλάσης appsdk::clcommandargs, και αποθηκεύεται σε μια μεταβλητή τύπου cl_device_type. 56

61 Σχήμα 4.1: Η αναλογία του παιχνιδιού με τις κάρτες Πληροφορίες πλατφόρμας Για την εύρεση πληροφοριών σχετικά με τις πλατφόρμες του υπολογιστικού συστήματος, καλείται η getplatform, η οποία ορίζεται στη βιβλιοθήκη CLUtil. Η getplatform καλεί τη clgetplatformids η οποία επιστρέφει τον αριθμό των διαθέσιμων πλατφορμών με τα platform ID τους, και τη clgetplatforminfo η οποία ανακτά επιπλέον πληροφορίες, όπως το όνομα της πλατφόρμας και του κατασκευαστή. Δημιουργία context Η εντολή clcreatecontextfromtype δέχεται ως ορίσματα τον τύπο της συσκευής (CL_DEVICE_TYPE_GPU ή CPU) και το ID της πλατφόρμας, και με βάση αυτά δημιουργεί το κατάλληλο context, το οποίο θα επιτρέψει στον host μας να διαχειρίζεται τις συσκευές. Πληροφορίες συσκευής Ως τώρα είχαμε στη διάθεσή μας μόνο τον τύπο της συσκευής. Τώρα πια, που έχουμε δημιουργήσει το απαραίτητο context, μπορούμε να ανακτήσουμε περαιτέρω πληροφορίες για τις διαθέσιμες συσκευές, όπως τον αριθμό και το cl_device_id τους, αξιοποιώντας τη συνάρτηση getdevices της CLUtil βιβλιοθήκης. Δημιουργία Command queue Εχοντας έτοιμο ένα λειτουργικό context και γνωρίζοντας τα ID των συσκευών μας, είμαστε στην ευχάριστη θέση να δημιουργήσουμε την command queue του προγράμματος. Για να το καταφέρουμε, κάνουμε χρήση της βασικής opencl εντολής clcreatecommandqueue. Το μόνο που μας έμεινε για να ολοκληρώσουμε τη φάση του setup είναι η δημιουργία ενός προγράμματος που περιέχει τους πυρήνες που θέλουμε να τρέξουν στις συσκευές μας. Θεωρούμε πως οι πυρήνες είναι έτοιμοι, γραμμένοι στη γλώσσα C99, και βρίσκονται αποθηκευμένοι σε ένα ξεχωριστό αρχείο κώδικα με επέκταση.cl. Για άλλη μια φορά η βιβλιοθήκη CLUtil μας παρέχει την 57

62 κατάλληλη συνάρτηση. Πρόκειται για την buildopenclprogram, η οποία δημιουργεί το εν λόγω πρόγραμμα, αν εφοδιαστεί με το context, το device_id, και το όνομα του.cl αρχείου. [53] [1] 4.3 Εκτέλεση του κυρίως κώδικα του προγράμματος και των πυρήνων Ο σειριακός κώδικας δημιουργείται και εκτελείται κανονικά, όπως συνηθίζεται στη C++. Για να εκτελέσουμε όμως έναν πυρήνα, θα πρέπει να χρησιμοποιήσουμε το C++ API της OpenCL, και να ακολουθήσουμε τα εξής βήματα: Αρχικοποίηση των ορισμάτων του πυρήνα Κατ αρχάς, πρέπει να περάσουμε τα δεδομένα εισόδου του πυρήνα σε στοιχεία τύπου cl_mem. Αυτά τα στοιχεία μπορεί να είναι είτε εικόνες είτε buffers. Τα παραπάνω, πραγματοποιούνται με τις εντολές clcreatebuffer για τη δημιουργία ενός buffer, clenqueuewritebuffer για την εγγραφή δεδομένων στον buffer, και clcreateimage για τη δημιουργία και την ταυτόχρονη αρχικοποίηση μιας εικόνας. Δημιουργία του πυρήνα Στη συνέχεια πρέπει να μεταγλωττίσουμε τον πυρήνα μας. Αυτό γίνεται πολύ εύκολα σε μια γραμμούλα μόνο, με την εντολή clcreatekernel, η οποία δέχεται ως ορίσματα: το πρόγραμμά μας (που έχει δημιουργηθεί κατά τη διάρκεια του setup) και το όνομα του προς δημιουργία πυρήνα (ως string, όπως γράφεται στο.cl αρχείο που περιλαμβάνει τους πυρήνες μας). Πέρασμα ορισμάτων στον πυρήνα Αφού δημιουργηθεί ο πυρήνας, δεν έχουμε παρά να του περάσουμε τα απαραίτητα ορίσματα, τα οποία έχουμε ήδη δημιουργήσει. Το πέρασμα των ορισμάτων γίνεται με χρήση της συνάρτησης clsetkernelarg η οποία δέχεται ως εισόδους: το όνομα του πυρήνα που θα δεχτεί το όρισμα, το ίδιο το όρισμα, το μέγεθός του, καθώς και τη σχετική του θέση ως προς τα υπόλοιπα ορίσματα. Για να περάσουμε πολλαπλά ορίσματα στον κάθε πυρήνα, θα πρέπει να καλέσουμε τη συνάρτηση clsetkernelarg πολλές φορές, μία φορά για κάθε όρισμα. Για να αποφευχθεί αυτή η χρονοβόρα και κουραστική διαδικασία, εγώ υλοποίησα ως template τη συνάρτηση pusharguments, η οποία μέσω template overloading δέχεται το όνομα του πυρήνα και τις παραμέτρους που χρειάζεται για να εκτελεστεί, και φροντίζει να καλέσει 58

63 1 μέσω της pushargument τη clsetkernelarg τόσες φορές, όσες και το πλήθος των παραμέτρων. Η pushargument, και τα τρία πρώτα από τα overloads της pusharguments: template <typename T> 3 i n t pushargument ( c l _ k e r n e l kernel, T a, cl_uint i d ) { 5 c l _ i n t s t a t u s = clsetkernelarg ( kernel, id, s i z e o f (T), a ) ; CHECK_OPENCL_ERROR( status, " setkernelarg f a i l e d. " ) ; 7 r e t u r n SDK_SUCCESS; 9 } template <typename T1> 11 i n l i n e void pusharguments ( c l _ k e r n e l kernel, T1 a1 ) { 13 pushargument ( kernel, a1, 0) ; } 15 template <typename T1, typename T2> i n l i n e void pusharguments ( c l _ k e r n e l kernel, T1 a1, T2 a2 ) 17 { pushargument ( kernel, a1, 0) ; 19 pushargument ( kernel, a2, 1) ; } 21 template <typename T1, typename T2, typename T3> i n l i n e void pusharguments ( c l _ k e r n e l kernel, T1 a1, T2 a2, T3 a3 ) 23 { pushargument ( kernel, a1, 0) ; 25 pushargument ( kernel, a2, 1) ; pushargument ( kernel, a3, 2) ; 27 } Εκτέλεση του πυρήνα Αφού θέσουμε τα ορίσματα στον πυρήνα, έρχεται η ώρα να τον εκτελέσουμε. Ο πυρήνας εκτελείται με χρήση της συνάρτησης clenqueuen- DRangeKernel, η οποία τοποθετεί στην command queue μία εντολή που υπαγορεύει την εκτέλεση του συγκεκριμένου πυρήνα σε κάποια συσκευή. Για να εκτελεστεί σωστά αυτή η εντολή, θα πρέπει να της δώσουμε ως παραμέτρους: το όνομα του πυρήνα και της ουράς εντολών, καθώς και πληροφορίες σχετικά με τα work-items που θα τρέξουν τον πυρήνα, όπως το πλήθος τους και οι διαστάσεις στις οποίες θα οριστούν. Επιστροφή αποτελεσμάτων Τέλος, για να μπορέσουμε να επεξεργαστούμε μέσω του host ή/και να αποθηκεύσουμε τα δεδομένα που επιστρέφει ο πυρήνας μας, πρέπει να τα 59

64 αντιγράψουμε από τους buffers πίσω, σε κάποια δομή δεδομένων διαχειρίσιμη απ το API της OpenCL. Οι δύο μέθοδοι που χρησιμοποίησα εγώ, ήταν η αντιγραφή δεδομένων από κάποιον buffer σε ίσου μεγέθους array, με την εντολή clenqueueread- Buffer, καθώς και η αντιγραφή δεδομένων εικόνας σε array χαρακτήρων cl_uchar4 μέσω της εντολής clenqueuereadimage. Ο κάθε cl_uchar4 χαρακτήρας μπορεί να αποθηκεύσει τέσσερις μη προσημασμένους αριθμούς, δηλαδή τα τέσσερα κανάλια χρώματος του κάθε εικονοστοιχείου της εικόνας. [53] [1] 4.4 Cleanup Το τελευταίο μέρος του προγράμματος, όπου απελευθερώνεται η μνήμη που έχει δεσμευθεί κατά τη διάρκειά του. Πιο αναλυτικά, απελευθερώνονται οι OpenCL πόροι που δεσμεύτηκαν κατά τη διάρκεια του setup, καθώς και οι buffers και οι υπόλοιποι τομείς μνήμης που χρειάστηκαν στη συνέχεια, για την εκτέλεση των πυρήνων και την αποθήκευση δεδομένων και αποτελεσμάτων. [1] 60

65 Κεφάλαιο 5 C αρχείο: Οι πυρήνες της OpenCL 5.1 Τι είναι ο πυρήνας Ο πυρήνας είναι ένας απλός αλγόριθμος που τρέχει στον επεξεργαστή μιας συσκευής (ποτέ στον host). Στην περίπτωση που η συσκευή είναι μια κάρτα γραφικών, ένας πυρήνας τρέχει κάθε στιγμή σε κάθε έναν από τους στοιχειώδεις επεξεργαστές της, που ονομάζονται και επεξεργαστικά στοιχεία. Μ αυτόν τον τρόπο επιτυγχάνουμε παράλληλη επεξεργασία δεδομένων, και άρα πολύ μικρότερους χρόνους εκτέλεσης συγκεκριμένων εργασιών. Ο παραλληλισμός θα μπορούσε να γίνεται ως προς τα δεδομένα, ή ως προς τις εργασίες που πρέπει να εκτελεστούν. Στην πρώτη περίπτωση, ο ίδιος πυρήνας εκτελείται από όλα τα επεξεργαστικά στοιχεία της κάρτας γραφικών. Στη δεύτερη περίπτωση, διαφορετικοί πυρήνες εκτελούνται στα διάφορα επεξεργαστικά στοιχεία. Οι κάρτες γραφικών αυτή τη στιγμή υποστηρίζουν μόνο παραλληλισμό ώς προς τα δεδομένα, μιας και, παρόλο που διαθέτουν πολλαπλά επεξεργαστικά στοιχεία, το hardware που υλοποιεί την ανάκτηση εντολών και τον program counter είναι μόνο ένα, και πρέπει να τους εξυπηρετεί ταυτόχρονα όλους. [50] Πρέπει να έχουμε στο μυαλό μας λοιπόν πως ο πυρήνας είναι ο αλγόριθμος που εκτελείται ταυτόχρονα σε πολλά από τα επεξεργαστικά στοιχεία της κάρτας γραφικών της πλατφόρμας μας. Ο αριθμός εκτελέσεων του πυρήνα κάθε χρονική στιγμή ορίζεται από τον προγραμματιστή μέσω του API, και εξαρτάται από τις ανάγκες της εργασίας την οποία εκτελεί. Συνήθως ισούται με τα στοιχεία τους προς επεξεργασία buffer μνήμης, ή με τα εικονοστοιχεία της εικόνας που φιλτράρεται. Η κάθε ξεχωριστή ἑκτέλεση του πυρήνα ονομάζεται work-item. Κάθε work-item μπορεί να εκτελείται από ένα ή περισσότερα επεξεργαστικά στοιχεία. [41] 61

66 Ο προγραμματιστής έχει επίσης τη δυνατότητα να ορίσει τη δημιουργία και εκτέλεση work-items σε μία, δύο ή τρεις διαστάσεις, ούτως ώστε αυτά να αντιστοιχούν ακριβώς με τα στοιχεία μνήμης τα οποία επεξεργάζονται. Πιο αναλυτικά, για την επεξεργασία ενός buffer ενδείκνυται να οριστεί η εκτέλεση όλων των work-items σε μία διάσταση. Για την επεξεργασία μιας εικόνας, σε δύο διαστάσεις, και για την επεξεργασία ενός τρισδιάστατου μοντέλου, θα οριστεί η εκτέλεση των work-items σε τρεις διαστάσεις. Ο πυρήνας έχει τη μορφή αλλά και τη συμπεριφορά μιας συνάρτησης. Εκτελείται πάντα σε κάποια συσκευή, αλλά μπορεί να καλείται είτε από τον host είτε από κάποιον άλλο πυρήνα. Στη δεύτερη περίπτωση, η κλήση του υλοποιείται με το μηχανισμό κλήσης των συμβατικών συναρτήσεων.[42] 5.2 Ο ορισμός του πυρήνα Οι πυρήνες της OpenCL, όπως έχω ήδη αναφέρει, γραφονται σε ειδικό αρχείο.cl, και μεταγλωττίζονται (γίνονται compiled) κατά τη διάρκεια της εκτέλεσης του προγράμματος που τρέχει στον host, μέσω της εντολής buildopenclprogram του API. Ενας πυρήνας ορίζεται ως εξής: [52] 2 kernel void i m a g e _ f i l t e r ( i n t n, i n t m, 4 constant f l o a t f i l t e r _ w e i g h t s, read_only image2d_t src_image, 6 write_only image2d_t dst_image ) { 8 / body / } Οπως συμβαίνει με κάθε συνάρτηση στη C, για τον ορισμό του απαιτείται ο προσδιορισμός του ονόματος, των ορισμάτων με τους τύπους τους, καθώς και του τύπου της μεταβλητής που επιστρέφει ο πυρήνας Η προσδιοριστική λέξη kernel Πριν τη δήλωση του πυρήνα, πρέπει επιπλέον να χρησιμοποιήσουμε την προσδιοριστική λέξη kernel (ή kernel), η οποία δηλώνει πως η συνάρτηση που ακολουθεί είναι ένας πυρήνας, ο οποίος πρέπει να εκτελεστεί σε μια συσκευή OpenCL. Η προσδιοριστική λέξη kernel μπορεί να χρησιμοποιηθεί σε συνδυασμό με τη λέξη κλειδί attribute, η οποία υποδηλώνει επιπλέον πληροφορίες προς τον compiler σχετικά με τη μεταγλώττιση του πυρήνα. [42] 62

67 5.2.2 Τα ορίσματα του πυρήνα Εχω μιλήσει παραπάνω για την ιεραρχία μνήμης στα ετερογενή συστήματα. Η OpenCL λοιπόν παρέχει τέσσερις ανεξάρτητες περιοχές διευθύνσεων: την καθολική μνήμη, την τοπική για κάθε συσκευή, τη read-only (ως προς τις συσκευές) μνήμη, και την ιδιωτική μνήμη του κάθε work-item. Οταν γράφουμε κώδικα που θα τρέξει στις συσκευές, πρέπει για κάθε μεταβλητή να καθορίσουμε το χώρο διευθύνσεων στον οποίο θα οριστεί. Αυτό γίνεται με τη χρήση κάποιων προσδιοριστικών. Τα προσδιοριστικά αυτά είναι οι λέξεις global, local, constant και private, και δηλώνουν τον αντίστοιχο χώρο διευθύνσεων. Δηλαδή, για να ορίσουμε μια μεταβλητή στην καθολική μνήμη, την ορίζουμε ως global, για να την ορίσουμε στην τοπική μνήμη της κάθε συσκευής, την ορίζουμε ως local, στη read-only μνήμη ως constant, και στην ιδιωτική μνήμη ως private. Τα παραπάνω προσδιοριστικά μπορούν να χρησιμοποιηθούν επίσης χωρίς τις κάτω παύλες, δηλαδή global, local, constant και private. Η σύνταξη της C επεκτείνεται στην OpenCL έτσι ώστε τα προσδιοριστικά του χώρου διευθύνσεων να αντιμετωπίζονται ως προσδιοριστικά τύπου μεταβλητής. Ως εκ τούτου, κατά τη δήλωση ορισμάτων ή μεταβλητών εντός κάποιου πυρήνα, μπορούμε προαιρετικά, εκτός του τύπου της να προσδιορίσουμε και το χώρο διευθύνσεων στον οποίο θα δηλωθεί η μεταβλητή.[43] Αν δεν το κάνουμε, η μεταβλητή θα δηλωθεί στον generic χώρο διευθύνσεων, ο οποίος μπορεί να αντιστοιχηθέι, ανάλογα με τη χρήση, στην καθολική, την τοπική ή την ιδιωτική μνήμη. [44] Ο χώρος διευθύνσεων που χρησιμοποιείται για τα ορίσματα και τις μεταβλητές μιας συνάρτησης βρίσκεται στην ιδιωτική μνήμη. Ομοίως, τα ορίσματα ενός πυρήνα είθισται να ανήκουν στο χώρο διευθύνσεων της ιδιωτικής μνήμης, εκτός απ τα ορίσματα τύπου image2d_t ή image3d_t, που ανήκουν πάντα στην καθολική μνήμη. Οι buffers ανήκουν επίσης στην καθολική ή τη read-only μνήμη, όυτως ώστε να μπορούμε να περάσουμε ολόκληρα blocks μνήμης από τον host προς επεξεργασία ή απλή αναφορά στους πυρήνες. Σε αντιπαραβολή, όλες οι μεταβλητές που εξυπηρετούν το σκοπό του κυρίως προγράμματος θα πρέπει να ορίζονται στον constant χώρο διευθύνσεων.[43] 5.3 Το σώμα του πυρήνα Στο σώμα του πυρήνα ορίζονται κατ αρχάς οι τοπικές μεταβλητές που θα χρησιμοποιηθούν. Στη συνέχεια, προκύπτει το εξής λεπτό σημείο: Στη γενική περίπτωση, ορίζονται τόσα work-items, όσα και τα στοιχεία του block μνήμης που θέλουμε να επεξεργαστούμε. Το κάθε work-item αντιστοιχείται σε ένα στοιχείο μνήμης, για την επεξεργασία του οποίου είναι υπεύθυνο. 63

68 Για να μπορέσει το work-item να επεξεργαστεί το στοιχείο που του αντιστοιχεί, θα πρέπει να είναι σε θέση να έχει πρόσβαση σ αυτό. Θα πρέπει λοιπόν να γνωρίζει το ID του στοιχείου, το οποίο ταυτίζεται με το δικό του ID. Για να αποκτήσει πρόσβαση το work-item στο ID του, χρησιμοποιείται, εντός του πυρήνα, η εντολή: s i z e _ t get_global_id ( u i n t dimension ) Η εντολή αυτή επιστρέφει το ID του work-item που την κάλεσε, στη διάσταση που ορίζει ο ακέραιος dimension. Για να οριστεί πλήρως το ID ενός work-item, θα πρέπει η get_global_id να κληθεί τόσες φορές, όσες και οι διαστάσεις στις οποίες έχει οριστεί να τρέξουν οι πυρήνες μας. Τέλος, γράφεται ο αλγόριθμος που θα εκτελεστεί για το συγκεκριμένο στοιχείο μνήμης κάθε φορά. [1] [53] Η γλώσσα που χρησιμοποιείται είναι η C99. 64

69 Κεφάλαιο 6 OpenCV Η OpenCV (Open Source Computer Vision Library: είναι μία ανοιχτού λογισμικού βιβλιοθήκη η οποία κυκλοφορεί υπό BSD άδεια, [8] κάτι που σημαίνει πως είναι ελεύθερη προς προσωπική και εμπορική χρήση. [25] Διαθέτει διεπαφές για τις γλώσσες C, C++, Python και Java, και υποστηρίζει τα επικρατέστερα λειτουργικά συστήματα για προσωπικούς υπολογιστές (Windows, Linux, Mac OS) και smartphones (Android, ios). Εχει σχεδιαστεί με στόχο την υψηλή υπολογιστική αποδοτικότητα και ιδιαίτερη έμφαση στις εφαρμογές πραγματικού χρόνου. Οντας γραμμένη σε βελτιστοποίημενη C/C++, η βιβλιοθήκη μπορεί να εκμεταλλευτεί την πολυπύρηνη επεξεργασία. Επιπλέον, ενσωματώνοντας κλήσεις του API της OpenCL στις συναρτήσεις της, όπου αυτό είναι δυνατό, μπορεί να επιταχύνει τις διαδικασίες μέσω hardware (στην περίπτωση ετερογενών πλατφορμών). [38] Γύρω από την OpenCV έχει αναπτυχθεί μία κοινότητα ενεργών χρηστών, ενώ υπολογίζεται πως πάνω από προγραμματιστές την έχουν χρησιμοποιήσει κάποια στιγμή. Εχει ευρεία γκάμα χρήσεων, οι οποίες κυμαίνονται από εφαρμογές διαδραστικής τέχνης, μέχρι ανίχνευση ναρκών ή προηγμένα ρομποτικά συστήματα.[38] 6.1 Η δομή της OpenCV Η OpenCV έχει σπονδυλωτή δομή. Πρόκειται δηλαδή για μια μεγάλη βιβλιοθήκη η οποία αποτελείται από μικρότερα τμήματα τα οποία μπορεί κανείς να συμπεριλάβει μεμονωμένα στο πρόγραμμά του. Τα τμήματα αυτά έχουν τη μορφή μικρότερων, κοινόχρηστων (shared) ή στατικών (static) βιβλιοθηκών. [8] core Τα σημαντικότερα τμήματα (modules) της OpenCV είναι τα εξής: [8] Ορίζει βασικές δομές δεδομένων και συναρτήσεις που χρησιμοποιούνται απ όλα τα υπόλοιπα τμήματα. 65

70 imgproc Ενα τμήμα επεξεργασίας εικόνας που περιλαμβάνει φίλτρα, γεωμετρικούς και χρωματικούς μετασχηματισμούς εικόνων. video Ενα τμήμα ανάλυσης video, που περιλαμβάνει μεταξύ άλλων αλγορίθμους ανίχνευσης κίνησης, αφαίρεσης background και παρακολούθησης αντικειμένων. calib3d Περιλαμβάνει βασικούς αλγορίθμους επεξεργασίας λήψεων πολλαπλών καμερών, αντιστοίχισης σημείων και τρισδιάστατης αναπαράστασης. features2d Διάφορες υλοποιήσεις feature extractors και descriptors, όπως και μέθοδοι αντιστοίχισης χαρακτηριστικών. objdetect Ανίχνευση προκαθορισμένων αντικειμένων, όπως πρόσωπα, μάτια, αυτοκίνητα κλπ. highgui Μια εύκολη στη χρήση διεπαφή για κωδικοποίηση εικόνας και βίντεο, καθώς και με δυνατότητες διαδραστικότητας του χρήστη. gpu Αλγόριθμοι που έχουν επιταχυνθεί μέσω παραλληλοποίησης. Δεν πρόκειται για ένα μόνο τμήμα αλλά για ένα σύνολο αλγορίθμων διαμοιρασμένων σε διάφορα τμήματα. Ενα απ αυτά τα τμήματα είναι το ocl module που χρησιμοποίησα εγώ, και στο οποίο θα αναφερθώ στη συνέχεια. 6.2 Βασικά τεχνικά χαρακτηριστικά Νamespace Οι κλάσεις και οι συναρτήσεις της OpenCV ανήκουν στο cv namespace. Συνεπώς, για να τις χρησιμοποιήσει κανείς, πρέπει εκτός του να συμπεριλάβει (include) κάποιο από τα τμήματα της βιβλιοθήκης στον κώδικά του, να προσθέσει το αναγνωριστικό cv:: μπροστά απ το όνομα της κάθε κλάσης ή συνάρτησης η οποία ανήκει στην OpenCV. Εναλλακτικά, μπορεί να χρησιμοποιήσει την εντολή using namespace cv; στην αρχή του κώδικα. [7] Αυτόματη διαχείριση μνήμης Η OpenCV αναλαμβάνει εξ ολοκλήρου τη διαχείριση της μνήμης. Οχι απλά δεσμεύει την απαραίτητη μνήμη κατά την αρχικοποίηση μιας δομής δεδομένων, 66

71 αλλά φροντίζει ώστε ο συγκεκριμένος τομέας μνήμης να μην αποδεσμευτεί όσο υπάρχουν αναφορές σε αυτόν (σε περίπτωση διαμοιραζόμενων δεδομένων) α- κόμα κι αν η αρχική δομή διαγραφεί. [7] Αριθμητική κορεσμού Ως βιβλιοθήκη υπολογιστικής όρασης, η OpenCV διαχειρίζεται συνήθως εικονοστοιχεία, οι τιμές των οποίων είναι κωδικοποιημένες στα 8 ή 16 bits ανά κανάλι, και άρα κυμαίνονται σε περιορισμένο εύρος. Ομως μετά από συγκεκριμένα είδη επεξεργασίας μπορεί να προκύψουν για τα εικονοστοιχεία τιμές εκτός του διαθέσιμου εύρους. Αν αποθηκευθούν τα πρώτα 8 ή 16 bit των τιμών αυτών, όπως θα υποδείκνυε η απλούστερη υλοποίηση, θα υπάρξουν οπτικά ψεγάδια στην εικόνα που δύνανται να επηρεάσουν αρνητικά τα επόμενα στάδια της επεξεργασίας της. Αντ αυτού, η βιβλιοθήκη χρησιμοποιεί τη λεγόμενη αριθμητική κορεσμού (saturation arithmetics). Σύμφωνα με αυτή τη μέθοδο, κάθε τιμή εκτός του διαθέσιμου εύρους στρογγυλοποιείται στον κοντινότερό της αριθμό από 0 ως 255. [7] Διαχείριση συγκεκριμένων τύπων δεδομένων Η OpenCV, για λόγους ταχύτητας και ευκολότερης συγγραφής bindings προς άλλες γλώσσες προγραμματισμού, σε γενικές γραμμές δε χρησιμοποιεί templates. Η κάθε συνάρτηση λοιπόν πρέπει να ξαναφράφεται για κάθε νέο τύπο δεδομένων που χρειάζεται να διαχειριστεί. Γι αυτό οι συναρτήσεις της OpenCV μπορούν να επεξεργάζονται μόνο ένα συγκεκριμένο, περιορισμένο σύνολο τύπων δεδομένων. Το σύνολο αυτό διαφέρει από συνάρτηση σε συνάρτηση, και μάλιστα συρρικνώνεται με την αύξηση της πολυπλοκότητας. [7] Διαχείριση λαθών (errors) Η OpenCV διαχειρίζεται αυτόματα τα σημαντικότερα λάθη μέσω exceptions. Ενα λάθος προκύπτει στην περίπτωση που τα δεδομένα εισόδου είναι κατάλληλου τύπου και ανήκουν στο σωστό εύρος τιμών, αλλά ο αλγόριθμος για κάποιο λόγο δε λειτουργεί σωστά. Σ αυτή την περίπτωση επιστρέφεται ένας ειδικός κωδικός λάθους. Τα exceptions είναι στιγμιότυπα της κλάσης cv::exception, η οποία είναι υποκλάση της std::exception. Ετσι μπορούμε να τα διαχειριστούμε κομψά χρησιμοποιώντας τα εργαλεία που μας προσφέρει η C++ γι αυτό το σκοπό (throw, try, catch). [7] Re-enterability Η σημερινή εκδοχή της OpenCV είναι πλήρως re-enterable. Αυτό σημαίνει πως η ίδια συνάρτηση, ή η ίδια μέθοδος κάποιας κλάσης (η οποία θα εφαρμοστεί σε 67

72 διαφορετικά στιγμιότυπα της κλάσης) μπορούν να κληθούν ταυτόχρονα από διαφορετικά νήματα. Αντίστοιχα, το ίδιο cv::mat είναι δυνατό να χρησιμοποιείται σε πολλά νήματα ταυτόχρονα. [7] Μ αυτό τον τρόπο εκμεταλλεύεται την πολυπύρηνη επεξεργασία, όπως αναφέρω παραπάνω. 6.3 Το OCL τμήμα της OpenCV Το OCL τμήμα (module) της OpenCV αποτελείται από ένα σύνολο κλάσεων και συναρτήσεων οι οποίες υλοποιούν και επιταχύνουν τις λειτουργίες της OpenCV μέσω της OpenCL, εκμεταλλευόμενες τον παραλληλισμό δεδομένων που προσφέρει. Παρόλο που η OpenCL γενικώς υποστηρίζει κάθε είδους ετερογενείς πλατφόρμες, οι συναρτήσεις του OCL τμήματος προς το παρόν αναπτύσσονται και ελέγχονται μόνο σε κάρτες γραφικών. Η απόδοση του κάθε αλγορίθμου επηρεάζεται από τα χαρακτηριστικά και τις δυνατότητες της πλατφόρμας στην οποία εκτελείται κάθε φορά. Τα αποτελέσματά του όμως παραμένουν πάντα αριθμητικά σωστά και ακριβή συγκριτικά με τα αποτελέσματα της αμιγούς ακολουθιακής του υλοποίησης, ανεξαρτήτως πλατφόρμας. Το OCL τμήμα περιλαμβάνει εκτός από αλγορίθμους υψηλού επιπέδου, και χαμηλού επιπέδου δομικά στοιχεία. Προσφέρει έτσι μια στιβαρή υποδομή για την ανάπτυξη γρήγορων αλγορίθμων υπολογιστικής όρασης. Συνοδεύεται επίσης από μια σουίτα ελέγχου ταχύτητας και ακρίβειας. Το τμήμα έχει σχεδιαστεί με έμφαση στην ευκολία χρήσης, και δεν απαιτεί καμία γνώση της OpenCL για τη χρήση του. Αρκεί η χρήση του namespace "ocv" και οι συναρτήσεις του μπορούν να χρησιμοποιηθούν όπως οι συναρτήσεις οποιασδήποτε άλλης βιβλιοθήκης στη C++. Βέβαια κάποιος που δουλεύει με την OpenCL μπορεί να τροποποιήσει τον πηγαίο κώδικα κάποιας συνάρτησης, ούτως ώστε αυτός να ικανοποιεί καλύτερα τις ανάγκες του. Μπορεί επίσης να χρησιμοποιήσει τη λειτουργικότητα των έτοιμων αλγορίθμων του τμήματος σε συνδυασμό με τους δικούς του εξατομικευμένους OpenCL πυρήνες. Τέλος, ο πηγαίος κώδικας των αλγορίθμων του OCL τμήματος θα μπορούσε να αποτελέσει χρήσιμο υλικό για κάποιον που θέλει να μάθει OpenCL. Γενικότερα, από την έκδοση και μετά η OpenCV μπορεί να συνεργαστεί αποτελεσματικά με την OpenCL. Υπάρχει δηλαδή η δυνατότητα χρήσης εξατομικευμένων OpenCL πυρήνων μέσα σε πηγαίο κώδικα της OpenCV. [17] 68

73 Μέρος III Η υλοποίηση 69

74 Κεφάλαιο 1 Color mapping των εικόνων εισόδου Στην εργασία μου προσπάθησα μέσω παράλληλου προγραμματισμού να κατασκευάσω το χάρτη βάθους του εξής στερεοσκοπικού ζευγαριού εικόνων. Σχήμα 1.1: Ζευγάρι εικόνων εισόδου. Οπως μπορεί να παρατηρήσει κανείς, η απόχρωση διαφοροποιείται μεταξύ των δύο εικόνων. Για να εκτελεστεί αξιόπιστα η αντιστοίχιση των σημείων τους, πρέπει αυτή η διαφορά να διορθωθεί. Αυτό πραγματοποιήθηκε μέσω του αλγορίθμου histogram matching. Ο histogram matching αλγόριθμος παραλληλοποιήθηκε μέσω της OpenCL. Κατ αρχάς, δημιουργήθηκε η κλάση givemelopencl, η οποία διαχειρίζεται όλα τα εσωτερικά ζητήματα της OpenCL μέσω ενός abstraction υψηλού επιπέδου. Περιέχει δηλαδή συναρτήσεις οι οποίες εκτελούν αυτόματα όλες τις διαδικασίες που απαιτούνται για τη λειτουργία ενός OpenCL συστήματος, όπως περιγράφονται στα κεφάλαια 3 και 4 του δεύτερου μέρους της παρούσας εργασίας. Παρέχει μεθόδους όπως setup, compilekernels, putkernelarguments, runthiskernel κλπ. 70

75 1 Δημιουργήθηκε επίσης η κλάση myimage, η οποία περιλαμβάνει τις κατάλληλες δομές για την αποθήκευση των δεδομένων μιας εικόνας, και τις απαραίτητες μεθόδους για τη διαχείρισή της μέσω της OpenCL. Οι μέθοδοι αυτές ξεκινούν από απλές λειτουργίες όπως open ή save, και φτάνουν μέχρι σύνθετους αλγορίθμους επεξεργασίας εικόνας, όπως histogram equalization, histogram matching κλπ. Οσον αφορά στον αλγόριθμο λοιπόν: Ο στόχος είναι το ιστόγραμμα α- ποχρώσεων της μίας εικόνας να εξομοιωθεί με το ιστόγραμμα της δεύτερης. Για να γίνει αυτό, αρχικά εξισορροπούμε το ιστόγραμμα και των δύο εικόνων (histogram equalization), και στη συνέχεια, έχοντας αποθηκεύσει τους αντιστρέψιμους μετασχηματισμούς που οδήγησαν τις αποχρώσεις της πρώτης εικόνας σε επίπεδη κατανομή, τους εφαρμόζουμε αντίστροφα στη δεύτερη εικόνα, ούτως ώστε οι αποχρώσεις αυτής να περάσουν απ την επίπεδη κατανομή σε μία κατανομή όμοια με την αρχική κατανομή αποχρώσεων της πρώτης αναφοράς. Ταυτόχρονα, το ιστόγραμμα της πρώτης εικόνας επιστρέφει στην αρχική του κατάσταση (histogram matching). Η εξισορρόπηση ιστογράμματος απαιτεί την ταξινόμηση και στη συνέχεια την αθροιστική καταμέτρηση των τιμών των εικονοστοιχείων. Γι αυτό δε μπορεί να εκτελεστεί παράλληλα. Ο σειριακός κώδικάς της είναι ο εξής: // s o r t 3 q s o r t ( colorarray, ( width h e i g h t ), s i z e o f ( p i x e l S t r u c t ), compfunc ) ; 5 // e q u a l i z e acc = 0 ; 7 count = 1 ; value = colorarray [ 0 ]. pxlvalue ; 9 mo = colorarray [ 0 ]. mo; f o r ( i = 1 ; i < ( width h e i g h t ) ; i ++){ 11 i f ( ( colorarray [ i ]. pxlvalue == value ) && ( colorarray [ i ]. mo == mo) ) { // count how many v a l u e s are the same 13 count++; } 15 e l s e { // f i n d e q u a l i z e d value 17 acc += ( double ) count / ( ( double ) ( width h e i g h t ) ) ; acc255 = ( i n t ) ( acc 255) ; 19 // f o r every same p i x e l 21 // save t r a n s f o r m a t i o n + change p i x e l to e q u a l i z e d value f o r ( j = ( i count ) ; j < i ; j++){ 23 colorarray [ j ]. t r s f r m = acc255 colorarray [ j ]. pxlvalue ; i f ( acc255 < 255) { 25 colorarray [ j ]. pxlvalue = acc255 ; 71

76 } e l s e { 27 colorarray [ j ]. pxlvalue = ; } 29 } 31 // s t a r t counting again count = 1 ; 33 value = colorarray [ i ]. pxlvalue ; mo = colorarray [ i ]. mo; 35 } 37 } Κατά την εξισορρόπηση του ιστογράμματος, φροντίζουμε να θυμόμαστε το μετασχηματισμό που κρίθηκε αναγκαίο να εφαρμοστεί στο κάθε εικονοστοιχείο (γραμμή 23). Μετά την εξισορρόπηση ιστογράμματος ακολουθεί η αντιστοίχιση των ιστογραμμάτων. Η αντιστοίχιση εκτελείται παράλληλα, μέσω του πυρήνα histmatching, ο οποίος μετασχηματίζει κατάλληλα το κάθε εικονοστοιχείο. 2 kernel void histmatching ( global p i x e l S t r u c t red, global p i x e l S t r u c t green, global p i x e l S t r u c t blue, global p i x e l S t r u c t refred, global p i x e l S t r u c t refgreen, global p i x e l S t r u c t refblue, 4 u i n t width ) { 6 // get image c o o r d i n a t e s i n t 2 coord = ( i n t 2 ) ( get_global_id ( 0 ), get_global_id ( 1 ) ) ; 8 // c a l c u l a t e b u f f e r index 10 i n t index = ( coord. y ) width + coord. x ; 12 / r e f e r e e image / // red 14 i n t x = red [ index ]. pxlvalue refred [ index ]. t r s f r m ; i f ( ( x > 0) && ( x < 256) ) red [ index ]. pxlvalue = x ; 16 e l s e i f ( x <= 0) red [ index ]. pxlvalue = 1 ; e l s e red [ index ]. pxlvalue = ; 18 // green 20 x = green [ index ]. pxlvalue refgreen [ index ]. t r s f r m ; i f ( ( x > 0) && ( x < 256) ) green [ index ]. pxlvalue = x ; 22 e l s e i f ( x <= 0) green [ index ]. pxlvalue = 1 ; e l s e green [ index ]. pxlvalue = ; 24 // blue 26 x = blue [ index ]. pxlvalue r e f B l u e [ index ]. t r s f r m ; i f ( ( x > 0) && ( x < 256) ) blue [ index ]. pxlvalue = x ; 72

77 28 e l s e i f ( x <= 0) blue [ index ]. pxlvalue = 1 ; e l s e blue [ index ]. pxlvalue = ; 30 / r e f e r e n c e image / 32 refred [ index ]. pxlvalue = refred [ index ]. t r s f r m ; refgreen [ index ]. pxlvalue = refgreen [ index ]. t r s f r m ; 34 r e f B l u e [ index ]. pxlvalue = r e f B l u e [ index ]. t r s f r m ; } Το ζευγάρι εικόνων εισόδου μετά την εφαρμογή του αλγορίθμου φαίνεται στο σχήμα 1.2. Σχήμα 1.2: Το ζευγάρι εικόνων εισόδου, μετά το histogram matching. Μπορεί κανείς να παρατηρήσει πως η διαφορά στην απόχρωση έχει εξαληφθεί. 73

78 Κεφάλαιο 2 Εύρεση και αντιστοίχιση των χαρακτηριστικών σημείων των εικόνων Μετά το color mapping των δύο εικόνων, υλοποιήθηκε η εξαγωγή των χαρακτηριστικών τους σημείων και η αντιστοίχισή τους. Αυτό έγινε με τέσσερις διαφορετικούς τρόπους, με σκοπό την ενδεικτική χρήση και σύγκριση μερικών κλάσεων και μεθόδων της OpenCV βιβλιοθήκης. 2.1 Μέθοδος Εντοπισμός χαρακτηριστικών σημείων Αρχικά εντοπίζονται τα χαρακτηριστικά σημεία των δύο εικόνων. Για την ανίχνευση των σημείων χρησιμοποιείται ο Dynamic Adapted Feature Detector, ο οποίος λαμβάνει ως παράμετρο τον ελάχιστο και το μέγιστο δυνατό αριθμό σημείων που απαιτείται να ανιχνευθούν. Αν ο αριθμός των σημείων που ανιχνεύονται είναι εκτός των επιθυμητών ορίων, οι παράμετροι του ανιχνευτή που χρησιμοποιείται προσαρμόζονται και η διαδικασία επαναλαμβάνεται. Την προσαρμογή των παραμέτρων του ανιχνευτή αναλαμβάνει ο Adjuster Adapter. [14] Για την ίδια τη διαδικασία της ανίχνευσης, είναι δυνατό να χρησιμοποιηθούν τρεις διαφορετικοί ανιχνευτές: ο FAST, o SURF, ή ο STAR. [13] Στη υλοποίησή μου τα παραπάνω πραγματοποιούνται με τις ακόλουθες γραμμές κώδικα: 2 std : : vector <cv : : KeyPoint> l e f t K e y p o i n t s, r i g h t K e y p o i n t s ; 74

79 4 cv : : Ptr<cv : : FeatureDetector > d e t e c t o r ; // c r e a t e new d e t e c t o r i n s t a n c e 6 d e t e c t o r = new cv : : DynamicAdaptedFeatureDetector ( new cv : : FastAdjuster (10, t r u e ), 5000, 10000, 10) ; 8 // d e t e c t k e y p o i n t s d e t e c t o r >d e t e c t ( l eftimage, l e f t K e y p o i n t s ) ; 10 d e t e c t o r >d e t e c t ( rightimage, r i g h t K e y p o i n t s ) ; Αρχικά δημιουργείται ο ανιχνευτής, ο οποίος χρησιμοποιεί τον FAST detector, και απαιτεί τα χαρακτηριστικά σημεία να είναι πέντε με δέκα χιλιάδες, αλλά σταματά να επιμένει μετά από δέκα επαναλήψεις, ακόμα κι αν δεν έχουν βρεθεί τόσα σημεία. Τα αποτελέσματα του ανιχνευτή αποθηκεύονται στα διανύσματα leftkeypoints και rightkeypoints για την αριστερή και τη δεξιά εικόνα αντίστοιχα. Ο DynamicAdaptedFeatureDetector και ο AdjusterAdapter ανήκουν στο features2d τμήμα της OpenCV. Οπως έχω αναφέρει στο πέμπτο κεφάλαιο του δεύτερου μέρους, εξ αιτίας της απουσίας templates στην OpenCV οι συναρτήσεις των τμημάτων της δέχονται ορίσματα συγκεκριμένων τύπων. Ετσι, κάποιες από τις μεθόδους που χρησιμοποιώ στο παρόν κεφάλαιο δέχονται μόνο descriptors σημείων που έχουν εξαχθεί από ασπρόμαυρες εικόνες. Για να έχω λοιπόν μια κοινή βάση για τη σύγκριση των αποτελεσμάτων, μετατρέπω τις έγχρωμες εικόνες εισόδου σε ασπρόμαυρες πριν προβώ σε ο- ποιουδήποτε είδους επεξεργασία. Η μετατροπή γίνεται μέσω της εντολής: 1 cv : : cvtcolor ( f ullcolorimage, greyscaleimage, CV_RGB2GRAY) ; Η εντολή cv::cvtcolor ανήκει στο imgproc τμήμα της OpenCV Εξαγωγή πληροφορίας γύρω από τα χαρακτηριστικά σημεία Εχουμε πλέον στη διάθεσή μας τα χαρακτηριστικά σημεία των δύο εικόνων. Για να μπορέσουμε να τα αντιστοιχίσουμε επιτυχημένα μεταξύ τους θα πρέπει να αξιοποιήσουμε την πληροφορία που υπάρχει στην περιοχή περιμετρικά τους. Τον descriptor του κάθε χαρακτηριστικού σημείου της εικόνας μας αναλαμβάνει να υπολογίσει η κλάση DescriptorExtractor του features2d τμήματος της OpenCV. [10] 75

80 1 Κατά τη δημιουργία του DescriptorExtractor, μέσω της μεθόδου create, μπορούμε να καθορίσουμε ποιος αλγόριθμος θα χρησιμοποιηθεί για την εξαγωγή των descriptors. Αυτή τη στιγμή η υλοποίηση της μεθόδου υποστηρίζει τους αλγορίθμους SIFT, SURF, BriefDescriptorExtractor, BRISK, ORB και FREAK. [9] Υλοποίησα τα παραπάνω ως εξής: cv : : Mat l e f t D e s c r i p t o r s, r i g h t D e s c r i p t o r s ; 3 cv : : Ptr<cv : : D e s c r i p t o r E x t r a c t o r > e x t r a c t o r ; 5 // c r e a t e new d e s c r i p t o r e x t r a c t o r i n s t a n c e e x t r a c t o r = cv : : D e s c r i p t o r E x t r a c t o r : : c r e a t e ( "SIFT" ) ; 7 // compute d e s c r i p t o r s 9 e x t r a c t o r > compute ( leftimagegrey, l e f t K e y p o i n t s, l e f t D e s c r i p t o r s ) ; e x t r a c t o r > compute ( rightimagegrey, rightkeypoints, r i g h t D e s c r i p t o r s ) ; 1 Για την εξαγωγή των descriptors χρησιμοποιήθηκε ο αλγόριθμος SIFT. Η μέθοδος compute υπολόγισε μέσω του SIFT extractor τους descriptors και τους αποθήκευσε στα αντίστοιχα cv::mat Αντιστοίχιση των χαρακτηριστικών σημείων Μένει η αντιστοίχιση των χαρακτηριστικών σημείων των δύο εικόνων. Για την αντιστοίχιση χρησιμοποιήθηκε η κλάση ocl:: BruteForceMatcher _OCL _base του ocl τμήματος της OpenCV. Ο BruteForceMatcher, όπως λέει και το όνομά του, εκτελεί brute force αντιστοίχιση: υπολογίζει την α- πόσταση του κάθε descriptor της μιας εικόνας από όλους τους descriptors της άλλης, ούτως ώστε να καταλήξει στην καλύτερη δυνατή αντιστοιχία. [16] Η κλήση του ocl::bruteforcematcher_ocl_base είναι εξαιρετικά απλή: // p o i n t e r a l l o c a t i o n 3 std : : vector <cv : : DMatch> matches ; cv : : o c l : : BruteForceMatcher_OCL_base matcher ; 5 // c a l l 7 matcher. match ( o c l D e s c r i p t o r s 1, o c l D e s c r i p t o r s 2, matches ) ; Ο υπολογισμός της απόστασης του κάθε descriptor απ όλους τους υπόλοιπους είναι μια υπολογιστικά έντονη και ιδιαίτερα χρονοβόρα διαδικασία. Με 76

81 τη χρήση μιας κλάσης του ocl τμήματος της OpenCV, η διαδικασία επιταχύνεται εξαιρετικά, εκτελούμενη παράλληλα μέσω της κάρτας γραφικών (εφόσον η υλοποίησή της έχει γίνει σε OpenCL). Βλέποντας τις αντιστοιχίες, μπορεί να παρατηρήσει κανείς πως ο αλγόριθμος αποφάσισε πως ο πιο κοντινός descriptor προκύπτει από ένα σημείο της εικόνας στο οποίο η λογική υπαγορεύει πως είναι απίθανο να βρίσκεται η σωστή αντιστοιχία. Μετά την αντιστοίχιση λοιπόν προστέθηκαν κάποιες γραμμές κώδικα οι οποίες ακυρώνουν οποιαδήποτε αντιστοιχία μεταξύ σημείων που δε βρίσκονται στο ίδιο ύψος των εικόνων ή που βρίσκονται σε εξωπραγματικά μεγάλη απόσταση μεταξύ τους. Τα αποτελέσματα της αντιστοίχισης, μετά την απόρριψη των μη ρεαλιστικών αντιστοιχιών, φαίνονται στο σχήμα 2.1. Σχήμα 2.1: Οι αντιστοιχίσεις των σημείων, όπως προκύπτουν απ τη μέθοδο Μέθοδος Εντοπισμός χαρακτηριστικών σημείων και εξαγωγή πληροφορίας γύρω από αυτά. Στη μέθοδο αυτή η ανίχνευση των χαρακτηριστικών σημείων των εικόνων και η εξαγωγή των δεσςριπτορς τους γίνεται ομοίως με την πρώτη μέθοδο Αντιστοίχιση των χαρακτηριστικών σημείων Εκείνο που διαφέρει στη δεύτερη μέθοδο είναι ο αλγόριθμος αντιστοίχισης των χαρακτηριστικών σημείων. Χρησιμοποιήθηκε και πάλι brute force matcher, αλλά αυτή τη φορά η υ- λοποίησή του είναι μέσω C++ και προφανώς η εκτέλεσή του είναι σειριακή. Πρόκειται για την κλάση DescriptorMatcher του features2d τμήματος της O- pencv. 77

82 Μέσω της μεθόδου create της κλάσης αυτής δημιουργείται ένα instance του DescriptorMatcher το οποίο εντέλλεται να εκτελέσει μια brute force αντιστοίχιση, εφόσον χρησιμοποιείται η παράμετρος BruteForce. Ο brute force matcher θα μπορούσε να χρησιμοποιεί διαφορετικούς τύπους για τον προσδιορισμό της απόστασης δύο descriptors: L1, L2, Hamming και Hamming2. [12] Εγώ χρησιμοποίησα τον τύπο L2, ο οποίος είναι ο default. 2 std : : v e c t o r <cv : : DMatch> matches ; 4 // c r e a t e DescriptorMatcher i n s t a n c e cv : : Ptr<cv : : DescriptorMatcher> matcher = cv : : DescriptorMatcher : : c r e a t e ( " BruteForce " ) ; 6 //match 8 matcher >match ( d e s c r i p t o r s 1, d e s c r i p t o r s 2, matches ) ; Τα αποτελέσματα της αντιστοίχισης, μετά την απόρριψη των μη ρεαλιστικών αντιστοιχιών, φαίνονται στο σχήμα 2.2. Σχήμα 2.2: Οι αντιστοιχίσεις των σημείων, όπως προκύπτουν απ τη μέθοδο Μέθοδος 3 Ομοια με τη δεύτερη μέθοδο. Η διαφορά της έγκειται στο οτι αντί της μεθόδου match του DescriptorMatcher χρησιμοποιήθηκε η μέθοδος knnmatch, η οποία αντι του κοντινότερου descriptor, εντοπίζει τους k κοντινότερους descriptors για το κάθε σημείο, δίνοντας μας έτσι τη δυνατότητα να κρατήσουμε στη συνέχεια τη ρεαλιστικά καλύτερη αντιστοιχιση εφαρμόζοντας χωρικούς περιορισμούς, χωρίς να απορρίπτουμε εντελώς τα σημεία που δεν αντιστοιχήθηκαν σωστά εξ αρχής. [11] 1 std : : v e c t o r <std : : v e c t o r <cv : : DMatch>> matches ; 78

83 3 // c r e a t e DescriptorMatcher i n s t a n c e 5 cv : : Ptr<cv : : DescriptorMatcher> matcher = cv : : DescriptorMatcher : : c r e a t e ( " BruteForce " ) ; 7 //match matcher >knnmatch ( d e s c r i p t o r s 1, d e s c r i p t o r s 2, matches, 500) ; Τα αποτελέσματα της αντιστοίχισης, μετά την απόρριψη των μη ρεαλιστικών αντιστοιχιών, φαίνονται στο σχήμα 2.3. Σχήμα 2.3: Οι αντιστοιχίσεις των σημείων, όπως προκύπτουν απ τη μέθοδο Μέθοδος 4 Η τέταρτη μέθοδος είναι όμοια με την πρώτη μέθοδο, με τη διαφορά πως οι εικόνες εισόδου είναι έγχρωμες. Η κλάση BruteForceMatcher_OCL_base του ocl είναι σε θέση να αντιστοιχίσει και έγχρωμους descriptors εκτός από ασπρόμαυρους, σε αντίθεση με την DescriptorMatcher του features2d τμήματος. Παραλείπουμε λοιπόν το βήμα της μετατροπής των έγχρωμων εικόνων σε α- σπρόμαυρες, και περιμένουμε να δούμε κάποια μείωση στο χρόνο εκτέλεσης του συνολικού αλγορίθμου, καθώς και βελτίωση των τελικών αποτελεσμάτων, αφού θεωρητικά οι descriptors που προκύπτουν από έγχρωμες εικόνες περιέχουν καλύτερης ποιότητας πληροφορία. Οι αντιστοιχίσεις που προέκυψαν από την εκτέλεση αυτής της μεθόδου φαίνονται στο σχήμα 2.4: 2.5 Μέθοδος 5 Στην πέμπτη μέθοδο αποφασίστηκε να χρησιμοποιηθούν μόνο αλγόριθμοι οι οποίοι έχουν παραλληλοποιηθεί μέσω της OpenCL. 79

84 Σχήμα 2.4: Οι αντιστοιχίσεις των σημείων, όπως προκύπτουν απ τη μέθοδο Εντοπισμός χαρακτηριστικών σημείων και εξαγωγή πληροφορίας γύρω από αυτά. Για τον εντοπισμό των χαρακτηριστικώ σημείων των εικόνων και την εξαγωγή των descriptors τους χρησιμοποιήθηκε η κλάση SURF_OCL του nonfree τμήματος της OpenCV, η οποία υλοποιεί τον SURF αλγόριθμο για τον εντοπισμό και την εξαγωγή descriptors των σημείων. Ο εντοπισμός των σημείων και η εξαγωγή των descriptors τους γίνεται σε ένα μόνο βήμα, με τη δημιουργία ενός instance της κλάσης αυτής για κάθε εικόνα. // a l l o c a t i o n 3 std : : vector <cv : : KeyPoint> l e f t K e y p o i n t s, r i g h t K e y p o i n t s ; cv : : o c l : : oclmat c l D e s c r i p t o r s L e f t, c l D e s c r i p t o r s R i g h t ; 5 cv : : o c l : : SURF_OCL d e t e c t o r ; 7 // c r e a t e new c l a s s i n s t a n c e d e t e c t o r ( cll, mask, l e f t K e y p o i n t s, c l D e s c r i p t o r s L e f t ) ; 9 d e t e c t o r ( clr, mask, rightkeypoints, c l D e s c r i p t o r s R i g h t ) ; Η κλάση αυτή δουλεύει μόνο με ασπρόμαυρες εικόνες, γι αυτό και οι εικόνες εισόδου μετατράπηκαν σε ασπρόμαυρες πριν περάσουν ως ορίσματα στον detector. [15] Αντιστοίχιση των χαρακτηριστικών σημείων Η αντιστοίχιση των σημείων έγινε κατά τα γνωστά με τη χρήση της BruteForceMatcher_OCL_base κλάσης. Οι αντιστοιχίσεις, μετά το απαραίτητο ξεκαθάρισμα, εικονίζονται στο σχήμα

85 Σχήμα 2.5: Οι αντιστοιχίσεις των σημείων, όπως προκύπτουν απ τη μέθοδο 5. Παρατηρούμε πως οι επιτυχημένες αντιστοιχίες είναι σημαντικά λιγότερες σε αριθμό σε σχέση με τις αντιστοιχίες που προέκυπταν με όλες τις προηγούμενες μεθόδους. Αυτό συμβαίνει γιατί αποφασίζοντας να χρησιμοποιήσουμε μόνο OpenCL υλοποιήσεις αλγορίθμων αποκλείουμε τη χρήση του επαναληπτικού αλγορίθμου Dynamic Adapted Feature Detector ο οποίος πετύχαινε τις προηγούμενες φορές τον επιθυμητό αριθμό χαρακτηριστικών σημείων. Δυστυχώς ο αλγόριθμος αυτός δε μπορεί να παραλληλοποιηθεί με ασφάλεια, αφού σε κάθε επανάληψη ο αριθμός σημείων, άρα και work-items θα πρέπει να είναι διαφορετικός. [14] 81

86 Κεφάλαιο 3 Δημιουργία χάρτη βάθους Εχοντας αντιστοιχίσει τα σημεία, η εύρεση του βάθους είναι μία εύκολη υπόθεση. Στην ουσία, έχοντας τις συντεταγμένες των δύο σημείων του κάθε ζεύγους, και θεωρώντας πως οι συντεταγμένες αυτές βρίσκονται στην ίδια εικόνα, υπολογίζεται η ευκελείδια απόστασή τους. Στη συνέχεια, βασιζόμενοι στην απλή αρχή πως όσο πιο κοντά μας βρίσκεται το σημείο στο χώρο, τόσο περισσότερο θα απέχουν οι απεικονίσεις του, χρωματίζουμε ανάλογα το αντίστοιχο σημείο της εικόνας. 2 // f o r every match f o r ( s i z e _ t i = 0 ; i < i n t ( matches. s i z e ( ) ) ; ++i ) { 4 // get l e f t and r i g h t point c o o r d i n a t e s cv : : P o i n t 2 f from = l e f t K e y p o i n t s [ matches [ i ]. queryidx ]. pt ; 6 cv : : P o i n t 2 f to = r i g h t K e y p o i n t s [ matches [ i ]. t r a i n I d x ]. pt ; 8 // c a l c u l a t e e u c l e d i a n d i s t a n c e double d i s t = s q r t ( ( from. x to. x ) ( from. x to. x ) + ( from. y to. y ) ( from. y to. y ) ) ; 10 // paint point 12 cv : : c i r c l e ( depthmap, keypoints1 [ good_matches2 [ i ]. queryidx ]. pt, 1, cv : : S c a l a r (255 ( d i s t 8), 0, d i s t 8), 1) ; } Η ίδια μέθοδος χρησιμοποιείται για τη δημιουργία του depth map, ανεξαρτήτως της μεθόδου αντιστοίχισης που χρησιμοποιήθηκε παραπάνω. Σημείωση: Στην υλοποίησή μου δε δημιουργήθηκε το τυπικό depth map των εικόνων, με την έννοια πως δε βρέθηκε το βάθος όλων των σημείων της εικόνας. Βρέθηκε το βάθος μόνο των συγκεκριμένων χαρακτηριστικών σημείων που ανιχνεύτηκαν και αντιστοιχίστηκαν επιτυχημένα. 82

87 Κεφάλαιο 4 Αποτελέσματα και συμπεράσματα 4.1 Histogram matching Το histogram matching διαρκεί περίπου 0.9 δευτερόλεπτα. Αν σκεφτεί κανείς πως ο αλγόριθμος έχει υλοποιηθεί μέσω της OpenCL με σκοπό την ταχύτατη εκτέλεση, η ταχύτητα δεν μπορεί να θεωρηθεί ικανοποιητική. Η επίδοση αυτή μπορεί όμως να δικαιολογηθεί από το γεγονός πως η ταξινόμηση και η ισοστάθμιση ιστογράμματος εξακολουθούν να εκτελούνται σειριακά. Επίσης, η μνήμη προσπελαύνεται αρκετές φορές κατά τη διάρκεια του αλγορίθμου. Παρ ότι η ταχύτητα δεν είναι εντυπωσιακή, ο αλγόριθμος έχει τα επιθυμητά αποτελέσματα όσον αφορά στην απόχρωση των εικόνων εισόδου. 4.2 Αντιστοίχιση σημείων και εύρεση βάθους Για την αντιστοίχιση των σημείων χρησιμοποιήθηκαν 5 διαφορετικοί συνδυασμοί αλγορίθμων. Ο πρώτος συνδυασμός, δηλαδή η πρώτη μέθοδος, έκανε χρήση των κλάσεων DynamicAdapted FeatureDetector και του AdjusterAdapter που ανήκουν στο features2d τμήμα της OpenCV για τον εντοπισμό των χαρακτηριστικών σημείων, της κλάσης DescriptorExtractor επίσης του features2d τμήματος για την εξαγωγή των descriptors, και της ocl:: BruteForceMatcher _OCL _base κλάσης του ocl τμήματος για την αντιστοίχιση των σημείων. Τα τρία στάδια της διαδικασίας διήρκεσαν περίπου 7,5 δευτερόλεπτα, χρόνος αξιοπρεπής αν σκεφτεί κανείς πως τα δύο από τα τρία βήματα, τα οποία είναι αρκετά πολύπλοκα, εκτελέστηκαν σειριακά, και μάλιστα ο εντοπισμός των σημείων πιθανότατα επαναλήφθηκε κάποιες φορές, μέχρι να ανακαλυφθεί ικανοποιητικός αριθμός χαρακτηριστικών σημείων. 83

88 Μετά την εκτέλεση των παραπάνω, υπολογίστηκε η απόσταση των σημείων από την κάμερα, και αντίστοιχα χρωματίστηκαν τα σημεία, από κόκκινο για τα πολύ κοντινά, ως μπλε για τα πολύ μακρυνά. Το αποτέλεσμα της μεθόδου φαίνεται στο σχήμα 3.1, και κρίνεται αρκετά ικανοποιητικό. Σχήμα 4.1: Το βάθος των σημείων, όπως προκύπτει απ τη μέθοδο 1. Η δεύτερη μέθοδος κάνει χρήση των ίδιων κλάσεων για τον εντοπισμό και την εξαγωγή των descriptors των σημείων, αλλά χρησιμοποιεί την κλάση DescriptorMatcher του features2d τμήματος της OpenCV, οι μέθοδοι της οποίας εκτελούνται σειριακά, αντί των μεθόδων της ocl:: BruteForceMatcher _OCL _base κλάσης που εκτελούνταν παράλληλα. Περιμένουμε λοιπόν ο χρόνος εκτέλεσης να αυξηθεί. Ο χρόνος όντως αυξάνεται, και βρίσκεται πλεόν στα 8.2 δευτερόλεπτα περίπου. Παρ όλ αυτά, η διαφορά είναι πολύ μικρή, αν σκεφτούμε πως μια τόσο χρονοβόρα διαδικασία όσο η σύγκριση του κάθε descriptor της μιας εικόνας με κάθε έναν από τους descriptors της δεύτερης εικόνας, εκτελείται σειριακά αντί παράλληλα. Η μικρή διαφορά καθυστέρησης μπορεί να δικαιολογηθεί ίσως από τη θεώρηση πως απ τα 7.5 δευτερόλεπτα καθυστέρησης της πρώτης μεθόδου, το μεγαλύτερο μέρος οφείλεται στα βήματα εντοπισμού και εξαγωγής των descri- 84

89 ptors των σημείων, τα οποία είναι όμοια για τις δύο μεθόδους, και εκτελούνται σειριακά (άρα εκ των πραγμάτων αρκετά αργά). Οσο για την αντιστοίχιση των σημείων, φαίνεται να έχει την ίδια αποτελεσματικότητα με τη match μέθοδο της ocl:: BruteForceMatcher _OCL _base κλάσης. Σχήμα 4.2: Το βάθος των σημείων, όπως προκύπτει απ τη μέθοδο 2. Η τρίτη μέθοδος είναι παρόμοια με τη δεύτερη μέθοδο, με τη διαφορά πως αντί της μεθόδου match για την αντιστοίχιση των σημείων, κάνει χρήση της μεθόδου knnmatch της κλάσης DescriptorMatcher, η οποία για κάθε descriptor της μίας εικόνας βρίσκει τους k πιο κοντινούς descriptors της άλλης. Αναμένουμε και πάλι ο χρόνος εκτέλεσης να αυξηθεί, καθώς αυτή τη φορά η κάθε νέα απόσταση θα πρέπει να συγκρίνεται, όχι μόνο με την ως τώρα μικρότερη, αλλά με τις k - n ως τώρα μικρότερες, όπου n η θέση από το τέλος που θα καταλάβει η νέα τιμή, αν βρίσκεται ανάμεσα στις k μικρότερες. Πράγματι, ο χρόνος εκτέλεσης αυξήθηκε δραματικά, ως τα 12.5 δευτερόλεπτα περίπου. Η αντιστοίχιση των σημείων εξακολουθεί να λειτουργεί ικανοποιητικά, αλλά δε βελτιώνεται ιδιαίτερα, όπως φαίνεται στο σχήμα 4.3, και σίγουρα δε μπορεί να αντισταθμίσει τη δραματική αύξηση της καθυστέρησης του αλγορίθμου. 85

90 Σχήμα 4.3: Το βάθος των σημείων, όπως προκύπτει απ τη μέθοδο 3. Συμπερασματικά, η μέθοδος knnmatch κρίνεται αναποτελεσματική για τη συγκεκριμένη εφαρμογή. Η τέταρτη μέθοδος είναι πανομοιότυπη με την πρώτη, με τη διαφορά πως οι εικόνες εισόδου είναι έγχρωμες. Το αναμενόμενο είναι λοιπόν ο χρόνος να μειωθεί κάπως, εφόσον παραλείπεται το βήμα μετατροπής των εικόνων εισόδου από έγχρωμες σε ασπρόμαυρες. Αναμένεται επίσης η βελτίωση της ακρίβειας των αντιστοιχίσεων, εφόσον οι descriptors πλέον περιέχουν και χρωματική πληροφορία. Πράγματι, ο χρόνος εκτέλεσης μειώνεται στα 6.9 δευτερόλεπτα, ενώ η ποιότητα των αντιστοιχίσεων βελτιώνεται, αφού τα σημεία για τα οποία έγινε έγκυρη αντιστοίχιση και σημειώθηκαν στο depth map είναι εμφανώς περισσότερα, όπως φαίνεται στο σχήμα 4.4. Στην πέμπτη και τελευταία μέθοδο χρησιμοποιήθηκαν αποκλειστικά παράλληλοι αλγόριθμοι για την αντιστοίχιση των σημείων. Συγκεκριμένα, χρησιμοποιήθηκε η κλάση SURF_OCL του nonfree τμήματος για τον εντοπισμό και την εξαγωγή descriptors των σημείων, ενώ η πολυχρησιμοποιημένη ocl:: BruteForceMatcher _OCL _base κλάση εκτέλεσε την αντιστοίχιση. 86

91 Σχήμα 4.4: Το βάθος των σημείων, όπως προκύπτει απ τη μέθοδο 4. Χρησιμοποιήθηκαν επίσης έγχρωμες εικόνες εισόδου. Περιμένουμε ο χρόνος εκτέλεσης της μεθόδου να πέσει κάτω από τα 6.9 δευτερόλεπτα, και μετά την εκτέλεση του αλγορίθμου διαπιστώνουμε πως πράγματι. Η καθυστέρηση όχι απλά μειώθηκε, αλλά σχεδόν εξαφανίστηκε, πέφτοντας κάτω από το 0.1 δευτερόλεπτο! Παρατηρώντας όμως τα αποτελέσματα που φαίνονται στο σχήμα 4.5, συνειδητοποιεί κανείς πως δεν πρόκειται για καποια τεράστια επιτυχία του παραλληλισμού δεδομένων. Απλά μέσω της κλάσης SURF_OCL δε μπορούμε να χρησιμοποιήσουμε τον επαναληπτικό αλγόριθμο Dynamic Adapted Feature Detector. Ετσι γλιτώνουμε τον χρόνο των επαναλήψεων του feature detector, κάτι που βέβαια έχει ως αποτέλεσμα πολύ μικρότερη καθυστέρηση αντιστοίχισης, αλλά την ίδια στιγμή αποτυγχάνουμε στο να εντοπίσουμε τον αναγκαίο αριθμό χαρακτηριστικών σημείων ούτως ώστε να φτιάξουμε ένα αξιοπρεπές depth map. Συμπερασματικά, ο χρόνος μπορεί να μειώνεται δραματικά, αλλά αναλόγως μειώνεται και η ποιότητα του αποτελέσματος. Αυτή η μέθοδος απορρίπτεται ως αναποτελεσματική. 87

92 Σχήμα 4.5: Το βάθος των σημείων, όπως προκύπτει απ τη μέθοδο 5. 88

93 Ο πλήρης κώδικας της εργασίας μπορεί να βρεθεί στο github. (click) Ευχαριστώ πολύ τον κ. Δερματά για την καθοδήγηση, το Θοδωρή για την ανεκτίμητη βοήθεια, και τους γονείς και τους φίλους μου που ανέχτηκαν τη γκρίνια μου καθ όλη τη διάρκεια εκπόνησης αυτής της εργασίας. 89

Αναγνώριση Προτύπων Ι

Αναγνώριση Προτύπων Ι Αναγνώριση Προτύπων Ι Ενότητα 1: Μέθοδοι Αναγνώρισης Προτύπων Αν. Καθηγητής Δερματάς Ευάγγελος Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Κεφάλαιο 8. Οπτικοποίηση Απαλοιφή

Κεφάλαιο 8. Οπτικοποίηση Απαλοιφή Κεφάλαιο 8. Οπτικοποίηση Απαλοιφή Oι οπτικές επιδράσεις, που μπορεί να προκαλέσει μια εικόνα στους χρήστες, αποτελούν ένα από τα σπουδαιότερα αποτελέσματα των λειτουργιών γραφικών με Η/Υ. Τον όρο της οπτικοποίησης

Διαβάστε περισσότερα

Ενδεικτική πολυ-εργασία 1 - εφαρμογή στην υπολογιστική όραση

Ενδεικτική πολυ-εργασία 1 - εφαρμογή στην υπολογιστική όραση Ενδεικτική πολυ-εργασία 1 - εφαρμογή στην υπολογιστική όραση Εντοπισμός ενός σήματος STOP σε μια εικόνα. Περιγράψτε τη διαδικασία με την οποία μπορώ να εντοπίσω απλά σε μια εικόνα την ύπαρξη του παρακάτω

Διαβάστε περισσότερα

Οδηγίες σχεδίασης στο περιβάλλον Blender

Οδηγίες σχεδίασης στο περιβάλλον Blender Οδηγίες σχεδίασης στο περιβάλλον Blender Στον πραγματικό κόσμο, αντιλαμβανόμαστε τα αντικείμενα σε τρεις κατευθύνσεις ή διαστάσεις. Τυπικά λέμε ότι διαθέτουν ύψος, πλάτος και βάθος. Όταν θέλουμε να αναπαραστήσουμε

Διαβάστε περισσότερα

ΠΑΡΟΥΣΙΑΣΗ ΣΤΑΤΙΣΤΙΚΩΝ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΟΥΣΙΑΣΗ ΣΤΑΤΙΣΤΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ο Κεφάλαιο: Στατιστική ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΚΑΙ ΟΡΙΣΜΟΙ ΣΤΗ ΣΤΑΤΙΣΤΙΚΗ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Πληθυσμός: Λέγεται ένα σύνολο στοιχείων που θέλουμε να εξετάσουμε με ένα ή περισσότερα χαρακτηριστικά. Μεταβλητές X: Ονομάζονται

Διαβάστε περισσότερα

Ειδικά Θέµατα Υπολογιστικής Όρασης & Γραφικής. Εµµανουήλ Ζ. Ψαράκης & Αθανάσιος Τσακαλίδης Πολυτεχνική Σχολή Τµήµα Μηχανικών Η/Υ & Πληροφορικής

Ειδικά Θέµατα Υπολογιστικής Όρασης & Γραφικής. Εµµανουήλ Ζ. Ψαράκης & Αθανάσιος Τσακαλίδης Πολυτεχνική Σχολή Τµήµα Μηχανικών Η/Υ & Πληροφορικής Ειδικά Θέµατα Υπολογιστικής Όρασης & Γραφικής Εµµανουήλ Ζ. Ψαράκης & Αθανάσιος Τσακαλίδης Πολυτεχνική Σχολή Τµήµα Μηχανικών Η/Υ & Πληροφορικής Εκτίµηση Κίνησης Εµµανουήλ Ζ. Ψαράκης Πολυτεχνική Σχολή Τµήµα

Διαβάστε περισσότερα

Ειδικά Θέµατα Υπολογιστικής Όρασης & Γραφικής. Εµµανουήλ Ζ. Ψαράκης & Αθανάσιος Τσακαλίδης Πολυτεχνική Σχολή Τµήµα Μηχανικών Η/Υ & Πληροφορικής

Ειδικά Θέµατα Υπολογιστικής Όρασης & Γραφικής. Εµµανουήλ Ζ. Ψαράκης & Αθανάσιος Τσακαλίδης Πολυτεχνική Σχολή Τµήµα Μηχανικών Η/Υ & Πληροφορικής Ειδικά Θέµατα Υπολογιστικής Όρασης & Γραφικής Εµµανουήλ Ζ. Ψαράκης & Αθανάσιος Τσακαλίδης Πολυτεχνική Σχολή Τµήµα Μηχανικών Η/Υ & Πληροφορικής Σύνθεση Πανοράµατος Εµµανουήλ Ζ. Ψαράκης Πολυτεχνική Σχολή

Διαβάστε περισσότερα

ΧΡΗΣΗ ΝΕΩΝ ΟΠΤΙΚΩΝ ΚΑΙ ΨΗΦΙΑΚΩΝ ΜΕΘΟΔΩΝ ΓΙΑ ΤΗΝ ΑΝΤΙΓΡΑΦΗ ΤΡΙΣΔΙΑΣΤΑΤΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ ΣΤΕΦΑΝΙΑ ΧΛΟΥΒΕΡΑΚΗ 2014

ΧΡΗΣΗ ΝΕΩΝ ΟΠΤΙΚΩΝ ΚΑΙ ΨΗΦΙΑΚΩΝ ΜΕΘΟΔΩΝ ΓΙΑ ΤΗΝ ΑΝΤΙΓΡΑΦΗ ΤΡΙΣΔΙΑΣΤΑΤΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ ΣΤΕΦΑΝΙΑ ΧΛΟΥΒΕΡΑΚΗ 2014 ΧΡΗΣΗ ΝΕΩΝ ΟΠΤΙΚΩΝ ΚΑΙ ΨΗΦΙΑΚΩΝ ΜΕΘΟΔΩΝ ΓΙΑ ΤΗΝ ΑΝΤΙΓΡΑΦΗ ΤΡΙΣΔΙΑΣΤΑΤΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ ΣΤΕΦΑΝΙΑ ΧΛΟΥΒΕΡΑΚΗ 2014 ΧΡΗΣΗ ΝΕΩΝ ΟΠΤΙΚΩΝ ΚΑΙ ΨΗΦΙΑΚΩΝ ΜΕΘΟΔΩΝ ΓΙΑ ΤΗΝ ΑΝΤΙΓΡΑΦΗ ΤΡΙΣΔΙΑΣΤΑΤΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ Η χρήση

Διαβάστε περισσότερα

Σημαντικές χρονολογίες στην εξέλιξη της Υπολογιστικής Τομογραφίας

Σημαντικές χρονολογίες στην εξέλιξη της Υπολογιστικής Τομογραφίας Σημαντικές χρονολογίες στην εξέλιξη της Υπολογιστικής Τομογραφίας 1924 - μαθηματική θεωρία τομογραφικής ανακατασκευής δεδομένων (Johann Radon) 1930 - κλασσική τομογραφία (A. Vallebona) 1963 - θεωρητική

Διαβάστε περισσότερα

Συστήματα συντεταγμένων

Συστήματα συντεταγμένων Κεφάλαιο. Για να δημιουργήσουμε τρισδιάστατα αντικείμενα, που μπορούν να παρασταθούν στην οθόνη του υπολογιστή ως ένα σύνολο από γραμμές, επίπεδες πολυγωνικές επιφάνειες ή ακόμη και από ένα συνδυασμό από

Διαβάστε περισσότερα

ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΑΝΑΣΚΟΠΗΣΗ ΘΕΩΡΙΑΣ ΣΥΝΟΡΘΩΣΕΩΝ

ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΑΝΑΣΚΟΠΗΣΗ ΘΕΩΡΙΑΣ ΣΥΝΟΡΘΩΣΕΩΝ ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΑΝΑΣΚΟΠΗΣΗ ΘΕΩΡΙΑΣ ΣΥΝΟΡΘΩΣΕΩΝ Βασίλης Δ. Ανδριτσάνος Δρ. Αγρονόμος - Τοπογράφος Μηχανικός ΑΠΘ Επίκουρος Καθηγητής ΤΕΙ Αθήνας 3ο εξάμηνο http://eclass.teiath.gr Παρουσιάσεις,

Διαβάστε περισσότερα

Απεικόνιση Υφής. Μέρος Α Υφή σε Πολύγωνα

Απεικόνιση Υφής. Μέρος Α Υφή σε Πολύγωνα Απεικόνιση Γραφικά ΥφήςΥπολογιστών Απεικόνιση Υφής Μέρος Α Υφή σε Πολύγωνα Γ. Γ. Παπαϊωάννου, - 2008 Τι Είναι η Υφή; Η υφή είναι η χωρική διαμόρφωση των ποιοτικών χαρακτηριστικών της επιφάνειας ενός αντικειμένου,

Διαβάστε περισσότερα

Τεχνικές Μείωσης Διαστάσεων. Ειδικά θέματα ψηφιακής επεξεργασίας σήματος και εικόνας Σ. Φωτόπουλος- Α. Μακεδόνας

Τεχνικές Μείωσης Διαστάσεων. Ειδικά θέματα ψηφιακής επεξεργασίας σήματος και εικόνας Σ. Φωτόπουλος- Α. Μακεδόνας Τεχνικές Μείωσης Διαστάσεων Ειδικά θέματα ψηφιακής επεξεργασίας σήματος και εικόνας Σ. Φωτόπουλος- Α. Μακεδόνας 1 Εισαγωγή Το μεγαλύτερο μέρος των δεδομένων που καλούμαστε να επεξεργαστούμε είναι πολυδιάστατα.

Διαβάστε περισσότερα

Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering)

Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering) Υφή Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering) Θέσεις αντικειμένων και φωτεινών πηγών Θέση παρατηρητή 3D Μοντέλα 3Δ Μετασχ/σμοί Μοντέλου 3Δ Μετασχ/σμός Παρατήρησης Απομάκρυνση Πίσω Επιφανειών

Διαβάστε περισσότερα

Μετάδοση Πολυμεσικών Υπηρεσιών Ψηφιακή Τηλεόραση

Μετάδοση Πολυμεσικών Υπηρεσιών Ψηφιακή Τηλεόραση Χειμερινό Εξάμηνο 2013-2014 Μετάδοση Πολυμεσικών Υπηρεσιών Ψηφιακή Τηλεόραση 5 η Παρουσίαση : Ψηφιακή Επεξεργασία Εικόνας Διδάσκων: Γιάννης Ντόκας Σύνθεση Χρωμάτων Αφαιρετική Παραγωγή Χρώματος Χρωματικά

Διαβάστε περισσότερα

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Οι παρούσες σημειώσεις αποτελούν βοήθημα στο μάθημα Αριθμητικές Μέθοδοι του 5 ου εξαμήνου του ΤΜΜ ημήτρης Βαλουγεώργης Καθηγητής Εργαστήριο Φυσικών

Διαβάστε περισσότερα

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D. Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D. Μη γραμμικός προγραμματισμός: μέθοδοι μονοδιάστατης ελαχιστοποίησης Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών ΤμήμαΠληροφορικής Διάλεξη 6 η /2017 Τι παρουσιάστηκε

Διαβάστε περισσότερα

Ειδικά Θέµατα Υπολογιστικής Όρασης & Γραφικής. Εµµανουήλ Ζ. Ψαράκης & Αθανάσιος Τσακαλίδης Πολυτεχνική Σχολή Τµήµα Μηχανικών Η/Υ & Πληροφορικής

Ειδικά Θέµατα Υπολογιστικής Όρασης & Γραφικής. Εµµανουήλ Ζ. Ψαράκης & Αθανάσιος Τσακαλίδης Πολυτεχνική Σχολή Τµήµα Μηχανικών Η/Υ & Πληροφορικής Ειδικά Θέµατα Υπολογιστικής Όρασης & Γραφικής Εµµανουήλ Ζ. Ψαράκης & Αθανάσιος Τσακαλίδης Πολυτεχνική Σχολή Τµήµα Μηχανικών Η/Υ & Πληροφορικής Χαρακτηριστικά Εµµανουήλ Ζ. Ψαράκης Πολυτεχνική Σχολή Τµήµα

Διαβάστε περισσότερα

Ψηφιακή Επεξεργασία Εικόνας. Σ. Φωτόπουλος ΨΕΕ

Ψηφιακή Επεξεργασία Εικόνας. Σ. Φωτόπουλος ΨΕΕ Ψηφιακή Επεξεργασία Εικόνας ΒΕΛΤΙΩΣΗ ΕΙΚΟΝΑΣ ΜΕ ΙΣΤΟΓΡΑΜΜΑ ΔΠΜΣ ΗΕΠ 1/46 Περιλαμβάνει: Βελτίωση (Enhancement) Ανακατασκευή (Restoration) Κωδικοποίηση (Coding) Ανάλυση, Κατανόηση Τμηματοποίηση (Segmentation)

Διαβάστε περισσότερα

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr I ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ i e ΜΕΡΟΣ Ι ΟΡΙΣΜΟΣ - ΒΑΣΙΚΕΣ ΠΡΑΞΕΙΣ Α Ορισμός Ο ορισμός του συνόλου των Μιγαδικών αριθμών (C) βασίζεται στις εξής παραδοχές: Υπάρχει ένας αριθμός i για τον οποίο ισχύει i Το σύνολο

Διαβάστε περισσότερα

ΤΕΧΝΙΚΗ ΜΗΧΑΝΙΚΗ Ι ΚΕΝΤΡΑ ΒΑΡΟΥΣ ΕΠΙΠΕ ΩΝ ΕΠΙΦΑΝΕΙΩΝ ΟΡΙΣΜΟΣ ΚΕΝΤΡΟΥ ΒΑΡΟΥΣ ΕΠΙΠΕ ΗΣ ΕΠΙΦΑΝΕΙΑΣ

ΤΕΧΝΙΚΗ ΜΗΧΑΝΙΚΗ Ι ΚΕΝΤΡΑ ΒΑΡΟΥΣ ΕΠΙΠΕ ΩΝ ΕΠΙΦΑΝΕΙΩΝ ΟΡΙΣΜΟΣ ΚΕΝΤΡΟΥ ΒΑΡΟΥΣ ΕΠΙΠΕ ΗΣ ΕΠΙΦΑΝΕΙΑΣ ΤΕΧΝΙΚΗ ΜΗΧΑΝΙΚΗ Ι ΚΕΝΤΡΑ ΒΑΡΟΥΣ ΕΠΙΠΕ ΩΝ ΕΠΙΦΑΝΕΙΩΝ ΟΡΙΣΜΟΣ ΚΕΝΤΡΟΥ ΒΑΡΟΥΣ ΕΠΙΠΕ ΗΣ ΕΠΙΦΑΝΕΙΑΣ Για τους βασικούς ορισμούς σχετικά με το κέντρο βάρους θα γίνεται αναφορά στην επόμενη εικόνα, η οποία απεικονίζει

Διαβάστε περισσότερα

ΠΡΟΒΛΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ

ΠΡΟΒΛΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ ΠΡΟΒΛΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ Η ανάλυση προβλημάτων δύο διαστάσεων με τη μέθοδο των Πεπερασμένων Στοιχείων περιλαμβάνει τα ίδια βήματα όπως και στα προβλήματα μιας διάστασης. Η ανάλυση γίνεται λίγο πιο πολύπλοκη

Διαβάστε περισσότερα

Εισαγωγή Αλγόριθµοι Αποτελέσµατα Επίλογος Ορισµός του Προβλήµατος Ευθυγράµµιση : Εύρεση ενός γεωµετρικού µετασχηµατισµού που ϕέρνει κοντά δύο τρισδιάσ

Εισαγωγή Αλγόριθµοι Αποτελέσµατα Επίλογος Ορισµός του Προβλήµατος Ευθυγράµµιση : Εύρεση ενός γεωµετρικού µετασχηµατισµού που ϕέρνει κοντά δύο τρισδιάσ Εισαγωγή Αλγόριθµοι Αποτελέσµατα Επίλογος Αλγόριθµοι Ευθυγράµµισης Τρισδιάστατων Αντικειµένων Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό & Καποδιστριακό Πανεπιστήµιο Αθηνών 20 Οκτωβρίου 2005 Εισαγωγή

Διαβάστε περισσότερα

Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Ενότητα 2 η : Δισδιάστατα Σήματα & Συστήματα Μέρος 2

Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Ενότητα 2 η : Δισδιάστατα Σήματα & Συστήματα Μέρος 2 Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Ενότητα 2 η : Δισδιάστατα Σήματα & Συστήματα Μέρος 2 Καθ. Κωνσταντίνος Μπερμπερίδης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής Σκοποί ενότητας Παρουσιάση πλάτους

Διαβάστε περισσότερα

ισδιάστατοι μετασχηματισμοί ΚΕΦΑΛΑΙΟ 4: ισδιάστατοι γεωμετρικοί μετασχηματισμοί

ισδιάστατοι μετασχηματισμοί ΚΕΦΑΛΑΙΟ 4: ισδιάστατοι γεωμετρικοί μετασχηματισμοί ΚΕΦΑΛΑΙΟ 4: ισδιάστατοι γεωμετρικοί μετασχηματισμοί Πολλά προβλήματα λύνονται μέσω δισδιάστατων απεικονίσεων ενός μοντέλου. Μεταξύ αυτών και τα προβλήματα κίνησης, όπως η κίνηση ενός συρόμενου μηχανισμού.

Διαβάστε περισσότερα

Κατάτµηση Εικόνων: Ανίχνευση Ακµών και Κατάτµηση µε Κατωφλίωση

Κατάτµηση Εικόνων: Ανίχνευση Ακµών και Κατάτµηση µε Κατωφλίωση ΤΨΣ 50 Ψηφιακή Επεξεργασία Εικόνας Κατάτµηση Εικόνων: Ανίχνευση Ακµών και Κατάτµηση µε Κατωφλίωση Τµήµα ιδακτικής της Τεχνολογίας και Ψηφιακών Συστηµάτων Πανεπιστήµιο Πειραιώς Περιεχόµενα Βιβλιογραφία

Διαβάστε περισσότερα

Οπτική Μοντελοποίηση Ανθρώπινου Προσώπου με Εφαρμογές σε Αναγνώριση

Οπτική Μοντελοποίηση Ανθρώπινου Προσώπου με Εφαρμογές σε Αναγνώριση Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τομέας Σημάτων Ελέγχου και Ρομποτικής Οπτική Μοντελοποίηση Ανθρώπινου Προσώπου με Εφαρμογές σε Αναγνώριση Επιβλέπων: καθ. Πέτρος Μαραγκός Ορισμός

Διαβάστε περισσότερα

Μοντέλο φωτισμού Phong

Μοντέλο φωτισμού Phong ΚΕΦΑΛΑΙΟ 9. Στο προηγούμενο κεφάλαιο παρουσιάσθηκαν οι αλγόριθμοι απαλοιφής των πίσω επιφανειών και ακμών. Απαλοίφοντας λοιπόν τις πίσω επιφάνειες και ακμές ενός τρισδιάστατου αντικειμένου, μπορούμε να

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 1: ΟΡΙΣΜΟΣ ΠΕΔΙΟ ΟΡΙΣΜΟΥ ΠΡΑΞΕΙΣ ΣΥΝΑΡΤΗΣΕΩΝ ΓΡΑΦΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ ΒΑΣΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ ΛΥΜΕΝΑ ΘΕΜΑΤΑ ΘΕΜΑ Α

ΕΝΟΤΗΤΑ 1: ΟΡΙΣΜΟΣ ΠΕΔΙΟ ΟΡΙΣΜΟΥ ΠΡΑΞΕΙΣ ΣΥΝΑΡΤΗΣΕΩΝ ΓΡΑΦΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ ΒΑΣΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ ΛΥΜΕΝΑ ΘΕΜΑΤΑ ΘΕΜΑ Α ΚΕΦΑΛΑΙΟ 1 ο : ΔΙΑΦΟΡΙΚΟΣ ΛΟΓΙΣΜΟΣ ΕΝΟΤΗΤΑ 1: ΟΡΙΣΜΟΣ ΠΕΔΙΟ ΟΡΙΣΜΟΥ ΠΡΑΞΕΙΣ ΣΥΝΑΡΤΗΣΕΩΝ ΓΡΑΦΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ ΒΑΣΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ ΛΥΜΕΝΑ ΘΕΜΑΤΑ Ερώτηση θεωρίας 1 ΘΕΜΑ Α Τι ονομάζουμε πραγματική συνάρτηση

Διαβάστε περισσότερα

ΤΕΧΝΙΚΗ ΜΗΧΑΝΙΚΗ Ι ΕΙΣΑΓΩΓΙΚΕΣ ΕΝΝΟΙΕΣ- ΥΝΑΜΕΙΣ ΣΤΟ ΕΠΙΠΕ Ο ΚΑΙ ΣΤΟ

ΤΕΧΝΙΚΗ ΜΗΧΑΝΙΚΗ Ι ΕΙΣΑΓΩΓΙΚΕΣ ΕΝΝΟΙΕΣ- ΥΝΑΜΕΙΣ ΣΤΟ ΕΠΙΠΕ Ο ΚΑΙ ΣΤΟ ΤΕΧΝΙΚΗ ΜΗΧΑΝΙΚΗ Ι ΕΙΣΑΓΩΓΙΚΕΣ ΕΝΝΟΙΕΣ- ΥΝΑΜΕΙΣ ΣΤΟ ΕΠΙΠΕ Ο ΚΑΙ ΣΤΟ ΧΩΡΟ Στη συνέχεια θα δοθούν ορισμένες βασικές έννοιες μαθηματικών και φυσικήςμηχανικής που είναι απαραίτητες για την κατανόηση του μαθήματος

Διαβάστε περισσότερα

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι 21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB Αλγόριθμος Διαδικασία Παράμετροι Τι είναι Αλγόριθμος; Οι οδηγίες που δίνουμε με λογική σειρά, ώστε να εκτελέσουμε μια διαδικασία ή να επιλύσουμε ένα

Διαβάστε περισσότερα

Β Γραφικές παραστάσεις - Πρώτο γράφημα Σχεδιάζοντας το μήκος της σανίδας συναρτήσει των φάσεων της σελήνης μπορείτε να δείτε αν υπάρχει κάποιος συσχετισμός μεταξύ των μεγεθών. Ο συνήθης τρόπος γραφικής

Διαβάστε περισσότερα

Μεταπτυχιακό Πρόγραμμα «Γεωχωρικές Τεχνολογίες» Ψηφιακή Επεξεργασία Εικόνας. Εισηγητής Αναστάσιος Κεσίδης

Μεταπτυχιακό Πρόγραμμα «Γεωχωρικές Τεχνολογίες» Ψηφιακή Επεξεργασία Εικόνας. Εισηγητής Αναστάσιος Κεσίδης Μεταπτυχιακό Πρόγραμμα «Γεωχωρικές Τεχνολογίες» Ψηφιακή Επεξεργασία Εικόνας Εισηγητής Αναστάσιος Κεσίδης Ακμές και περιγράμματα Ακμές και περιγράμματα Γενικά Μεγάλο τμήμα της πληροφορίας που γίνεται αντιληπτή

Διαβάστε περισσότερα

Ε.Α.Υ. Υπολογιστική Όραση. Κατάτμηση Εικόνας

Ε.Α.Υ. Υπολογιστική Όραση. Κατάτμηση Εικόνας Ε.Α.Υ. Υπολογιστική Όραση Κατάτμηση Εικόνας Γεώργιος Παπαϊωάννου 2015 ΚΑΤΩΦΛΙΩΣΗ Κατωφλίωση - Γενικά Είναι η πιο απλή μέθοδος segmentation εικόνας Χωρίζουμε την εικόνα σε 2 (binary) ή περισσότερες στάθμες

Διαβάστε περισσότερα

Μεταπτυχιακό Πρόγραμμα «Γεωχωρικές Τεχνολογίες» Ψηφιακή Επεξεργασία Εικόνας. Εισηγητής Αναστάσιος Κεσίδης

Μεταπτυχιακό Πρόγραμμα «Γεωχωρικές Τεχνολογίες» Ψηφιακή Επεξεργασία Εικόνας. Εισηγητής Αναστάσιος Κεσίδης Μεταπτυχιακό Πρόγραμμα «Γεωχωρικές Τεχνολογίες» Ψηφιακή Επεξεργασία Εικόνας Εισηγητής Αναστάσιος Κεσίδης Τμηματοποίηση εικόνας Τμηματοποίηση εικόνας Γενικά Διαμερισμός μιας εικόνας σε διακριτές περιοχές

Διαβάστε περισσότερα

ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ

ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Β ΛΥΚΕΙΟΥ Καμπυλόγραμμες Κινήσεις Επιμέλεια: Αγκανάκης Α. Παναγιώτης, Φυσικός http://phyiccore.wordpre.com/ Βασικές Έννοιες Μέχρι στιγμής έχουμε μάθει να μελετάμε απλές κινήσεις,

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 3 ΒΕΛΤΙΩΣΗ ΕΙΚΟΝΑΣ ΜΕΛΕΤΗ ΙΣΤΟΓΡΑΜΜΑΤΟΣ. ( ) 1, αν Ι(i,j)=k hk ( ), διαφορετικά

ΑΣΚΗΣΗ 3 ΒΕΛΤΙΩΣΗ ΕΙΚΟΝΑΣ ΜΕΛΕΤΗ ΙΣΤΟΓΡΑΜΜΑΤΟΣ. ( ) 1, αν Ι(i,j)=k hk ( ), διαφορετικά ΑΣΚΗΣΗ 3 ΒΕΛΤΙΩΣΗ ΕΙΚΟΝΑΣ ΜΕΛΕΤΗ ΙΣΤΟΓΡΑΜΜΑΤΟΣ Αντικείμενο: Εξαγωγή ιστογράμματος εικόνας, απλοί μετασχηματισμοί με αυτό, ισοστάθμιση ιστογράμματος. Εφαρμογή βασικών παραθύρων με την βοήθεια του ΜΑΤLAB

Διαβάστε περισσότερα

5.1 Δραστηριότητα: Εισαγωγή στο ορισμένο ολοκλήρωμα

5.1 Δραστηριότητα: Εισαγωγή στο ορισμένο ολοκλήρωμα 5.1 Δραστηριότητα: Εισαγωγή στο ορισμένο ολοκλήρωμα Θέμα της δραστηριότητας Η δραστηριότητα εισάγει τους μαθητές στο ολοκλήρωμα Riemann μέσω του υπολογισμού του εμβαδού ενός παραβολικού χωρίου. Στόχοι

Διαβάστε περισσότερα

Μάθημα 8 ο. Ανίχνευση Ακμών ΤΜΗΥΠ / ΕΕΣΤ 1

Μάθημα 8 ο. Ανίχνευση Ακμών ΤΜΗΥΠ / ΕΕΣΤ 1 Μάθημα 8 ο Ανίχνευση Ακμών ΤΜΗΥΠ / ΕΕΣΤ 1 Εισαγωγή (1) Οι ακμές είναι βασικά χαρακτηριστικά της εικόνας. Ένας αποδεκτός ορισμός της ακμής είναι ο ακόλουθος: «Το σύνορο μεταξύ δύο ομοιογενών περιοχών με

Διαβάστε περισσότερα

Παρουσίαση 2 η : Αρχές εκτίμησης παραμέτρων Μέρος 1 ο

Παρουσίαση 2 η : Αρχές εκτίμησης παραμέτρων Μέρος 1 ο Εφαρμογές Ανάλυσης Σήματος στη Γεωδαισία Παρουσίαση η : Αρχές εκτίμησης παραμέτρων Μέρος ο Βασίλειος Δ. Ανδριτσάνος Αναπληρωτής Καθηγητής Γεώργιος Χλούπης Επίκουρος Καθηγητής Τμήμα Μηχανικών Τοπογραφίας

Διαβάστε περισσότερα

Υπάρχουν πολλά είδη Ηλιακών Ρολογιών. Τα σημαντικότερα και συχνότερα απαντόμενα είναι:

Υπάρχουν πολλά είδη Ηλιακών Ρολογιών. Τα σημαντικότερα και συχνότερα απαντόμενα είναι: ΗΛΙΑΚΑ ΩΡΟΛΟΓΙΑ Υπάρχουν πολλά είδη Ηλιακών Ρολογιών. Τα σημαντικότερα και συχνότερα απαντόμενα είναι: Οριζόντια Κατακόρυφα Ισημερινά Το παρακάτω άρθρο αναφέρεται στον τρόπο λειτουργίας αλλά και κατασκευής

Διαβάστε περισσότερα

Μάθημα 8 ο. Ανίχνευση Ακμών ΤΜΗΥΠ / ΕΕΣΤ 1

Μάθημα 8 ο. Ανίχνευση Ακμών ΤΜΗΥΠ / ΕΕΣΤ 1 Μάθημα 8 ο Ανίχνευση Ακμών ΤΜΗΥΠ / ΕΕΣΤ 1 Εισαγωγή (1) Οι ακμές είναι βασικά χαρακτηριστικά της εικόνας Προς το παρόν δεν υπάρχει ακόμα ένας ευρέως αποδεκτός ορισμός της ακμής. Εδώ θα θεωρούμε ως ακμή:

Διαβάστε περισσότερα

Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας. Παρουσίαση 12 η. Θεωρία Χρώματος και Επεξεργασία Έγχρωμων Εικόνων

Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας. Παρουσίαση 12 η. Θεωρία Χρώματος και Επεξεργασία Έγχρωμων Εικόνων Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Παρουσίαση 12 η Θεωρία Χρώματος και Επεξεργασία Έγχρωμων Εικόνων Εισαγωγή (1) Το χρώμα είναι ένας πολύ σημαντικός παράγοντας περιγραφής, που συχνά απλουστεύει κατά

Διαβάστε περισσότερα

Μέθοδοι πολυδιάστατης ελαχιστοποίησης

Μέθοδοι πολυδιάστατης ελαχιστοποίησης Μέθοδοι πολυδιάστατης ελαχιστοποίησης με παραγώγους Μέθοδοι πολυδιάστατης ελαχιστοποίησης Δ. Γ. Παπαγεωργίου Τμήμα Μηχανικών Επιστήμης Υλικών Πανεπιστήμιο Ιωαννίνων dpapageo@cc.uoi.gr http://pc64.materials.uoi.gr/dpapageo

Διαβάστε περισσότερα

Η ΜΕΘΟΔΟΣ PCA (Principle Component Analysis)

Η ΜΕΘΟΔΟΣ PCA (Principle Component Analysis) Η ΜΕΘΟΔΟΣ PCA (Principle Component Analysis) Η μέθοδος PCA (Ανάλυση Κύριων Συνιστωσών), αποτελεί μία γραμμική μέθοδο συμπίεσης Δεδομένων η οποία συνίσταται από τον επαναπροσδιορισμό των συντεταγμένων ενός

Διαβάστε περισσότερα

Εξισώσεις παρατηρήσεων στα τοπογραφικά δίκτυα

Εξισώσεις παρατηρήσεων στα τοπογραφικά δίκτυα Τοπογραφικά Δίκτυα και Υπολογισμοί 5 ο εξάμηνο, Ακαδημαϊκό Έτος 018-019 Εξισώσεις παρατηρήσεων στα τοπογραφικά δίκτυα Χριστόφορος Κωτσάκης Τμήμα Αγρονόμων και Τοπογράφων Μηχανικών Πολυτεχνική Σχολή, ΑΠΘ

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ ΕΦΑΡΜΟΣΜΕΝΗΣ ΟΠΤΙΚΗΣ

ΕΡΓΑΣΤΗΡΙΟ ΕΦΑΡΜΟΣΜΕΝΗΣ ΟΠΤΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΕΦΑΡΜΟΣΜΕΝΗΣ ΟΠΤΙΚΗΣ Άσκηση 4: Σφάλματα φακών: Ι Σφαιρική εκτροπή Εξεταζόμενες γνώσεις: σφάλματα σφαιρικής εκτροπής. Α. Γενικά περί σφαλμάτων φακών Η βασική σχέση του Gauss 1/s +1/s = 1/f που

Διαβάστε περισσότερα

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΤΕΧΝΙΚΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΤΕΧΝΙΚΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΤΕΧΝΙΚΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΕΥΑΓΓΕΛΙΑΣ Π. ΛΟΥΚΟΓΕΩΡΓΑΚΗ Διπλωματούχου Πολιτικού Μηχανικού ΟΛΟΚΛΗΡΩΜΕΝΟ

Διαβάστε περισσότερα

9. Τοπογραφική σχεδίαση

9. Τοπογραφική σχεδίαση 9. Τοπογραφική σχεδίαση 9.1 Εισαγωγή Το κεφάλαιο αυτό εξετάζει τις παραμέτρους, μεθόδους και τεχνικές της τοπογραφικής σχεδίασης. Η προσέγγιση του κεφαλαίου γίνεται τόσο για την περίπτωση της συμβατικής

Διαβάστε περισσότερα

Prost S: Οδοποιΐα Σιδηροδρομική Υδραυλικά έργα

Prost S: Οδοποιΐα Σιδηροδρομική Υδραυλικά έργα Prost S: Οδοποιΐα Σιδηροδρομική Υδραυλικά έργα Χαρακτηριστικά Οριζοντιογραφία Στο γραφικό περιβάλλον της εφαρμογής είναι δυνατή η σχεδίαση οριζοντιογραφιών δρόμων, σιδηροδρομικών γραμμών, ανοικτών και

Διαβάστε περισσότερα

Στ Τάξη. Α/Α Μαθηματικό περιεχόμενο Δείκτες Επιτυχίας Ώρες Διδ. 1 ENOTHTA 1

Στ Τάξη. Α/Α Μαθηματικό περιεχόμενο Δείκτες Επιτυχίας Ώρες Διδ. 1 ENOTHTA 1 Ενδεικτική Οργάνωση Ενοτήτων Στ Τάξη Α/Α Μαθηματικό περιεχόμενο Δείκτες Επιτυχίας Ώρες Διδ. 1 ENOTHTA 1 15 Αρ3.1 Απαγγέλουν, διαβάζουν, γράφουν και αναγνωρίζουν ποσότητες αριθμών Επανάληψη μέχρι το 1 000

Διαβάστε περισσότερα

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΡΑΦΙΚΑ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκων: Ν. ΝΙΚΟΛΑΙΔΗΣ

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΡΑΦΙΚΑ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκων: Ν. ΝΙΚΟΛΑΙΔΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΡΑΦΙΚΑ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκων: Ν. ΝΙΚΟΛΑΙΔΗΣ 1 η Σειρά Ασκήσεων Πλαίσια, γεωμετρικοί μετασχηματισμοί και προβολές 1. Y B (-1,2,0) A (-1,1,0) A (1,1,0)

Διαβάστε περισσότερα

Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Ενότητα 4 η : Βελτίωση Εικόνας. Καθ. Κωνσταντίνος Μπερμπερίδης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Ενότητα 4 η : Βελτίωση Εικόνας. Καθ. Κωνσταντίνος Μπερμπερίδης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Ενότητα 4 η : Βελτίωση Εικόνας Καθ. Κωνσταντίνος Μπερμπερίδης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής Σκοποί ενότητας Εισαγωγή στις τεχνικές βελτίωσης εικόνας

Διαβάστε περισσότερα

Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας. Παρουσίαση Νο. 3. Δισδιάστατα σήματα και συστήματα #2

Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας. Παρουσίαση Νο. 3. Δισδιάστατα σήματα και συστήματα #2 Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Ακαδημαϊκό Έτος 2015-16 Παρουσίαση Νο. 3 Δισδιάστατα σήματα και συστήματα #2 Πληροφορία πλάτους-φάσης (1/4) Ο μετασχηματισμός Fourier διακριτού χρόνου είναι μιγαδική

Διαβάστε περισσότερα

Αναγνώριση Προτύπων Ι

Αναγνώριση Προτύπων Ι Αναγνώριση Προτύπων Ι Ενότητα 3: Στοχαστικά Συστήματα Αν. Καθηγητής Δερματάς Ευάγγελος Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

ΒΙΟΜΗΧΑΝΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ

ΒΙΟΜΗΧΑΝΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ ΒΙΟΜΗΧΑΝΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ Συµπληρωµατικές Σηµειώσεις Προχωρηµένο Επίπεδο Επεξεργασίας Εικόνας Σύνθεση Οπτικού Μωσαϊκού ρ. Γ. Χ. Καρράς Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Μηχανολόγων Μηχανικών Τοµέας Μηχανολογικών

Διαβάστε περισσότερα

ΜΕΤΡΗΣΕΙΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΥΨΗΛΩΝ ΤΑΣΕΩΝ

ΜΕΤΡΗΣΕΙΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΥΨΗΛΩΝ ΤΑΣΕΩΝ Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Ηλεκτρικής Ισχύος Εργαστήριο Υψηλών Τάσεων ΜΕΤΡΗΣΕΙΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΥΨΗΛΩΝ ΤΑΣΕΩΝ (Αριθμητικές μέθοδοι υπολογισμού

Διαβάστε περισσότερα

Ανάκτηση πολυμεσικού περιεχομένου

Ανάκτηση πολυμεσικού περιεχομένου Ανάκτηση πολυμεσικού περιεχομένου Ανίχνευση / αναγνώριση προσώπων Ανίχνευση / ανάγνωση κειμένου Ανίχνευση αντικειμένων Οπτικές λέξεις Δεικτοδότηση Σχέσεις ομοιότητας Κατηγοριοποίηση ειδών μουσικής Διάκριση

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 2. Σταύρος Παπαϊωάννου

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 2. Σταύρος Παπαϊωάννου ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ Μαθηματικά Σταύρος Παπαϊωάννου Ιούνιος 015 Τίτλος Μαθήματος Περιεχόμενα Χρηματοδότηση... Error! Bookmark not defined. Σκοποί Μαθήματος (Επικεφαλίδα

Διαβάστε περισσότερα

Αριθμητική Ανάλυση & Εφαρμογές

Αριθμητική Ανάλυση & Εφαρμογές Αριθμητική Ανάλυση & Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 2017-2018 Υπολογισμοί και Σφάλματα Παράσταση Πραγματικών Αριθμών Συστήματα Αριθμών Παράσταση Ακέραιου

Διαβάστε περισσότερα

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (Εξ. Ιουνίου - 02/07/08) ΕΠΙΛΕΓΜΕΝΕΣ ΑΠΑΝΤΗΣΕΙΣ

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (Εξ. Ιουνίου - 02/07/08) ΕΠΙΛΕΓΜΕΝΕΣ ΑΠΑΝΤΗΣΕΙΣ Ονοματεπώνυμο:......... Α.Μ....... Ετος... ΑΙΘΟΥΣΑ:....... I. (περί τις 55μ. = ++5++. Σωστό ή Λάθος: ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (Εξ. Ιουνίου - //8 ΕΠΙΛΕΓΜΕΝΕΣ ΑΠΑΝΤΗΣΕΙΣ (αʹ Αν AB = BA όπου A, B τετραγωνικά και

Διαβάστε περισσότερα

Κεφάλαιο 4: Επιλογή σημείου παραγωγής

Κεφάλαιο 4: Επιλογή σημείου παραγωγής Κ4.1 Μέθοδος ανάλυσης νεκρού σημείου για την επιλογή διαδικασίας παραγωγής ή σημείου παραγωγής Επιλογή διαδικασίας παραγωγής Η μέθοδος ανάλυσης νεκρού για την επιλογή διαδικασίας παραγωγής αναγνωρίζει

Διαβάστε περισσότερα

ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ. Μια παράσταση που περιέχει πράξεις με μεταβλητές (γράμματα) και αριθμούς καλείται αλγεβρική, όπως για παράδειγμα η : 2x+3y-8

ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ. Μια παράσταση που περιέχει πράξεις με μεταβλητές (γράμματα) και αριθμούς καλείται αλγεβρική, όπως για παράδειγμα η : 2x+3y-8 ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ Άλγεβρα 1 ο Κεφάλαιο 1. Τι ονομάζουμε αριθμητική και τι αλγεβρική παράσταση; Να δώσετε από ένα παράδειγμα. Μια παράσταση που περιέχει πράξεις με αριθμούς, καλείται αριθμητική παράσταση,

Διαβάστε περισσότερα

ΜΕΓΙΣΤΙΚΟΣ ΤΕΛΕΣΤΗΣ 18 Σεπτεμβρίου 2014

ΜΕΓΙΣΤΙΚΟΣ ΤΕΛΕΣΤΗΣ 18 Σεπτεμβρίου 2014 ΜΕΓΙΣΤΙΚΟΣ ΤΕΛΕΣΤΗΣ 18 Σεπτεμβρίου 2014 Περιεχόμενα 1 Εισαγωγή 2 2 Μεγιστικός τελέστης στην μπάλα 2 2.1 Βασικό θεώρημα........................ 2 2.2 Γενική περίπτωση μπάλας.................. 6 2.2.1 Στο

Διαβάστε περισσότερα

Φυσικά μεγέθη. Φυσική α λυκείου ΕΙΣΑΓΩΓΗ. Όλα τα φυσικά μεγέθη τα χωρίζουμε σε δύο κατηγορίες : Α. τα μονόμετρα. Β.

Φυσικά μεγέθη. Φυσική α λυκείου ΕΙΣΑΓΩΓΗ. Όλα τα φυσικά μεγέθη τα χωρίζουμε σε δύο κατηγορίες : Α. τα μονόμετρα. Β. ΕΙΣΑΓΩΓΗ Φυσικά μεγέθη Όλα τα φυσικά μεγέθη τα χωρίζουμε σε δύο κατηγορίες : Α. τα μονόμετρα Β. τα διανυσματικά Μονόμετρα ονομάζουμε τα μεγέθη εκείνα τα οποία για να τα γνωρίζουμε χρειάζεται να ξέρουμε

Διαβάστε περισσότερα

Αναγνώριση Προτύπων Ι

Αναγνώριση Προτύπων Ι Αναγνώριση Προτύπων Ι Ενότητα 2: Δομικά Συστήματα Αν. Καθηγητής Δερματάς Ευάγγελος Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 1. Σταύρος Παπαϊωάννου

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 1. Σταύρος Παπαϊωάννου ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ Μαθηματικά Σταύρος Παπαϊωάννου Ιούνιος 05 Τίτλος Μαθήματος Περιεχόμενα Χρηματοδότηση.. Σφάλμα! Δεν έχει οριστεί σελιδοδείκτης. Σκοποί Μαθήματος

Διαβάστε περισσότερα

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοημοσύνη Ι» 5 o Φροντιστήριο

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοημοσύνη Ι» 5 o Φροντιστήριο Πρόβλημα ο Ασκήσεις Φροντιστηρίου 5 o Φροντιστήριο Δίνεται το παρακάτω σύνολο εκπαίδευσης: # Είσοδος Κατηγορία 0 0 0 Α 2 0 0 Α 0 Β 4 0 0 Α 5 0 Β 6 0 0 Α 7 0 Β 8 Β α) Στον παρακάτω κύβο τοποθετείστε τα

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ. Διάλεξη 3: Περιγραφή αριθμητικών μεθόδων (συνέχεια)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ. Διάλεξη 3: Περιγραφή αριθμητικών μεθόδων (συνέχεια) ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ Διάλεξη 3: Περιγραφή αριθμητικών μεθόδων (συνέχεια) Χειμερινό εξάμηνο 2008 Προηγούμενη παρουσίαση... Εξετάσαμε

Διαβάστε περισσότερα

ΜΑΘΗΜΑΤΑ ΜΑΘΗΜΑΤΙΚΑ ΘΕΤΙΚΟΥ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Β ΛΥΚΕΙΟΥ

ΜΑΘΗΜΑΤΑ ΜΑΘΗΜΑΤΙΚΑ ΘΕΤΙΚΟΥ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Β ΛΥΚΕΙΟΥ ΜΑΘΗΜΑΤΑ ΜΑΘΗΜΑΤΙΚΑ ΘΕΤΙΚΟΥ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Β ΛΥΚΕΙΟΥ ΚΕΦΑΛΑΙΟ 1 ο : ΔΙΑΝΥΣΜΑΤΑ 1 ΜΑΘΗΜΑ 1 ο +2 ο ΕΝΝΟΙΑ ΔΙΑΝΥΣΜΑΤΟΣ Διάνυσμα ορίζεται ένα προσανατολισμένο ευθύγραμμο τμήμα, δηλαδή ένα ευθύγραμμο τμήμα

Διαβάστε περισσότερα

Κεφάλαιο 4: Επιλογή σημείου παραγωγής

Κεφάλαιο 4: Επιλογή σημείου παραγωγής Κεφάλαιο 4: Επιλογή σημείου παραγωγής Κ4.1 Μέθοδος ανάλυσης νεκρού σημείου για την επιλογή διαδικασίας παραγωγής ή σημείου παραγωγής Επιλογή διαδικασίας παραγωγής Η μέθοδος ανάλυσης νεκρού για την επιλογή

Διαβάστε περισσότερα

ΦΙΛΤΡΟ KALMAN ΔΙΑΚΡΙΤΟΥ ΧΡΟΝΟΥ

ΦΙΛΤΡΟ KALMAN ΔΙΑΚΡΙΤΟΥ ΧΡΟΝΟΥ 1 ΦΙΛΤΡΟ KALMAN ΔΙΑΚΡΙΤΟΥ ΧΡΟΝΟΥ Σε αυτό το μέρος της πτυχιακής θα ασχοληθούμε λεπτομερώς με το φίλτρο kalman και θα δούμε μια καινούρια έκδοση του φίλτρου πάνω στην εφαρμογή της γραμμικής εκτίμησης διακριτού

Διαβάστε περισσότερα

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D. Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D. Μη γραμμικός προγραμματισμός: βελτιστοποίηση χωρίς περιορισμούς Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών ΤμήμαΠληροφορικής Διάλεξη 7-8 η /2017 Τι παρουσιάστηκε

Διαβάστε περισσότερα

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Μέθοδοι μονοδιάστατης ελαχιστοποίησης Βασικές αρχές μεθόδων ελαχιστοποίησης Μέθοδοι μονοδιάστατης ελαχιστοποίησης Οι μέθοδοι ελαχιστοποίησης είναι επαναληπτικές. Ξεκινώντας από μια αρχική προσέγγιση του ελαχίστου (την συμβολίζουμε ) παράγουν

Διαβάστε περισσότερα

Διάλεξη #10. Διδάσκων: Φοίβος Μυλωνάς. Γραφικά με υπολογιστές. Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Χειμερινό εξάμηνο.

Διάλεξη #10. Διδάσκων: Φοίβος Μυλωνάς. Γραφικά με υπολογιστές. Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Χειμερινό εξάμηνο. Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Χειμερινό εξάμηνο Γραφικά με υπολογιστές Διδάσκων: Φοίβος Μυλωνάς fmlonas@ionio.gr Διάλεξη # Δ Μετασχηματισμοί (γενικά) Γραμμικοί Μετασχηματισμοί Απλοί Συσχετισμένοι

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Φυσική για Μηχανικούς

Φυσική για Μηχανικούς Φυσική για Μηχανικούς Μηχανική Εικόνα: Isaac Newton: Θεωρείται πατέρας της Κλασικής Φυσικής, καθώς ξεκινώντας από τις παρατηρήσεις του Γαλιλαίου αλλά και τους νόμους του Κέπλερ για την κίνηση των πλανητών

Διαβάστε περισσότερα

Εισαγωγή στο 3DS Max 2009

Εισαγωγή στο 3DS Max 2009 Μάθημα 1ο Εισαγωγή στο 3DS Max 2009 Σε αυτό το μάθημα πραγματοποιείται εκμάθηση του περιβάλλοντος του προγράμματος 3DS Max 2009. Το 3D Studio Max είναι ένα από τα ισχυρότερα προγράμματα δημιουργίας και

Διαβάστε περισσότερα

Ενότητα 2: Οι Θεµελιώδεις Αρχές των Ψηφιακών Εικόνων

Ενότητα 2: Οι Θεµελιώδεις Αρχές των Ψηφιακών Εικόνων Ενότητα 2: Οι Θεµελιώδεις Αρχές των Ψηφιακών Εικόνων Δειγµατοληψία και Κβαντισµός: Μια εικόνα (µπορεί να) είναι συνεχής τόσο ως προς τις συντεταγµένες x, y όσο και ως προς το πλάτος. Για να τη µετατρέψουµε

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ ΟΡΙΖΟΝΤΙΑ ΒΟΛΗ ΘΕΩΡΙΑ

ΚΕΦΑΛΑΙΟ ΟΡΙΖΟΝΤΙΑ ΒΟΛΗ ΘΕΩΡΙΑ ΚΕΦΑΛΑΙΟ o ΟΡΙΖΟΝΤΙΑ ΒΟΛΗ ΘΕΩΡΙΑ.) Τ ι γνωρίζετε για την αρχή της ανεξαρτησίας των κινήσεων; Σε πολλές περιπτώσεις ένα σώμα εκτελεί σύνθετη κίνηση, δηλαδή συμμετέχει σε περισσότερες από μία κινήσεις. Για

Διαβάστε περισσότερα

ΜΕΘΟΔΟΣ ΠΕΠΕΡΑΣΜΕΝΩΝ ΣΤΟΙΧΕΙΩΝ

ΜΕΘΟΔΟΣ ΠΕΠΕΡΑΣΜΕΝΩΝ ΣΤΟΙΧΕΙΩΝ ΜΕΘΟΔΟΣ ΠΕΠΕΡΑΣΜΕΝΩΝ ΣΤΟΙΧΕΙΩΝ Βασίζεται στην εφαρμογή των παρακάτω βημάτων:. Το φυσικό πεδίο αναπαριστάται με ένα σύνολο απλών γεωμετρικών σχημάτων που ονομάζονται Πεπερασμένα Στοιχεία.. Σε κάθε στοιχείο

Διαβάστε περισσότερα

Θεωρία Παιγνίων και Αποφάσεων. Ενότητα 5: Εύρεση σημείων ισορροπίας σε παίγνια μηδενικού αθροίσματος. Ε. Μαρκάκης. Επικ. Καθηγητής

Θεωρία Παιγνίων και Αποφάσεων. Ενότητα 5: Εύρεση σημείων ισορροπίας σε παίγνια μηδενικού αθροίσματος. Ε. Μαρκάκης. Επικ. Καθηγητής Θεωρία Παιγνίων και Αποφάσεων Ενότητα 5: Εύρεση σημείων ισορροπίας σε παίγνια μηδενικού αθροίσματος Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Παίγνια μηδενικού αθροίσματος PessimisIc play Αμιγείς max-min και

Διαβάστε περισσότερα

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Αριθμητική Ολοκλήρωση Εισαγωγή Έστω ότι η f είναι μία φραγμένη συνάρτηση στο πεπερασμένο

Διαβάστε περισσότερα

Φυσική για Μηχανικούς

Φυσική για Μηχανικούς Φυσική για Μηχανικούς Μηχανική Εικόνα: Isaac Newton: Θεωρείται πατέρας της Κλασικής Φυσικής, καθώς ξεκινώντας από τις παρατηρήσεις του Γαλιλαίου αλλά και τους νόμους του Κέπλερ για την κίνηση των πλανητών

Διαβάστε περισσότερα

Εφαρμοσμένα Μαθηματικά

Εφαρμοσμένα Μαθηματικά Εφαρμοσμένα Μαθηματικά ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ενότητα 6: Διπλά Ολοκληρώματα Δρ. Περικλής Παπαδόπουλος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε Κάντε κλικ για

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ με το EXCEL

ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ με το EXCEL ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ με το EXCEL ΠΡΟΒΛΗΜΑ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ( Μαθηματικών Γ Γυμνασίου έκδοση ΙΑ 99 σελ. 236 / Έχει γίνει μετατροπή των δρχ. σε euro.) Ένας κτηνοτρόφος πρόκειται να αγοράσει

Διαβάστε περισσότερα

ΕΠΑΝΑΛΗΨΗ Α ΓΥΜΝΑΣΙΟΥ

ΕΠΑΝΑΛΗΨΗ Α ΓΥΜΝΑΣΙΟΥ ΕΠΑΝΑΛΗΨΗ Α ΓΥΜΝΑΣΙΟΥ ΘΕΩΡΙΑ ΑΛΓΕΒΡΑ ΚΕΦΑΛΑΙΟ Α.1. 1) Ποιοι φυσικοί αριθμοί λέγονται άρτιοι και ποιοι περιττοί; ( σ. 11 ) 2) Από τι καθορίζεται η αξία ενός ψηφίου σ έναν φυσικό αριθμό; ( σ. 11 ) 3) Τι

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

Παρουσίαση Νο. 5 Βελτίωση εικόνας

Παρουσίαση Νο. 5 Βελτίωση εικόνας Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Παρουσίαση Νο. 5 Βελτίωση εικόνας Εισαγωγή Η βελτίωση γίνεται σε υποκειμενική βάση Η απόδοση εξαρτάται από την εφαρμογή Οι τεχνικές είναι συνήθως ad hoc Τονίζει

Διαβάστε περισσότερα

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Ενότητα 2 : Ζωγραφίζοντας με το ΒΥΟΒ -1- Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα α. Θέση και προσανατολισμός της μορφής Η θέση της κάθε μορφής στο σκηνικό προσδιορίζεται

Διαβάστε περισσότερα

10. Εισαγωγή στις Μεθόδους Πεπερασμένων Στοιχείων (ΜΠΣ)

10. Εισαγωγή στις Μεθόδους Πεπερασμένων Στοιχείων (ΜΠΣ) 10. Εισαγωγή στις Μεθόδους Πεπερασμένων Στοιχείων (ΜΠΣ) Χειμερινό εξάμηνο 2018 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Εισαγωγή Διατύπωση εξισώσεων ΜΠΣ βάσει μετακινήσεων

Διαβάστε περισσότερα

Στο προοπτικό ανάγλυφο για τη ευθεία του ορίζοντα χρησιμοποιούμε ένα δεύτερο κατακόρυφο επίπεδο Π 1

Στο προοπτικό ανάγλυφο για τη ευθεία του ορίζοντα χρησιμοποιούμε ένα δεύτερο κατακόρυφο επίπεδο Π 1 ΠΡΟΟΠΤΙΚΟ ΑΝΑΓΛΥΦΟ Το προοπτικό ανάγλυφο, όπως το επίπεδο προοπτικό, η στερεοσκοπική εικόνα κ.λπ. είναι τρόποι παρουσίασης και απεικόνισης των αρχιτεκτονικών συνθέσεων. Το προοπτικό ανάγλυφο είναι ένα

Διαβάστε περισσότερα

2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ

2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ 2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ Η σάρωση ενός εγγράφου εισάγει στον υπολογιστή μια εικόνα, ενώ η εκτύπωση μεταφέρει στο χαρτί μια εικόνα από αυτόν. Για να αντιληφθούμε επομένως τα χαρακτηριστικά των σαρωτών

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

Μεταπτυχιακό Πρόγραμμα «Γεωχωρικές Τεχνολογίες» Ψηφιακή Επεξεργασία Εικόνας. Εισηγητής Αναστάσιος Κεσίδης

Μεταπτυχιακό Πρόγραμμα «Γεωχωρικές Τεχνολογίες» Ψηφιακή Επεξεργασία Εικόνας. Εισηγητής Αναστάσιος Κεσίδης Μεταπτυχιακό Πρόγραμμα «Γεωχωρικές Τεχνολογίες» Ψηφιακή Επεξεργασία Εικόνας Εισηγητής Αναστάσιος Κεσίδης Εισαγωγή Τι είναι η εικόνα; Μια οπτική αναπαράσταση με την μορφή μιας συνάρτησης f(x, y) όπου η

Διαβάστε περισσότερα

ΕΡΩΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ 5 ο εξάμηνο

ΕΡΩΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ 5 ο εξάμηνο ΕΡΩΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ 5 ο εξάμηνο ΓΕΝΙΚΕΣ ΕΝΝΟΙΕΣ 1) Ποιός είναι ο βασικός ρόλος και η χρησιμότητα των δικτύων στη Γεωδαισία και την Τοπογραφία; 2) Αναφέρετε ορισμένες

Διαβάστε περισσότερα

Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 7: Η επιλογή των πιθανοτικών κατανομών εισόδου

Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 7: Η επιλογή των πιθανοτικών κατανομών εισόδου Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 7: Η επιλογή των πιθανοτικών κατανομών εισόδου Γαροφαλάκης Ιωάννης Πολυτεχνική Σχολή Τμήμα Μηχ/κών Η/Υ & Πληροφορικής Περιεχόμενα ενότητας Εισαγωγή Συλλογή

Διαβάστε περισσότερα

ΠΑΡΑΔΕΙΓΜΑΤΑ ΘΕΜΑ Β. Να βρείτε τις ασύμπτωτες της γραφικής παράστασης της συνάρτησης f με τύπο

ΠΑΡΑΔΕΙΓΜΑΤΑ ΘΕΜΑ Β. Να βρείτε τις ασύμπτωτες της γραφικής παράστασης της συνάρτησης f με τύπο ΚΕΦΑΛΑΙΟ 3ο: ΔΙΑΦΟΡΙΚΟΣ ΛΟΓΙΣΜΟΣ ΕΝΟΤΗΤΑ : ΑΣΥΜΠΤΩΤΕΣ - ΚΑΝΟΝΕΣ DE L HOSPITAL - ΜΕΛΕΤΗ ΣΥΝΑΡΤΗΣΗΣ [Κεφ..9: Ασύμπτωτες Κανόνες de l Hospital Μέρος Β του σχολικού βιβλίου]. ΠΑΡΑΔΕΙΓΜΑΤΑ Παράδειγμα. ΘΕΜΑ

Διαβάστε περισσότερα