Επισκέπτης Δημοσ. 1 Φεβρουαρίου 2016 Δημοσ. 1 Φεβρουαρίου 2016 Προσπαθώ να φτιάξω ένα πρόγραμμα που να αναγνωρίζει και να ομαδοποιεί χρώματα σε μια φωτογραφία. Όντας άσχετος με χρώμα διαπιστώνω ότι η ομαδοποίηση χρωμάτων από RGB είναι πρακτικά αδύνατη. Από όσο έχω ψάξει μέχρι στιγμής πρέπει να γίνει μετατροπή από RGB σε LAB κι από εκεί να εφαρμόσω κάποιον αλγόριθμο για color distance ώστε να έχω κάποια τρόπον τινά ομαδοποίηση των χρωμάτων. Το πρόβλημα είναι ότι με κάτι εκατομμύρια pixels σε κάθε φωτογραφία για να βρω το κοντινότερο χρώμα για το καθένα θα χρειαστεί πάρα πολύς χρόνος. Υπάρχει τρόπος να συντομεύσω τη διαδικασία; Έχει ασχοληθεί κανείς με το αντικείμενο να δώσει τα φώτα του;
M2000 Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 νομίζω ότι το HLS θα σε σώσει! Και αυτό γιατί το χρώμα είναι στο Hue (το L είναι η φωτεινότητα και το S ο κορεσμός). Έχω φτιάξει εφέ που γυαλίζει επιδερμίδες και εκεί χρειάστηκα να βάλω περιορισμούς για τα pixels...και μάλιστα να αποφεύγω όπου υπάρχει αλλαγή στην αντίθεση. Δhλαδή έφτιαξα ένα επιλεκτικό blur, βάση περιοχής χρωμάτων και αντίθεσης! Αν μπορείς να φτιάξεις ένα πρόγραμμα που να βγάζει ιστόγραμμα σε RGB θα σου πω και άλλα!
Επισκέπτης Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Το 'χω δοκιμάσει με HLS και δεν δουλεύει γιατί χάνεις χρώματα όπως το ροζ. Για παράδειγμα έχω δώσει τις εξής τιμές και βλέπω ότι σε πολλές περιπτώσεις πέφτει έξω (κώδικας σε C#) private static string Classify(Color c) { float hue = c.GetHue(); float sat = c.GetSaturation(); float lgt = c.GetBrightness(); if (lgt < 0.1) return "Black"; if (lgt > 0.9) return "White"; if (sat < 0.25) return "Gray"; if (hue < 18) return "Orange"; if (hue < 48) return "Brown"; if (hue < 64) return "Yellow"; if (hue < 160) return "Green"; if (hue < 210) return "Cyan"; if (hue < 270) return "Blue"; if (hue < 340) return "Magenta"; return "Red"; } Αντιθέτως, ξέρω ότι δουλεύει με LAB και color distance βάσει προτύπου CIE 2000 αλλά δεν ξέρω πως μπορείς να συντομεύσεις τη διαδικασία για να μη συγκρίνεις κάθε pixel με όλα τα γνωστά χρώματα. Αυτό που έχεις κάνει είναι τελειώς διαφορετικό. Είναι παρόμοιο με αυτό που κάνουν οι μηχανές αναζήτησης για να καταλάβουν πότε μια φωτογραφία είναι πορνό. Μετράνε τι ποσοστό pixels με συγκεκριμένο χρωματικό εύρος που αφορά το δέρμα του χρώματος υπάρχουν ως ποσοστό του συνόλου, στήνουν κι ένα machine learning μηχανισμό να κάνει συγκρίσεις και στο τέλος βγάζουν έναν μπούσουλα. Δεν λέω ότι είναι πιο εύκολο ή πιο δύσκολο απλά είναι κάτι διαφορετικό.
M2000 Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Το λάθος σου είναι στη σκέψη του classify όπως την δείχνεις. Αυτό που δείχνεις ΔΕΝ σου κάνει και το έχεις καταλάβει! Τι σου κάνει όμως; Πρέπει να αποφασίσεις βάσει μιας περιοχής τιμών! Δηλαδή όλα σου τα IF πρέπει να έχουν διπλό έλεγχο από έως.. Το ίδιο γίνεται και όταν σαρώνουμε ένα πίνακα με RGB τιμές. Βάζουμε ένα If με έξι συνθήκες, δυο ανά χρώμα. Σε προγράμματα ζωγραφικής λέγεται tolerance. Αλλά εκεί δουλεύει αλλιώς, δηλαδή έχουμε ένα χρώμα συγκεκριμένο και ψάχνουμε όλα τα pixels με χρώμα με + - τιμές που αναφέρεται στο tolerance. Αυτό που ζητάς ως classify θέλει τόσα if όσα και τα χρώματα που θες και στο καθένα οι σταθερές τιμές θα είναι οι τρεις τιμές RGB του χρώματος που θες να πεις ότι είναι, καθώς και τα + και - οι ανοχές στο καθένα!
Επισκέπτης Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Μου ‘χεις απαντήσει δύο φορές για κάτι διαφορετικό από αυτό που ρώτησα. Τη μία μου λες να πάω με HLS. Σου απαντώ ότι αυτό δεν δουλεύει και παραθέτω και τις τιμές που έχω χρησιμοποιήσει. Και επιβεβαιώνεις ότι δεν δουλεύει. Χαίρω πολύ. Τι τιμές να βάλω μπορείς να μου πεις; Μετά μου λες για το tolerance το οποίο δεν έχει καμία σχέση με αυτό που θέλω να κάνω. Αυτό που θέλω να κάνω έχει έναν πολύ συγκεκριμένο αλγόριθμό τον οποίο τυγχάνει να μην γνωρίζω ολοκληρωμένο. Αν κάποιος ξέρει το κομμάτι που μου λείπει ας με βοηθήσει. Αυτά που λες δεν με βοηθάνε στο ελάχιστο. Δεν μπορείς να κάνεις ομαδοποίηση χρώματος με βάση τις RGB τιμές. Πρέπει να πας με το LAB και μετά να υπολογίσεις το color distance κάθε χρώματος από κάποιο χρώμα αναφορά. Αλλά δεν ξέρω έναν γρήγορο τρόπο να κάνω αυτή τη σύγκριση και γι αυτό ρωτάω.
albNik Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Αν εχεις ενα πινακα με κατι εκατομμύρια αριθμους τους ταξινομείς και μετά θα παίρνεις ομαδες με κοντινούς μεταξύ τους. Αυτο δεν ειναι τοσο χρονοβόρο (nlog(n)).
Επισκέπτης Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Δεν κάνει το nlog(n). Χρειάζεται το παρακάτω για να συγκρίνεις δύο χρώματα: http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html
ParhsG Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Εγώ κατάλαβα πως θες color partitioning όπως στα gif να βγάλεις μια παλέτα. Δεν είναι τόσο απλο αλλά υπάρχουν αλ(ο)γόριθμοι για αυτό το θέμα.
Επισκέπτης Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Εγώ κατάλαβα πως θες color partitioning όπως στα gif να βγάλεις μια παλέτα. Δεν είναι τόσο απλο αλλά υπάρχουν αλ(ο)γόριθμοι για αυτό το θέμα. Ξέρεις κάποιον;
ParhsG Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Ξέρεις κάποιον; Αυτό θέλεις να κάνεις; Να βγάλεις μια παλέτα;
M2000 Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 @elorant Αν δεν καταλαβαίνεις ό,τι και να σου πουν δεν θα σε ικανοποιεί. Δεν είναι κακό όμως. Δεν έχουν όλοι την δυνατότητα επικοινωνίας, ίσως όχι όλες τις ώρες. Δεν θέλω να σε θίξω ούτε κατά διάνοια! Μπερδεύεις τα μοντέλα χρώματος. Δεν έχει σημασία ποιο χρησιμοποιώ για να σου δείξω την αναναγκαιότητα της περιοχής. Δεν μπορείς να περιορίσεις - επιλέξεις περιοχή- με το τρόπο που το πας και σε καμία περίπτωση δεν ανταποκρίνεται στο πρώτο που έθεσα, απλά αυτό κατάλαβες! Συνοψίζοντας: Δεν σου δούλεψε το HLS διότι αφενός χρησιμοποίησες το HSV https://en.wikipedia.org/wiki/HSL_and_HSV και αφετέρου έκανες μια σαλάτα στην διάρθρωση των If. Συνέχισε όμως..μην τα παρατάς. Άλλες συμβουλές θα προσπαθήσω...να μη σου δώσω, μέχρι να μάθεις να είσαι ευγενής!
Επισκέπτης Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 @elorant Αν δεν καταλαβαίνεις ό,τι και να σου πουν δεν θα σε ικανοποιεί. Δεν είναι κακό όμως. Δεν έχουν όλοι την δυνατότητα επικοινωνίας, ίσως όχι όλες τις ώρες. Δεν θέλω να σε θίξω ούτε κατά διάνοια! Μπερδεύεις τα μοντέλα χρώματος. Δεν έχει σημασία ποιο χρησιμοποιώ για να σου δείξω την αναναγκαιότητα της περιοχής. Δεν μπορείς να περιορίσεις - επιλέξεις περιοχή- με το τρόπο που το πας και σε καμία περίπτωση δεν ανταποκρίνεται στο πρώτο που έθεσα, απλά αυτό κατάλαβες! Συνοψίζοντας: Δεν σου δούλεψε το HLS διότι αφενός χρησιμοποίησες το HSV https://en.wikipedia.org/wiki/HSL_and_HSV και αφετέρου έκανες μια σαλάτα στην διάρθρωση των If. Συνέχισε όμως..μην τα παρατάς. Άλλες συμβουλές θα προσπαθήσω...να μη σου δώσω, μέχρι να μάθεις να είσαι ευγενής! Για να καταλάβω θα πρέπει να μου πεις κάτι συγκεκριμένο. Για να μου πεις κάτι συγκεκριμένο πρέπει να έχεις κάνει αυτό που ζητάω ή έστω κάτι συναφές. Προφανώς ΔΕΝ το έχεις κάνει. Μου λες ότι έχω κάνει σαλάτα τα if αλλά δεν μου προτείνεις το σωστό. Άρα τι συζητάμε; Ποιος την έχει μεγαλύτερη; ΟΚ, εσύ την έχεις. Αυτό θέλεις να κάνεις; Να βγάλεις μια παλέτα; Θέλω να βγάλω μια ομαδοποίηση χρωμάτων. Να μου λέει δηλαδή ότι έχει 5% κόκκινο, 10% μαύρο, 3% πράσινο, 20% μπλε κ.ο.κ. Και συνολικά να έχει το πολύ 20, 30 χρώματα. Δεν ξέρω αν λέμε το ίδιο πράγμα.
M2000 Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Ρε φίλε θες ανάλυση χρωμάτων σε δικά σου primary χρώματα! Αυτό ζητάς. Κάτι τέτοιο δεν χρειάστηκε να κάνω! Αν θες κάνε ένα διδακτορικό σε αυτό! http://zsolt-kovacs.unibs.it/colormixingtools/cmt-color2drop http://sensuallogic.com/paintmaker/OnlinePaintMixer/index.html
defacer Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Θέλω να βγάλω μια ομαδοποίηση χρωμάτων. Να μου λέει δηλαδή ότι έχει 5% κόκκινο, 10% μαύρο, 3% πράσινο, 20% μπλε κ.ο.κ. Και συνολικά να έχει το πολύ 20, 30 χρώματα. Δεν ξέρω αν λέμε το ίδιο πράγμα. Αυτό πάντως έπρεπε να το έχεις πει νωρίτερα γιατί ούτε γω καταλάβαινα τι θες μέχρι αυτή τη στιγμή. Άρα λοιπόν αυτό που θες είναι αλγόριθμο για να βρίσκεις πόσα και ποιά είναι αυτά τα χρώματα, μετά η ποσόστωση είναι trivial. Από τη στιγμή που το πόσα και ποιά είναι αλληλοεξαρτώμενα όμως, δεν πρέπει να δώσεις και μια ιδέα για το πώς σκέφτεσαι τις παραμέτρους της λύσης; Πράγματα όπως αυτό το 20-30 που είπες. Όπως το αν έχεις μια εικόνα που αποτελείται μόνο από 20 χρώματα πολύ όμοια, τι θα ήθελες να κάνει ο αλγόριθμος;
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα