PostHeaderIcon Οπτική αναγνώριση και παρακολούθηση αντικείμενων σε πραγματικό χρόνο

 

Οι τεχνολογίες οπτικής αναγνώρισης και παρακολούθησης αντικειμένων σε πραγματικό χρόνο μπαίνουν όλο και πιο έντονα στην καθημερινότητα μας. To βλέπουμε στα πάρκινγκ σούπερ μάρκετ και εμπορικών, στα διόδια σε εφαρμογές ακόμη και παιχνίδια. Στη ρομποτική μάλιστα η “όραση” είναι από τα πρώτα πράγματα που σκέφτεται κάποιος να ενσωματώσει ή που θα ήθελε να ενσωματώσει στο δημιούργημα του.

.

Εδώ θα δούμε μια υλοποίηση με χαμηλού κόστους υλικά της phidget. Όλα τα προϊόντα της phidget θα τα βρείτε στην Ελλάδα από την futurehouse.gr.

Υλικά

Τα υλικά που χρησιμοποιήθηκαν για την κατασκευή είναι:
1. 1χ Web Camera (Logitech C500)

 

C500 webcamera image

 

Κατασκευαστής: Logitech
Ανάλυση: 1.3 MP
Microphone: Ναι
Ανάλυση φτογραφίας: 5.0 MP
FPS: 30 FPS


2. 1χ PhidgetAdvancedServo 8-Motor

 

Phidgets Advance Servo image

Το PhidgetAdvancedServo 8-Motor σας επιτρέπει να ελέγχετε τη θέση, ταχύτητα και επιτάχυνση μέχρι και 8 RC σέρβο κινητήρων. Απαιτεί ένα 6-15VDC εξωτερικό τροφοδοτικό. Η μεταγωγική(switching) τροφοδοσία του, επιτρέπει στο AdvancedServo την αποτελεσματική λειτουργία από 6 έως 15 VDC και μπορεί να χρησιμοποιηθεί με ένα ευρύ φάσμα μπαταριών.

Το 1061 διαθέτει υψηλή ανάλυση 125 βημάτων ανά μοίρα. Επίσης μετρά την κατανάλωση ενέργειας σε κάθε σέρβο και η μεταγωγική τροφοδοσία προστατεύει τα μοτέρ από υπέρταση. Μπορεί να τροφοδοτήσει servo κινητήρες μέχρι 1.5amps.

Το AdvancedServo συνδέεται απευθείας στη θύρα USB του υπολογιστή.

 


3. 2χ Hitec HS-485HB Deluxe Servo

 

HS-485 servo image

 

Characteristic Value
Operating Voltage 4.8V - 6.0V
Bearing Type Top Ball Bearing
Rotation 180°
Maximum Speed 272°/sec
Running Current 1066 - 180mA at no load
1061 - 150mA at no load
Stall Current 1066 - 450mA
1061 - 750mA
Stall Torque 66.6 oz-in
4.8 kg-cm
Size 1.57" x 0.78" x 1.49"
39.8 x 19.8 x 38 mm
Weight 1.59oz
45g

 

Σαν κιτ μπορείτε να το βρείτε εδώ:
PhidgetAdvancedServo Kit 4-Motor

 

Λογισμικό


Για τον προγραμματισμό και την ανάπτυξη του αλγόριθμου παρακολούθησης χρησιμοποιήθηκε το LABVIEW σε συνδυασμό με το NI Vision Development Module. Καθώς και οι βιβλιοθήκες (API's) που παρέχονται δωρεάν μαζί με τα υλικά.

 

Υλοποίηση

Η υλοποίηση έγινε ως εξής:

Κατασκευάστηκαν από λεπτή λαμαρίνα 2 τμήματα που σχηματίζουν το πλαίσιο της κατασκευής. Το πρώτο τμήμα στο οποίο και προσαρμόστηκε ο κινητήρας για την οριζόντια κίνηση (ο κινητήρας στα δεξιά) είναι το παρακάτω. Επίσης πάνω στο πλαίσιο αυτό ενσωματώθηκε ο δεύτερος κινητήρας(αριστερά) για την κίνηση στον κάθετο άξονα.

 

pan bracket with servo motor

 

και πάνω στον δεύτερο κινητήρα προσαρμόστηκε το δεύτερο τμήμα στο οποίο βρίσκεται και η κάμερα.

pan bracket

 

 

Χωρίς τον κινητήρα για την οριζόντια κίνηση:

pan tilt brackets

 

Ολοκληρη η κατασκευη:

pan tilt brackets with servo motors

 

 

Οι δυο αυτοί άξονες περιστροφής μας επιτρέπουν να κινηθούμε (και με βάσει τα χαρακτηριστικά των κινητήρων  +/-180 μοίρες στο κάθε επίπεδο.

 

Προγραμματισμός

Στη συνέχεια περνάμε στο κομμάτι του προγραμματισμού.
Στο Site της futurehouse.gr (και στης phidget.com φυσικά) θα βρείτε έτοιμες βιβλιοθήκες και παραδείγματα για να τα χρησιμοποιήσετε σχεδόν σε ότι γλώσσα και αναπτυξιακό θέλετε. Πχ C# (Windows), C/C++, Cocoa, Delphi, Java, LabVIEW, Max/MSP (Mac OSX), Max/MSP (Windows), Python, Visual Basic .NET, Visual Basic 6.0.

Δεδομένου του πολύ εύκολου στη χρήση API της phidget και στο πολύ δυνατό αναπτυξιακό της National Instruments. Μένει μόνο ο τρόπος με το οποίο θα πετύχουμε ομαλή κίνηση και σωστή αναγνώριση της εικόνας.

Η αναγνώριση γίνεται με βάση το χρώμα του αντικειμένου. Αυτό επιτυγχάνεται με την εφαρμογή των παρακάτω φίλτρων:

 

image tracking test image

 

Binary conversion (color threshold): Η εικόνα μετατρέπεται σε Binary με βάση ένα όριο στην απόχρωση έτσι χοντρικά μπορούμε να πούμε ότι όποιο pixel είναι στα επιθυμητα ορια κάντο “1” αλλιώς “0”.

Η αναλυση των χρωματων γινεται με βαση το HSL (Hue Saturation Luminance) και οχι RGB.

Η διαφορά στην απόδοση (μείωση θορύβου) είναι πολύ μεγάλη!!

image after color threshold operation

 

 

FT: Εφαρμογή φίλτρου Fourier. Το φίλτρο Fourier έχει χρησιμοποιηθεί με τέτοιο τρόπο ώστε τα σημεία που υπάρχει υψηλή συγκέντρωση “1” άσσων να εμφανίζονται σαν μια μονοκόμματη περιοχή ενώ μεμονωμένα Pixel ή πολύ μικρές ομάδες “μπλέ” pixel να αγνοούνται.

image after FFT operation

 

Centroid το φίλτρο αυτό με βάση όλα τα σημεία της εικόνας μας δίνει το “κέντρο βάρους” της εικόνας αν δηλαδή υπάρχει μόνο μια περιοχή “άσσων” μας δίνει το κέντρο της. Αν υπάρξουν δυο ολόιδιες περιοχές το κέντρο θα βρίσκεται ακριβώς ανάμεσα τους κτλ.

image after centroid operation

 

Περνώντας λοιπόν από τα παραπάνω φίλτρα κάθε ένα frame ξεχωριστά έχουμε μια εκτίμηση του “κέντρου βάρους” του αντικειμένου προς αναγνώριση. Λόγο όμως του ότι η αναγνώριση με βάση το χρώμα περιορίζεται από τις συνθήκες φωτισμού τη γωνία λήψης κτλ τα αποτελέσματα μπορεί να διαφέρουν πολύ κατά την χρήση σε κάθε frame. Έτσι το “κέντρο βάρους” θα αλλάζει συνεχώς και γρήγορα θέση ενώ μπορεί σε κάποια frame να μην αναγνωριστεί καν το αντικείμενο για το λόγο αυτό χρησιμοποιήθηκε ένα φίλτρο kalman.

Το φίλτρο kalman λαμβάνει υπ’ όψιν προηγούμενες μετρήσεις καθώς και φυσικά μεγέθη όπως η ταχύτητα “προβλέποντας” έτσι την επιθυμητή τιμή σε περιβάλλον που υπάρχει θόρυβος και λανθασμένες μετρήσεις.

Περισσότερα για το φίλτρο kalman εδώ. (link)

Αν θέλετε και εσείς να δώσετε «όραση» στην επόμενη κατασκευή σας, η πλατφόρμα του LABVIEW είναι ότι πιο εύκολο για να δοκιμάσετε. Αν από την άλλη είστε λάτρης του open source ή θέλετε κάτι που να μην διέπεται από άδειες λογισμικού τότε πρέπει να δείτε το openCV (Open Source Computer Vision). Είναι λίγο πιο δύσκολο για να ξεκινήσετε αλλά αφού μάθετε να χειρίζεστε το API του, ανοίγει μπροστά σας ένας τεράστιος δρόμος νέων δυνατοτήτων και μάλιστα με BSD license (δωρεάν για ακαδημαϊκή αλλά και εμπορική χρήση.)

 

Θα ακολουθήσει επόμενο άρθρο με εφαρμογή της "όρασης" σε ένα αυτόνομο ρομποτικό όχημα για το Athens Digital Week 2010 όπου θα φαίνεται η πολύ καλή του απόκριση όταν ακολουθεί ένα τηλεκατευθυνόμενο ελικοπτεράκι μοντελισμού.

 

Παρακαλώ κάντε πρώτα login για να μπορείτε να κανετε σχολια.