Πίνακας περιεχομένων:

Αρίθμηση αντικειμένων Raspberry Pi: 5 βήματα
Αρίθμηση αντικειμένων Raspberry Pi: 5 βήματα

Βίντεο: Αρίθμηση αντικειμένων Raspberry Pi: 5 βήματα

Βίντεο: Αρίθμηση αντικειμένων Raspberry Pi: 5 βήματα
Βίντεο: «Μαθαίνω & Διδάσκω Προγραμματισμό με Python» 2024, Ιούλιος
Anonim
Καταμέτρηση αντικειμένων Raspberry Pi
Καταμέτρηση αντικειμένων Raspberry Pi

Η όραση υπολογιστή, αναμφίβολα, είναι ένα φανταστικό πράγμα! Χρησιμοποιώντας αυτό, ένας υπολογιστής αποκτά την ικανότητα να "βλέπει" και να αισθάνεται καλύτερα το περιβάλλον γύρω, κάτι που επιτρέπει την ανάπτυξη πολύπλοκων, χρήσιμων και δροσερών εφαρμογών. Εφαρμογές όπως η ανίχνευση και η αναγνώριση προσώπου, η παρακολούθηση αντικειμένων και η ανίχνευση αντικειμένων είναι ολοένα και περισσότερο παρούσες στις καθημερινές μας δραστηριότητες, χάρη στην πρόοδο της όρασης στον υπολογιστή.

Λαμβάνοντας υπόψη πόσο προηγμένα και προσβάσιμα είναι τα πλαίσια και τα εργαλεία όρασης του υπολογιστή, η εφαρμογή που περιγράφεται σε αυτό το άρθρο ταιριάζει καλά: χρησιμοποιώντας ένα απλό Raspberry PI και ένα πλαίσιο υπολογιστικής όρασης υπολογιστή χωρίς κόστος και ανοιχτού κώδικα που ονομάζεται OpenCV για να μετρήσετε αντικείμενα σε κίνηση, πιο συγκεκριμένα πόσο αντικείμενα εισέρχονται και εξέρχονται από μια συγκεκριμένη ζώνη παρακολούθησης.

Βήμα 1: Εμβάθυνση: Πώς μπορεί να ανιχνευθεί κίνηση αντικειμένων σε ροή εικόνας;

Εμβάθυνση: Πώς μπορεί να ανιχνευθεί κίνηση αντικειμένων σε ροή εικόνας
Εμβάθυνση: Πώς μπορεί να ανιχνευθεί κίνηση αντικειμένων σε ροή εικόνας

Τώρα ήρθε η ώρα να εμβαθύνουμε στην επεξεργασία εικόνας:

πώς να πάρετε μερικές εικόνες ροής κάμερας και να εντοπίσετε ότι κάτι έχει μετακινηθεί εκεί

Αποτελείται από πέντε βήματα:

Βήμα 1: Για να επισημάνετε το αντικείμενο σε κίνηση

Όπως ορίζεται στην κλασική φυσική, μια αναφορά είναι απαραίτητη για να συμπεράνουμε ότι κάτι κινείται ή αν είναι ακίνητο. Εδώ, για να διαπιστωθεί εάν κάτι έχει μετακινηθεί, είναι σχεδόν το ίδιο: κάθε μεμονωμένη ροή κάμερας που καταγράφεται θα συγκρίνεται με ένα πλαίσιο αναφοράς. Αν κάτι είναι διαφορετικό, κάτι έχει μετακινηθεί. Είναι απλό όσο ακούγεται.

Αυτό το πλαίσιο αναφοράς πρέπει να καταγραφεί στις πιο τέλειες συνθήκες (τίποτα δεν κινείται, για παράδειγμα). Στον κόσμο της επεξεργασίας εικόνας, αυτή η σύγκριση μεταξύ ενός πλαισίου λήψης και ενός πλαισίου αναφοράς συνίσταται σε μια τεχνική που ονομάζεται αφαίρεση φόντου. Η αφαίρεση υποβάθρου συνίσταται στην αφαίρεση κυριολεκτικά των πληροφοριών χρώματος εικονοστοιχείου από εικονοστοιχείο από το καταγεγραμμένο πλαίσιο και το πλαίσιο αναφοράς. Έτσι, η εικόνα που προκύπτει από αυτήν την επιτυχία θα επισημάνει / εμφανίζει με περισσότερες λεπτομέρειες μόνο τι είναι διαφορετικό μεταξύ αυτών των δύο πλαισίων (ή τι έχει μετακινήσει / πάρει κίνηση) και όλα τα άλλα θα είναι μαύρα στην εικόνα (το χρώμα μηδενικής τιμής σε ένα γκρι -pixel κλίμακας). Σημαντικό: οι συνθήκες φωτισμού και η ποιότητα της εικόνας της κάμερας που έχει ληφθεί (λόγω της ποιότητας των αισθητήρων σύλληψης) μπορεί να διαφέρουν ελαφρώς από καρέ σε καρέ. Υπονοεί ότι τα "ίσα μέρη" από το πλαίσιο αναφοράς και άλλα καρέ δεν θα είναι εντελώς μαύρα μετά την αφαίρεση φόντου. Παρά τη συμπεριφορά αυτή, δεν υπάρχουν σοβαρές συνέπειες στα επόμενα βήματα επεξεργασίας εικόνας σε αυτό το έργο.

Προκειμένου να ελαχιστοποιηθεί ο χρόνος επεξεργασίας εικόνας, πριν από την υποστροφή υποβάθρου, το καταγεγραμμένο πλαίσιο και το πλαίσιο αναφοράς μετατρέπονται σε εικόνα γκρίζας κλίμακας. Μα γιατί? Είναι ένα θέμα υπολογιστικής αποτελεσματικότητας: μια εικόνα που παρουσιάζει πολλαπλά χρώματα (έγχρωμη εικόνα) έχει τρεις πληροφορίες ανά εικονοστοιχείο: Κόκκινα, Μπλε και Πράσινα στοιχεία χρώματος (το παλιό αλλά χρυσό πρότυπο RGB). Έτσι, μαθηματικά, κάθε εικονοστοιχείο μπορεί να οριστεί ως πίνακας τριών τιμών, καθένα από τα οποία αντιπροσωπεύει ένα συστατικό χρώματος. Επομένως, επεκτείνοντάς το σε ολόκληρη την εικόνα, η τελική εικόνα θα είναι στην πραγματικότητα το μείγμα τριών στοιχείων της εικόνας: Κόκκινο, Μπλε και Πράσινο στοιχεία εικόνας.

Για να το επεξεργαστείτε, απαιτείται πολλή δουλειά! Ωστόσο, σε εικόνες γκρι κλίμακας, κάθε εικονοστοιχείο έχει μόνο μία χρωματική πληροφορία. Έτσι, η επεξεργασία μιας έγχρωμης εικόνας είναι τρεις φορές πιο αργή από ό, τι στην περίπτωση εικόνας σε γκρι κλίμακα (τουλάχιστον τρεις φορές, ανάλογα με την τεχνική που περιλαμβάνει). Και υπάρχουν περισσότερα: για κάποιους σκοπούς (όπως αυτό το έργο), η επεξεργασία όλων των χρωμάτων δεν είναι απαραίτητη ή καθόλου σημαντική. Ως εκ τούτου, καταλήξαμε στο συμπέρασμα: η χρήση εικόνων σε γκρι κλίμακα συνιστάται ιδιαίτερα για σκοπούς επεξεργασίας εικόνας. Μετά την αφαίρεση υποβάθρου, είναι απαραίτητο να εφαρμόσετε το φίλτρο Gaussian Blur.

Το φίλτρο Gaussian Blur που εφαρμόζεται σε αφαιρούμενη εικόνα φόντου εξομαλύνει όλα τα περιγράμματα του κινούμενου ανιχνευμένου αντικειμένου. Σίγουρα, θα είναι βοηθητικό στα επόμενα βήματα της επεξεργασίας εικόνας.

Βήμα 2: Δικονοποίηση

Διματικοποίηση
Διματικοποίηση

Στις περισσότερες περιπτώσεις επεξεργασίας εικόνας, η δυαδικότητα είναι σχεδόν υποχρεωτικό βήμα μετά την επισήμανση αντικειμένων / χαρακτηριστικών σε μια εικόνα. Αιτία: σε μια δυαδική εικόνα, κάθε χρώμα pixel μπορεί να λάβει δύο τιμές μόνο: 0x00 (μαύρο) ή 0xFF (λευκό). Αυτό βοηθάει πολύ την επεξεργασία εικόνας προκειμένου να απαιτηθεί ακόμη λιγότερη "υπολογιστική ισχύς" για την εφαρμογή τεχνικών επεξεργασίας εικόνας στα επόμενα βήματα. Η διματοποίηση μπορεί να γίνει συγκρίνοντας κάθε χρώμα εικονοστοιχείου της εικόνας σε γκρι κλίμακα με ένα συγκεκριμένο όριο. Εάν η τιμή του χρώματος εικονοστοιχείου είναι μεγαλύτερη από το κατώφλι, αυτό το χρώμα εικονοστοιχείου θα λάβει λευκή τιμή (0xFF) και αν η τιμή του χρώματος εικονοστοιχείου είναι χαμηλότερη από το κατώφλι, αυτό το χρώμα εικονοστοιχείου θα λάβει μαύρη τιμή (0x00). Δυστυχώς, η επιλογή της τιμής κατωφλίου δεν είναι τόσο εύκολο να γίνει. Εξαρτάται από περιβαλλοντικούς παράγοντες, όπως οι συνθήκες φωτισμού. Μια λανθασμένη επιλογή μιας τιμής κατωφλίου μπορεί να καταστρέψει όλα τα βήματα περαιτέρω. Έτσι, σας συνιστώ ανεπιφύλακτα να προσαρμόσετε χειροκίνητα ένα όριο στο έργο για την περίπτωσή σας πριν από οποιαδήποτε περαιτέρω ενέργεια. Αυτή η τιμή κατωφλίου πρέπει να διασφαλίζει ότι το κινούμενο αντικείμενο εμφανίζεται σε δυαδική εικόνα. Στην περίπτωσή μου, μετά από επαρκή επιλογή κατωφλίου, καταλήγει σε αυτό που βλέπετε στο σχήμα 5.

Εικόνα 5 - δυαδική εικόνα

Βήμα 3: Διαστολή

Μέχρι τώρα, ήταν δυνατό να εντοπιστούν κινούμενα αντικείμενα, να επισημανθούν και να εφαρμοστεί η δυαδικότητα, με αποτέλεσμα μια αρκετά καθαρή εικόνα του κινούμενου αντικειμένου (= αρκετά καθαρή εικόνα του αντικειμένου για σκοπούς επεξεργασίας εικόνας). Η προετοιμασία για την καταμέτρηση αντικειμένων έχει γίνει ΣΧΕΔΟΝ. Το "ΣΧΕΔΟ" εδώ σημαίνει ότι υπάρχουν κάποιες καλές προσαρμογές πριν προχωρήσετε. Σε αυτό το σημείο, υπάρχουν πραγματικές πιθανότητες παρουσίας "οπών" στα αντικείμενα (μαύρες μάζες εικονοστοιχείων στο λευκό επισημασμένο αντικείμενο). Αυτές οι τρύπες μπορεί να είναι οτιδήποτε, από συγκεκριμένες συνθήκες φωτισμού έως κάποιο μέρος του σχήματος του αντικειμένου. Μόλις οι τρύπες μπορούν να "παράγουν" ψεύτικα αντικείμενα μέσα σε πραγματικά αντικείμενα (ανάλογα με το πόσο μεγάλα και πού βρίσκονται), οι συνέπειες της παρουσίας οπών σε μια εικόνα μπορεί να είναι καταστροφικές για την καταμέτρηση των αντικειμένων. Ένας τρόπος για να εξαλειφθούν αυτές οι τρύπες είναι η χρήση μιας τεχνικής επεξεργασίας εικόνας που ονομάζεται Dilate. Χρησιμοποιήστε αυτό και οι τρύπες εξαφανίζονται.

Βήμα 4: Η αναζήτηση για τα περιγράμματα (και τα κεντροειδή του)

Η αναζήτηση για τα περιγράμματα (και τα κεντροειδή του)
Η αναζήτηση για τα περιγράμματα (και τα κεντροειδή του)

Σε αυτό το σημείο, έχουμε τα επισημασμένα αντικείμενα, χωρίς τρύπες μέσα και έτοιμα για το επόμενο: την αναζήτηση των περιγραμμάτων (και των κεντροειδών του). Υπάρχουν πόροι στο OpenCV για την ανίχνευση αυτόματων περιγραμμάτων, αλλά οι ανιχνευόμενες γραμμές πρέπει να επιλέγονται με σύνεση (για να επιλέξετε μόνο το πραγματικό αντικείμενο ή αντικείμενα). Έτσι, τα κριτήρια για τον εντοπισμό των περιγραμμάτων είναι η περιοχή του αντικειμένου, μετρημένη σε pixel². Εάν ένα περίγραμμα έχει μεγαλύτερη επιφάνεια από ένα όριο (διαμορφωμένο στο λογισμικό), πρέπει να θεωρηθεί ως πραγματικό αντικείμενο προς καταμέτρηση. Η επιλογή αυτού του ορίου/κριτηρίων περιοχής είναι πολύ σημαντική και μια κακή επιλογή εδώ σημαίνει λανθασμένες μετρήσεις. Πρέπει να δοκιμάσετε ορισμένες τιμές ορίων τιμής περιοχής και να ελέγξετε τι ταιριάζει καλύτερα στη χρήση σας. Μην ανησυχείτε, αυτά τα όρια δεν είναι τόσο δύσκολο να βρεθούν / προσαρμοστούν. Μόλις επιλεγούν όλα τα αντικείμενα της εικόνας, το επόμενο βήμα είναι να σχεδιάσετε ένα επαναγωνισμό πάνω του (αυτό το τετράγωνο πρέπει να περιέχει ένα ολόκληρο ανιχνευμένο αντικείμενο μέσα του). Και το κέντρο αυτού του ορθογωνίου είναι…. το αντικείμενο centroid! Maybeσως σκέφτεστε "Ποια είναι η μεγάλη υπόθεση με αυτό το centroid;", σωστά; Εδώ είναι η απάντησή σας: δεν έχει σημασία πόσο μεγάλο ή πώς είναι το σχήμα του αντικειμένου, η κίνηση του είναι ίδια με το κεντροειδές. Με άλλα λόγια: αυτό το απλό σημείο που ονομάζεται κεντροειδές αντιπροσωπεύει όλη την κίνηση του αντικειμένου. Κάνει την καταμέτρηση πολύ απλή τώρα, έτσι δεν είναι; Δείτε την παρακάτω εικόνα (εικόνα 6), όπου το κεντροειδές του αντικειμένου αναπαρίσταται ως μαύρο σημείο.

Βήμα 5: Κίνηση και καταμέτρηση αντικειμένων του Centorid

Το μεγάλο φινάλε: συγκρίνετε τις συντεταγμένες του κεντρικού αντικειμένου με τις συντεταγμένες των γραμμών εισόδου και εξόδου και εφαρμόστε τον αλγόριθμο μέτρησης που περιγράφηκε προηγουμένως. Και θα υπάρχει καταμέτρηση κινούμενων αντικειμένων!

Τελικό αποτέλεσμα Όπως φαίνεται στην αρχή αυτής της ανάρτησης, εδώ είναι το έργο σε δράση:

Συνιστάται: