Preview only show first 10 pages with watermark. For full document please download

διπλωματική εργασία. του φοιτητή του τμήματος ηλεκτρολόγων μηχανικών και τεχνολογίας υπολογιστών της πολυτεχνικής σχολής του πανεπιστημίου πατρών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΑΣ (Τ.&Τ.Π.) Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών

   EMBED


Share

Transcript

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΑΣ (Τ.&Τ.Π.) Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Τσέκα Γεωργίου του Διονυσίου Αριθμός Μητρώου : Θέμα : «Κατασκευή ενσωματωμένου συστήματος πλοήγησης ρομποτικού οχήματος με μεθόδους μηχανικής όρασης» Επιβλέπων Αν. Καθηγητής Ε. ΔΕΡΜΑΤΑΣ Αριθμός Διπλωματικής Εργασίας Πάτρα, Σεπτέμβριος 2016 2 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα «Κατασκευή ενσωματωμένου συστήματος πλοήγησης ρομποτικού οχήματος με μεθόδους μηχανικής όρασης» Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Τσέκα Γεωργίου του Διονυσίου Αριθμός Μητρώου: Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις.../../ Ο Επιβλέπων Ο Διευθυντής του Τομέα Ε. Δερματάς Ν. Φακωτάκης Αναπληρωτής καθηγητής Καθηγητής 3 4 Αριθμός Διπλωματικής Εργασίας: Θέμα: «Κατασκευή ενσωματωμένου συστήματος πλοήγησης ρομποτικού οχήματος με μεθόδους μηχανικής όρασης» Φοιτητής: Επιβλέπων: Τσέκας Γεώργιος Ευάγγελος Δερματάς Αναπληρωτής καθηγητής Περίληψη Η παρούσα εργασία έχει ως αντικείμενο το σχεδιασμό ενός ενσωματωμένου συστήματος πλοήγησης ρομποτικού οχήματος με μεθόδους μηχανικής όρασης και στόχο τη δημιουργία και εφαρμογή των κατάλληλων αλγορίθμων για την προσομοίωση ενός συστήματος πραγματικού χρόνου. Η μέθοδος που θα εφαρμοστεί αποτελείται από έναν αναπτυγμένο αλγόριθμο μηχανικής όρασης που βασίζεται στην εκτίμηση της οπτικής ροής. Η προσομοίωση γίνεται με τη χρήση μίας μόνο κάμερας που αποτελεί το μοναδικό αισθητήρα του οχήματος. Η στρατηγική ελέγχου αναπτύσσεται μέσα από τις πληροφορίες που αποσπώνται από την οπτική ροή, η οποία υπολογίζεται με μεθόδους επεξεργασίας εικόνας, ενώ γίνεται επιτυχής αποφυγή συγκρούσεων και πλοήγηση σε χώρο με εμπόδια. Abstract The subject of this diploma thesis is the construction of an embedded system of navigation for a robotic vehicle using machine vision methods and the main goal is to develop and apply proper algorithms in order to simulate a real system. The applied method consists of a machine vision developed algorithm based on the estimation of optical flow. The simulation s main demand is the use of a single pinhole camera. The control strategy is being developed through the extracted information from the computed optical flow, which is calculated using image processing methods, while successful obstacle avoidance and navigation in a room with obstacles is achieved. 5 Ευχαριστίες Η παρούσα εργασία εκπονήθηκε κατά το ακαδημαικό έτος στη διάρκεια της φοίτησης μου στο έκτο έτος σπουδών στο τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών του Πανεπιστημίου Πατρών. Θα ήθελα στο σημείο αυτό να ευχαριστήσω όλους όσους συνέβαλαν στην ολοκληρωσή της : Καταρχάς, τον επιβλέποντα καθηγητή μου κ. Ε. Δερματά που με ενθάρρυνε να ασχοληθώ με το αντικείμενο αυτό καθώς και για τις χρήσιμες συμβουλές του καθόλη τη διάρκεια της εργασίας και για τον πολύτιμο του χρόνο που αφιέρωσε. Θα ήθελα ακόμη να ευχαριστήσω την οικογένεια μου και τους κοντινούς μου φίλους για τη στήριξη τους σε όλο το διάστημα των σπουδών μου αλλά και της εκτέλεσης και συγγραφής της παρούσας εργασίας, καθώς και τον πολύ καλό μου φίλο Γιώργο για τη στήριξη του και τις πολύτιμες συμβουλές του σε όλη τη διάρκεια της διπλωματικής μου εργασίας. 6 Πίνακας Περιεχομένων Περίληψη... 5 Ευχαριστίες Εισαγωγή Μηχανική όραση Ψηφιακή Επεξεργασία εικόνας Αναγνώριση Προτύπων Λειτουργικό σύστημα, περιβάλλον εργασίας και βιβλιοθήκες Το λειτουργικό σύστημα Η βιβλιοθήκη opencv Εγκατάσταση της opencv Η δομή της OpenCV Βασικά τεχνικά χαρακτηριστικά Γλώσσα και περιβάλλον προγραμματισμού Τρόπος προσέγγισης και ανάλυση της θεωρίας Αρχικές προσεγγίσεις Ανίχνευση κίνησης (motion detection) : Background substraction Oρισμός της οπτικής ροής Τεχνικές Εκτίμησης Οπτικής Ροής Τεχνική της συσχέτισης ( correlation based method ) Διαφορικές τεχνικές ( differential methods ) Feature Based Method Κύριες μέθοδοι υπολογισμού οπτικής ροής H τεχνική των Lucas-Kanade Τεχνική των Horn-Shunk Η Προσέγγιση με οπτική ροή Ο αλγόριθμος kmeans Εναλλακτικές προσεγγίσεις Σύνοψη Μελετη της σχετικής βιβλιογραφίας Souhila και Karim Οπτική ροή και κανόνες ελέγχου 4.1.2 Focus of Expansion (FOE) Time-to-contact ( TTC ) Βάθος πεδίου Η στρατηγική για την αποφυγή εμποδίων Low και Wyeth Thomas Jurriaans Σύνοψη Υλικό και επικοινωνία Το μικροϋπολογιστικό σύστημα A20 OLIMEX Περιγραφή του μικροϋπολογιστικου συστηματος Επικοινωνία με τον A Σύνδεση με κινητήρες και έλεγχος Κάμερα και λοιπά εξαρτήματα H κάμερα Ρόδες, κινητήρες, βάση για το όχημα Σύνδεση ακίδων GPIO Ανάπτυξη του αλγορίθμου και επικοινωνία με το υλικό Ανάπτυξη του αλγορίθμου αποφυγής εμποδίων Παράθεση κώδικα και επεξήγηση Στρατηγική αποφυγής εμποδίων Βελτίωση της στρατηγικής Πειραματικά αποτελέσματα και αξιολόγηση Υποθέσεις και συνθήκες περιβάλλοντος Η προσομοίωση Αξιολόγηση Μελλοντικές βελτιώσεις Σύνοψη Συμπεράσματα Παράρτημα Βιβλιογραφία 1. Εισαγωγή Τα τελευταία χρόνια οι αυτοματοποιημένες εργασίες αποτελούν ένα κλειδί στη διευκόλυνση της ζωής των ανθρώπων, σε πολλούς τομείς της καθημερινότητας τους. Ως εκ τούτου η χρήση κινητών robots και δη αυτόνομων, αλλά και η μεμονωμένη χρήση αισθητήρων που εφαρμόζονται στα robots είναι ευρέως διαδεδομένη. Συνεπώς, η ανάπτυξη νέων συστημάτων αυτόνομης κίνησης τους αλλά και η βελτιστοποίηση των ήδη υπαρχόντων, είναι ένας κλάδος που φαίνεται να παρουσιάζει μεγάλο ενδιαφέρον, με βάση την πλούσια βιβλιογραφία. Οι εφαρμογές πραγματικού χρόνου ( real time applications ) απαιτούν σύγχρονη τεχνολογία ώστε να εφαρμόζονται στα αυτόνομα κινητά robots. Η βασική απαίτηση είναι το αυξημένο επίπεδο απόκρισης και αξιοπιστίας του συστήματος με στόχο την βέλτιστη αυτονομία του. Αυτό επιτυγχάνεται κυρίως με ισχυρά, ως προς την υπολογιστική τους δύναμη, ηλεκτρονικά μέρη. Συνακόλουθος στόχος είναι η υλοποίηση με κατά το δυνατόν ευρέως διαθέσιμα απάρτια έτσι ώστε να επιτυγχάνεται η οικονομικότητα της κατασκευής. Η αυτονομία σημαίνει ότι το robot πρέπει να βασίζεται στην ικανότητα του να λαμβάνει επαρκείς πληροφορίες πλοήγησης από τους αισθητήρες του και να παίρνει αποφάσεις από μόνο του σχετικά με τις άμεσες κινήσεις του. Η πλοήγηση, λοιπόν, είναι μια διαδικασία δύσκολη λόγω πολλών και πολύπλοκων προβλημάτων. Μερικά από αυτά είναι οι περιορισμοί στην υπολογιστική δύναμη του συστήματος, οι δυσκολίες στον εντοπισμό, την αναγνώριση και την παρακολούθηση των αντικειμένων και την μετάφραση των στοιχείων του περιβάλλοντος προκειμένου να αποφευχθεί η σύγκρουση με τα αντικείμενα. Το αντικείμενο της παρούσας εργασίας είναι η κατασκευή ενός ενσωματωμένου συστήματος πλοήγησης ρομποτικού οχήματος με μεθόδους μηχανικής όρασης. Ένα τέτοιο σύστημα μπορεί να έχει εφαρμογή σε αυτοκίνητα προς αποφυγή σύγκρουσης με προπορευόμενα οχήματα, πεζούς αλλά και αντικείμενα στο περιβάλλον τους, καθώς και άλλες χρήσεις όπως σε robots καθαρισμού χώρων, robots για χαρτογράφηση περιοχής υψηλού και μη κινδύνου, και γενικά σε εφαρμογές που η ανθρώπινη καθοδήγηση δεν είναι απαραίτητη ή επιθυμητή. Η γενική απαίτηση για την προσέγγιση και λύση του προβλήματος στην παρούσα εργασία είναι η χρήση μεθόδων μηχανικής όρασης, και συγκεκριμένα μίας και μοναδικής κάμερας έτσι ώστε να διατηρηθεί το κόστος μελλοντικής κατασκευής του ολοκληρωμένου συστήματος χαμηλό, αλλά και για να γίνει εφαρμογή της επεξεργασίας εικόνας και βίντεο στη λύση του προβλήματος. Γίνεται τώρα μία σύντομη εισαγωγή στις κυρίαρχες έννοιες επιστημονικά πεδία που θα χρησιμοποιηθούν σε αυτή τη διπλωματική. 9 1.1 Μηχανική όραση Η μηχανική ή υπολογιστική όραση (machine/computer vision) είναι το αντικείμενο που θα μας απασχολήσει σε αυτή την εργασία. Πρόκειται για ένα επιστημονικό πεδίο της τεχνητής νοημοσύνης το οποίο επιχειρεί να αναπαράγει αλγοριθμικά την αίσθηση της όρασης, συνήθως σε ηλεκτρονικό υπολογιστή ή ρομπότ. Περιλαμβάνει μεθόδους ανάκτησης, επεξεργασίας, ανάλυσης και κατανόησης εικόνων και γενικότερα δεδομένων υψηλών διαστάσεων από το περιβάλλον με σκοπό την εξαγωγή αριθμητικών ή λογικών αποτελεσμάτων όπως για παράδειγμα μία απόφαση. Αυτό είναι ένα αρκετά δύσκολο έργο, αν αναλογιστεί κανείς ότι ο στόχος είναι η κατασκευή ενός συστήματος που πρέπει να μιμείται την ανθρώπινη όραση, η οποία αποτελεί μία αρκετά πολύπλοκη διαδικασία. Ιστορικά η υπολογιστική όραση αναδύθηκε μετά το 1980 ως αποτέλεσμα επέκτασης του πεδίου της πληροφορικής το οποίο καλείται ψηφιακή επεξεργασία εικόνας σε αλγορίθμους ανάλυσης και κατανόησης εικόνων. Είχαν προηγηθεί η μαθηματική μοντελοποίηση της φυσική όρασης, έστω σε ένα βασικό επίπεδο, και οι πρώτες προσπάθειες για αναπαραγωγή της αίσθησης της όρασης σε αυτόνομα ρομπότ. Ως τότε ο όρος μηχανική όραση σχετιζόταν με την ηλεκτρολογία και τη ρομποτική συνήθως σε βιομηχανικό πλαίσιο. Κατά τη δεκαετία του 1980, μετά την εμφάνιση της υπολογιστικής όρασης, οι δύο όροι σταδιακά συνέκλιναν και συγχωνεύθηκαν ως επιστημονικά πεδία, σαν διακριτός τομέας της τεχνητής νοημοσύνης με εφαρμογές όχι μόνο στη ρομποτική αλλά και σε δεκάδες ακόμα κλάδους. Από τη δεκαετία του 1990 και έπειτα η μηχανική όραση έχει γνωρίσει αλματώδη ανάπτυξη, έχει συνδεθεί με το γνωστικό πεδίο της μηχανικής μάθησης και έχει δώσει σημαντικά απτά αποτελέσματα, με αλγορίθμους όρασης πραγματικού χρόνου να υλοποιούνται ακόμα και σε φτηνά κινητά τηλέφωνα εξοπλισμένα με κάμερα. Στο εν λόγω πλαίσιο, η μηχανική όραση έχει διαδραματίσει θεμελιώδη ρόλο στην εξέλιξη της ενισχυμένης πραγματικότητας. Η μηχανική όραση επιδιώκει να εφαρμόσει θεωρίες και μοντέλα στην κατασκευή μηχανικών συστημάτων με δυνατότητα όρασης. Τέτοια παραδείγματα εφαρμογών σε συστήματα είναι τα εξής : 1. Έλεγχος διαδικασιών (π.χ. ένα βιομηχανικό ρομπότ ή ένα αυτόνομο όχημα) 2. Ανίχνευση συμβάντων (π.χ. οπτική επιτήρηση) 3. Οργάνωση πληροφοριών (π.χ. ευρετηριοποίηση βάσεων δεδομένων και ακολουθιών εικόνων) 4. Εξομοίωση αντικειμένων και περιβαλλόντων (π.χ. βιομηχανική επιθεώρηση, ιατρική ανάλυση εικόνας ή τοπογραφική εξομοίωση) 5. Αλληλεπίδραση χρηστών με υπολογιστικά συστήματα (π.χ. ως είσοδος σε μια συσκευή επικοινωνίας ανθρώπου / μηχανής). Η υπολογιστική όραση είναι συγγενές πεδίο με την επεξεργασία εικόνας και την μηχανική όραση (machine vision). Γύρω από αυτά τα πεδία αναπτύσσονται εφαρμογές σε τομείς όπως οι ακόλουθοι : 10 Σχήμα 1.1 : Εικονική αναπαράσταση της σχέσης ανάμεσα στα συναφή επιστημονικά πεδία 1.2 Ψηφιακή Επεξεργασία εικόνας Ψηφιακή επεξεργασία εικόνας ονομάζεται κάθε μορφή αλγοριθμικής επεξεργασίας, ανάλυσης και χειρισμού ψηφιακών δεδομένων εικόνας ή βίντεο, όπως και το σχετικό επιστημονικό πεδίο της πληροφορικής. Στην επεξεργασία εικόνας, τόσο η είσοδος όσο και η έξοδος των υπολογισμών είναι δεδομένα εικόνας ή βίντεο (έγχρωμα, απρόμαυρα ή σε αποχρώσεις του γκρίζου(grayscale) ). Τύποι επεξεργασίας Γεωμετρικές μετατροπές : Αλλαγή στο μέγεθος ολόκληρης ή τμήματος της εικόνας, περιστροφή, παραμόρφωση, αλλαγή προοπτικής, αλλαγή ανάλυσης κλπ. Χρωματικές μετατροπές και διορθώσεις : Αλλαγή των χρωματικών τόνων μιας εικόνας, ρύθμιση φωτεινότητας, αντίθεσης, αλλαγή του χρωματικού χώρου (μοντέλου), π.χ. από RGB σε CMYK. Συμπίεση και μετατροπή της μορφής αποθήκευσης μιας εικόνας στον υπολογιστή π.χ. από μορφή.jpg σε μορφή.tif. Eφαρμογή φίλτρων με στόχο τη βελτίωση της ποιότητας της εικόνας ή τον τονισμό γνωρισμάτων της (αφαίρεση αμυχών, εξάλειψη φαινομένου «κόκκινων ματιών» από εικόνες προσώπων, ανίχνευση ακμών και τονισμός των περιγραμμάτων, μείωση θορύβου κλπ). Ανάμιξη δύο ή περισσότερων στοιχείων ώστε να αποτελούν μία φωτογραφία (φωτομοντάζ) 11 Κατάτμηση της εικόνας σε περιοχές, με στόχο τον καθορισμό των τομέων ενδιαφέροντος στην εικόνα( Regions of Interest,ROI).Ενδεικτικά μπορεί να γίνει δυαδική κατάτμηση σε προσκήνιο και παρασκήνιο. Αποκατάσταση με στόχο την εξαγωγή μιας «ορθής» εκδοχής της εικόνας από μία παραμορφωμένη/ενθόρυβη εικόνα εισόδου. 1.3 Αναγνώριση Προτύπων Η αναγνώριση προτύπων (pattern recognition) είναι ένα επιστημονικό πεδίο της μηχανικής μάθησης που έχει στόχο την ανάπτυξη αλγορίθμων για την ταξινόμηση αντικειμένων σε κατηγορίες ή κλάσεις. Ανάλογα με την εφαρμογή, τα αντικείμενα αυτά μπορεί να είναι εικόνες, κυματομορφές σημάτων, βίντεο ή οποιοδήποτε άλλο είδος μετρήσεων που χρειάζεται να ταξινομηθεί. Το ερευνητικό ενδιαφέρον για την αναγνώριση προτύπων έχει μακρά ιστορία, αλλά πριν την δεκαετία του 1960 ήταν κυρίως προϊόν θεωρητικής έρευνας στην περιοχή της στατιστικής. Από το 1960 και μετά, εξαιτίας της αλματώδης ανάπτυξης του τομέα της πληροφορικής και της εξέλιξης των ηλεκτρονικών υπολογιστών, έδωσε νέες δυνατότητες για πρακτικές εφαρμογές. 12 2. Λειτουργικό σύστημα, περιβάλλον εργασίας και βιβλιοθήκες Στο παρόν κεφάλαιο θα γίνει η εισαγωγή στη βιβλιοθήκη opencv, στον τρόπο εγκατάστασης της στο λειτουργικό σύστημα Linux και στην περιγραφή των λειτουργιών της. Ακόμη, θα αναφερθεί η γλώσσα προγραμματισμού που χρησιμοποιήθηκε καθώς και το προγραμματιστικό περιβάλλον. 2.1 Το λειτουργικό σύστημα Το Ubuntu Linux είναι το λειτουργικό που επιλέχθηκε να χρησιμοποιηθεί στην διπλωματική αυτή, βασισμένο εξ ολοκλήρου στο λειτουργικό Linux και ελεύθερο στην πρόσβαση. Έχει αναπτυχθεί από μια μεγάλη κοινότητα ανθρώπων και είναι μια διανομή βασισμένη στο Debian, μία από τις πιο αξιόπιστες διανομές Linux. Προτιμήθηκε για την καλή υποστήριξη του σε hardware και το φιλικό του περιβάλλον εργασίας. Η έκδοση που χρησιμοποιήθηκε είναι η Η βιβλιοθήκη opencv Ως βιβλιοθήκη για την επεξεργασία εικόνας επιλέχτηκε η OpenCV (Open Source Computer Vision Library). Eίναι μια βιβλιοθήκη μηχανικής όρασης ανοικτού λογισμικού που αναπτύχθηκε αρχικά από την Intel και κυκλοφορεί υπό BSD άδεια. Αυτό σημαίνει ότι μπορεί να γίνει ελεύθερη χρήση όλης ή μέρους της βιβλιοθήκης για την ανάπτυξη ενός εμπορικού ή ερευνητικού προιόντος από οποιονδήποτε. Έχει σχεδιαστεί με στόχο την υψηλή υπολογιστική αποδοτικότητα με ιδιαίτερη έμφαση σε εφαρμογές μηχανικής όρασης πραγματικού χρόνου (real time) όπως συστήματα αναγνώρισης χαρακτηριστικών προσώπων, προηγμένα ρομποτικά συστήματα, συστήματα ανίχνευσης κίνησης. 13 Όντας γραμμένη σε βελτιστοποιημένη C/C++ η βιβλιοθήκη αυτή μπορεί να εκμεταλλευτεί την πολυπύρηνη επεξεργασία. Αποτελείται απο περισσότερες από 500 συναρτήσεις,ενώ είναι ανεξάρτητη πλατφόρμας και παρέχει συναρτήσεις σε C, C++, Python και Java (Android). H OpenCV περιέχει συναρτήσεις κατάλληλες για πολλές διαφορετικές εφαρμογές στους τομείς της οπτικής επεξεργασίας. Διαθέτει επίσης βιβλιοθήκη μηχανικής μάθησης που περιλαμβάνει εργαλεία για ομαδοποίηση και στατιστική ταξινόμηση καθώς και συναρτήσεις για τη προβολή και την αποθήκευση των βίντεο και γενικά ό,τι έχει να κάνει με τη διεπαφή χρήστη-εφαρμογής. Τα κυριότερα πλεονεκτήματα χρήσης της OpenCV είναι η ταχύτητά της, το γεγονός ότι αποτελεί ελεύθερο λογισμικό καθώς και η απλότητα στη χρήση της. Διαθέσιμες εκδόσεις και υποστηριζόμενα λειτουργικά συστήματα Η OpenCV είναι διαθέσιμη σε Linux, Mac OS και Windows. Η τελευταία της έκδοση μπορεί να βρεθεί στο Sourceforge. Η πρωτη έκδοση ανακοινώθηκε το 2000 στο συνέδριο Computer Vision and Pattern Recognition και από τότε ενημερώνεται συνεχώς Εγκατάσταση της opencv Οδηγίες για την εκτατάσταση της βιβλιοθήκης opencv στο λειτουργικό Unix (Linux), που είναι και αυτό που χρησιμοποιείται σε αυτή τη διπλωματική βρίσκονται στην εξής ιστοσελίδα : Η δομή της OpenCV Η OpenCV έχει σπονδυλωτή δομή. Πρόκειται δηλαδή για μια μεγάλη βιβλιοθήκη που αποτελείται από μικρότερα τμήματα τα οποία μπορεί κανείς να συμπεριλάβει μεμονωμένα στο πρόγραμμα του. 14 Τα σημαντικότερα τμήματα (modules) τής είναι τα εξής : core : Ορίζει βασικές δομές δεδομένων,όπως ο πολυδιάστατος πίνακας Mat και συναρτήσεις που χρησιμοποιούνται από όλα τα υπόλοιπα τμήματα imgproc : Ένα τμήμα επεξεργασίας εικόνας που περιλαμβάνει φίλτρα, γεωμετρικούς και χρωματικούς μετασχηματισμούς εικόνων video: Ένα τμήμα ανάλυσης video, που περιλαμβάνει μεταξύ άλλων αλγορίθμους ανίχνευσης κίνησης, αφαίρεσης background και παρακολούθησης αντικειμένων calib3d : features2d : objdetect: highgui: gpu: Περιλαμβάνει βασικούς αλγορίθμους επεξεργασίας λήψεων πολλαπλών καμερών,αντιστοίχησης σημείων και τρισδιάστατης αναπαράστασης. Περιλαμβάνει αλγορίθμους εξαγωγής χαρακτηριστικών. Ανίχνευση προκαθορισμένων αντικειμένων όπως πρόσωπα,μάτια αυτοκίνητα κλπα. Μια εύκολη στη χρήση διεπαφή για κωδικοποίηση εικόνας και βίντεο καθώς και με δυνατότητες διαδραστικότητας του χρήστη. Αλγόριθμοι που έχουν επιταχυνθεί μέσω παραλληλοποίησης. Δεν πρόκειται για ένα μόνο τμήμα αλλά για ένα σύνολο αλγορίθμων διαμοιρασμένων σε διάφορα τμήματα. 15 2.2.3 Βασικά τεχνικά χαρακτηριστικά Namespace : Οι κλάσεις και οι συναρτήσεις της OpenCV ανήκουν στο cv namespace. Έτσι, προκειμένου να τις χρησιμοποιήσει κάποιος εκτός από το να συμπεριλάβει (include) κάποιο από τα τμήματα της βιβλιοθήκης στον κώδικα του, να προσθέσει τον προσδιοριστή cv:: μπροστά από το όνομα της κάθε κλάσης ή συνάρτησης η οποία ανήκει στην OpenCV. Διαφορετικά μπορεί να χρησιμοποιήσει την εντολή using namespace cv ; στην αρχή του κώδικα. Στην περίπτωση που μια συνάρτηση της OpenCV έχει το ίδιο όνομα με μια συνάρτηση κάποιας άλλης βιβλιοθήκης τότε πρέπει να χρησιμοποιηθεί αποκλειστικά ο cv:: προσδιοριστής. Αυτόματη διαχείρηση μνήμης : Η OpenCV αναλαμβάνει εξ ολοκλήρου τη διαχείρηση της μνήμης. Δε δεσμεύει μόνο την απαραίτητη μνήμη κατά την αρχικοποίηση μιας δομής δεδομένων, αλλά φροντίζει ώστε ο συγκεκριμένος τομέας μνήμης να μην αποδεσμευτεί όσο υπάρχουν αναφορές σε αυτόν ακόμα και αν η αρχική δομή διαγραφεί. Διαχείρηση λαθών Η OpenCV διαχειρίζεται τα σημαντικότερα λάθη μέσω exceptions. Ένα λάθος προκύπτει στην περίπτωση που τα δεδομένα εισόδου είναι κατάλληλου τύπου και ανήκουν στο σωστό εύρος τιμών, αλλά ο αλγόριθμος για κάποιο λόγο δε λειτουργεί σωστά. Στην περίπτωση αυτή επιστρέφει ένας ειδικός κωδικός λάθους. Τα exceptions είναι στιγμιότυπα της κλάσης cv::exveption, η οποία είναι υποκλάση της std::exception. Έτσι μπορούμε να τα διαχειριστούμε χρησιμοποιώντας τα εργαλεία που μας προσφέρει η C++ για αυτόν τον σκοπό ( throw, try, catch ). 2.3 Γλώσσα και περιβάλλον προγραμματισμού Η γλώσσα προγραμματισμού που χρησιμοποιήθηκε είναι η αντικειμενοστραφής γλώσσα προγραμματισμού c++, βασισμένη πάνω στη γλώσσα προγραμματισμού c, αφενός διότι υποστηρίζεται πλήρως από την OpenCV,αφετέρου επειδή είναι γρήγορη και αποτελεσματική σε εφαρμογές επεξεργασίας εικόνας και βίντεο. Επιπλέον έχει το πλεονέκτημα της εύκολης φορητότητας των προγραμμάτων που μπορούν να μεταγλωττιστούν και να τρέξουν σε οποιοδήποτε υπολογιστικό σύστημα. 16 Το Περιβάλλον προγραμματισμού Eclipse IDE Ως περιβάλλον προγραμματισμού επιλέχθηκε το Eclipse IDE for C/C++ Developers [36]. Αποτελεί πολύ καλή επιλογή λόγω της καλής του οργάνωσης των πρότζεκτ και του κώδικα, καθώς δημιουργεί φάκελο που περιέχονται όλα τα αρχεία και είναι εύκολα προσπελάσιμα. Ακόμη, είναι περιβάλλον φιλικό προς το χρήστη, γρήγορο και εύχρηστο χωρίς προβλήματα και λάθη. 17 3. Τρόπος προσέγγισης και ανάλυση της θεωρίας Στο παρόν κεφάλαιο θα αναλυθούν οι πρώτες σκέψεις για την αντιμετώπιση του προβλήματος της ανίχνευσης κίνησης έχοντας ως απώτερο σκοπό την ανίχνευση και την αποφυγή εμποδίων. Αναλύονται σταδιακά ορισμένες προτάσεις και ορισμένες απορρίπτονται προς εύρεση της βέλτιστης μεθόδου. 3.1 Αρχικές προσεγγίσεις Ανίχνευση κίνησης (motion detection) : Ξεκινήσαμε με απλές διαδικασίες εντοπισμού κίνησης [35], όπως την ανίχνευση αντικειμένων με συγκεκριμένο χρώμα. Για τον σκοπό αυτό χρησιμοποιήθηκε ένα βίντεο με ένα κόκκινο μπαλάκι που κινούσαμε χειροκίνητα μπροστά σε ένα λευκό τοίχο, προκειμένου να υπάρχει έντονη χρωματική αντίθεση. Ανίχνευση χρώματος Αρχικά ο στόχος μας ήταν να ανιχνεύσουμε την κίνηση ενός συγκεκριμένου χρώματος σε μια ακολουθία βίντεο/frames, συγκεκριμένα του κόκκινου. Για ένα εύρος τιμών που αντιστοιχούν σε κόκκινο φιλτράρουμε κάθε frame και έτσι απεικονίζουμε την εικόνα σε δυαδική απεικόνιση (μαύρο - άσπρο). Η επιλογή των ορίων γίνεται βάση των HSV(Hue-Saturatio