Προς το περιεχόμενο

Απορία με Matlab


kitty000

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας παιδιά,

 

είμαι νέο μέλος στην κοινότητά σας και αποφάσισα να κάνω post γιατί χρειάζομαι τη βοήθειά σας.

Η απορία μου είναι η εξής:

Έχω κάποιες εικόνες οι οποίες είναι χωρισμένες σε segments, με ένα label για κάθε διαφορετικό segment. Θέλω να υλοποιήσω μια συνάρτηση, στην οποία σαν πρώτο βήμα, θέλω να διαβάσω τα labels των εικόνων αυτών.

Ξέρετε ποιες εντολές θα πρέπει να χρησιμοποιήσω για να πάρω τα labels για καθεμία από τις εικόνες αυτές για να τα χρησιμοποιήσω παρακάτω;

Δημοσ.

Λοιπόν...η εργασία μου είναι σχετική με την κατάτμηση εικόνων. Έχοντας εφαρμόσει έναν αλγόριθμο, έχω κατατμήσει κάποιες εικόνες σε segments. Τα pixels του κάθε segment έχουν όλα το ίδιο label να τα χαρακτηρίζει. Το label αυτό, θέλω να το χρησιμοποιήσω για να καλέσω μία άλλη συνάρτηση, η οποία ουσιαστικά αυτό που θα κάνει θα είναι να συγκρίνει τα αποτελέσματα του παραπάνω αλγορίθμου, με τα ανθρώπινα αποτελέσματα (για κάθε εικόνα κάποιοι άνθρωποι έχουν κάνει ο καθένας τη δική του κατάτμηση-και στις εικόνες αυτές έχω επίσης κάποιο label το οποίο δείχνει ποια pixels ανήκουν στο ίδιο segment).

Αυτό που θέλω να κάνω, είναι να πάρω τα labels που έχουν προκύψει ύστερα από την εφαρμογή του αλγορίθμου και αυτά που προέκυψαν ύστερα από τις ανθρώπινες κατατμήσεις (και ψάχνω να βρω με ποιες εντολές γίνεται αυτό στο Matlab),ώστε να καλέσω τη συνάρτηση που συγκρίνει τα μεν, με τα δε αποτελέσματα, με σκοπό να ελέγξω κατά πόσο ο αλγόριθμος έδωσε σωστά αποτελέσματα ή όχι.

 

Ευχαριστώ για τη σύντομη απάντηση Dr.Fuzzy!!!

Ελπίζω αυτή τη φορά να ήμουν πιο σαφής! :)

Δημοσ.

Φίλε μου αυτό που ζητάς είναι πάρα πολύ γενικό (ο τρόπος που το περιγράφεις ίσως;). Κάνε post ένα παράδειγμα κώδικα και πες μου πάνω σε αυτό τι ακριβώς θες να κάνεις. :-)

Δημοσ.

Έστω ότι έχω αρχικά 2 ομάδες από εικόνες χωρισμένες σε segments. Στην πρώτη ομάδα, έχω τις εικόνες που παρήχθησαν από έναν αλγόριθμο ο οποίος χωρίζει κάποιες αρχικές εικόνες σε segments(σύμφωνα με το χρώμα, τη φωτεινότητα, την υφή των pixels), ενώ στη δεύτερη ομάδα τις κατατμήσεις στις ίδιες αρχικές εικόνες που έχουν κάνει άνθρωποι. Ο κώδικας από τον οποίο δημιουργήθηκαν αυτές οι εικόνες, δε με αφορά. Το μόνο που με ενδιαφέρει είναι οι μεταβλητές που δημιουργούνται όταν κάνουμε load τις εικόνες αυτές.

 

Έστω ότι παίρνω μία εικόνα από την πρώτη ομάδα. Τη φορτώνω στο workspace του matlab με τη load και βλέπω τις μεταβλητές που δημιουργήθηκαν με την εντολή whos. Δημιουργήθηκε μια μεταβλητή με όνομα result, μεγέθους 1x1 και τύπου struct array. Το πεδίο result.segmentation είναι ένας πίνακας 321x481 double, ο οποίος σε κάθε πεδίο του έχει μια τιμή. πχ. 1, 2, 3 (αν η εικόνα είναι χωρισμένη σε 3 segments), ένας αριθμός για κάθε pixel της εικόνας. Τα pixels που ανήκουν στο ίδιο segment έχουν τον ίδιο αριθμό στον πίνακα result.segmentation. Αυτά ισχύουν για όλες τις εικόνες της πρώτης ομάδας, με τη διαφορά ότι το πλήθος των segments σε κάθε εικόνα θα είναι διαφορετικό.

 

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

Name Size Bytes Class

 

imageLabelCell 1x6 7411608 cell array

subjectIDList 1x6 48 double array

 

όπου ουσιαστικά το imageLabelCell{1}, imageLabelCell{2}, imageLabelCell{3}, imageLabelCell{4}, imageLabelCell{5} και imageLabelCell{6} είναι πίνακες ο καθένας από τους οποίους περιέχει την κατάτμηση που έκανε ένας άνθρωπος. Έναν αριθμό δηλαδή για κάθε pixel της εικόνας. πχ. 1,2,3,4,5,6,7,8,9,10 (αν ο τάδε άνθρωπος είχε χωρίσει την εικόνα σε 10 segments). Έχω συνολικά 6 κατατμήσεις από 6 διαφορετικούς ανθρώπους για μία εικόνα.

 

Επίσης έχω έτοιμες συναρτήσεις με κάποιες μετρικές (που ελέγχουν κατά πόσο η κατάτμηση που έχουμε στην πρώτη ομάδα είναι καλή,συγκρίνοντάς την με τις ανθρώπινες κατατμήσεις) πχ.

function [bDE] = BoundaryDetectionError(imageLabels1,imageLabels2) και κάποιες άλλες που δέχονται τις ίδιες παραμέτρους όπου imageLabels1 και imageLabels2 τα labels από μια εικόνα της πρώτης ομάδας και μία της δεύτερης, αντίστοιχα.

 

Θέλω να φτιάξω ένα script το οποίο θα διαβάζει τα labels από καθεμία από τις εικόνες της πρώτης ομάδας και ύστερα τα labels από καθεμία από τις εικόνες της δεύτερης ομάδας και θα καλεί στη συνέχεια τις συναρτήσεις με τις μετρικές, πχ την BoundaryDetectionError που ανέφερα παραπάνω και ψάχνω να βρω πώς θα το κάνω αυτό...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...