Ας υποθέσουμε ότι n = 100? Πώς μπορώ να δημιουργήσει 100 οπτικά διαφορετικά χρώματα; Είναι αυτό μαθηματικά δυνατόν;
Πώς να δημιουργήσετε n διαφορετικά χρώματα για κάθε φυσικό αριθμό n;
Θέλετε να μετατρέψετε σε HSL και στη συνέχεια να επαναλάβει μέσα από τις αξίες της απόχρωσης (Η) διατηρώντας παράλληλα τα άλλα 2 τιμές σταθερές.
Για κάθε τιμή που μετατρέψετε από HSL πίσω σε RGB .
Δείτε τις απαντήσεις μου εδώ και εδώ .
Αν Ν σας είναι πολύ μεγάλη και ως εκ τούτου τα χρώματα δεν είναι οπτικά διακριτές θα μπορούσε σε εκείνο το σημείο επαναλάβει πάνω από όλα τα ίδια χρώματα και να αλλάξετε τα άλλα συστατικά για να ποικίλει τον κορεσμό ή φωτεινότητα. Έτσι, βασικά θα μπορούσατε να έχετε ένα μέγιστο αριθμό τιμών απόχρωση να χρησιμοποιήσετε, και μια φορά που χτύπησε μπορείτε να ξεκινήσετε από την αρχή με ένα διαφορετικό κορεσμό ή φωτεινότητα.
100 είναι πολλά χρώματα, αλλά ίσως να είναι σε θέση να το κάνει με τη διανομή τους ως αραιά το δυνατόν περισσότερο στην HSB ή χώρο HSL? να κάνει αυτό το RGB είναι μάλλον δύσκολο.
Για παράδειγμα, μπορείτε να αποφασίσετε να χρησιμοποιήσετε 10 διαφορετικές αποχρώσεις, 4 διαφορετικά επίπεδα κορεσμού, και 3 διαφορετικές ρυθμίσεις φωτεινότητας, ότι θα δώσει μέχρι και 120 χρώματα. Θα πρέπει να επιλέξετε τις τιμές κορεσμού και φωτεινότητας με προσοχή? ανθρώπινα μάτια είναι περίπλοκη και σύγχυση αισθητήρες. Εάν θεωρήσουν ότι το χρωματικό χώρο σαν κώνος, μάλλον θα θέλετε διαφορετικό αριθμό αποχρώσεων σε κάθε επίπεδο φωτεινότητας / κορεσμού.
Εδώ είναι μια σύνδεση με την wikipedia είσοδο στην HSB .
Επεξεργασία:
Δεν έχω καμία εμπειρία σε αυτόν τον τομέα και τις ικανότητές μαθηματικά μου είναι αρκετά μέσο όρο. Αλλά έχω την άποψη ότι η λύση σε αυτό το πρόβλημα είναι πιο πολύπλοκο και ενδιαφέρον από πολλές απαντήσεις προτείνω εδώ, από τότε που προσπάθησα να κάνω κάτι παρόμοιο πρόσφατα και δεν βρούμε μια λύση.
Διαφορά χρώματος
Η αντίληψη του χρώματος είναι φυσικά υποκειμενική, αλλά υπάρχει σημαντική συμφωνία μεταξύ των ανθρώπων. Για παράδειγμα, μπορούμε όλοι να συμφωνήσουμε ότι το κόκκινο, το πράσινο και το μπλε είναι πολύ διαφορετικά χρώματα, ακόμα και αχρωματοψία άνθρωποι συμφωνούν ότι το μαύρο και το λευκό είναι πολύ διαφορετικά.
RGB
Η πιο κοινή αναπαράσταση του χρώματος σε συστήματα ηλεκτρονικών υπολογιστών είναι το διάνυσμα (R, G, β) το οποίο προτείνει μια απλή συνάρτηση απόστασης, όπως

Αφήνει ρυθμίσετε το εύρος για r , g και b να [0, 1], και να δούμε πώς λειτουργεί αυτό:
- Κόκκινο (1, 0, 0) και κόκκινο (1, 0, 0) έχει την απόσταση των 0 , η οποία πρέπει να είναι προφανές
- Κόκκινο (1, 0, 0) και κίτρινο (1, 1, 0) έχει την απόσταση της 1 , η οποία είναι μικρότερη από την απόσταση του
- Κόκκινο (1, 0, 0) και το μπλε (0, 0, 1) η οποία είναι sqrt (2) , η οποία είναι εύλογη
Μέχρι εδώ καλά. Το πρόβλημα όμως είναι ότι το μπλε και το κόκκινο έχουν την ίδια απόσταση 1 από μαύρο (0, 0, 0) , αλλά όταν πρόκειται για την εικόνα αυτή δεν φαίνεται να ισχύει και:

Επίσης κίτρινο (1, 1, 0) και ματζέντα (1, 0, 1) και οι δύο έχουν την ίδια απόσταση 1 από λευκό (1, 1, 1) , η οποία δεν φαίνεται να έχει νόημα, είτε:

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

(η πλήρης τύπος που περιγράφεται στο άρθρο αυτό είναι τεράστια )
Αυτή η μέτρηση γίνεται ανθρώπινη αντίληψη υπόψη, όπως και το γεγονός ότι φαίνεται να είναι σε θέση να διακρίνουν τις αποχρώσεις του μπλε πολύ καλά. Έτσι θα έλεγα ότι χρησιμοποιούμε αυτό ως συνάρτηση χρώμα διαφορά μας.
Η επιλογή Αλγόριθμος χρώμα
naive λύση
Μερικές απαντήσεις πρότεινε τον ακόλουθο αλγόριθμο
colors = []
for n in range(n):
success=False
while not success:
new_color = random_color()
for color in colors:
if distance(color, new_color)>far_enough:
colors.append(new_color)
success = True
break
Ο αλγόριθμος αυτός έχει κάποια προβλήματα:
Η απόσταση των χρωμάτων δεν είναι η βέλτιστη. Αν φανταστούμε τα χρώματα να είναι σαν τους αριθμούς σε μια γραμμή, τρεις αριθμοί θα βέλτιστη απόσταση μεταξύ τους, όπως αυτό:
| Α ----- β ----- γ |
Συσκευασία επιπλέον έναν αριθμό εκεί χωρίς να κινείται a, b και c είναι σαφώς χειρότερη από τον νέο προσανατολισμό όλα τα χρώματα.
Ο αλγόριθμος δεν είναι εγγυημένη για να τερματίσει . Τι θα συμβεί αν δεν υπάρχει χρώμα που είναι αρκετά αποτελούν τα υπάρχοντα χρώματα στη λίστα; Ο βρόχος θα συνεχίσει για πάντα
Η σωστή λύση
Λοιπόν .. δεν έχω μία.
Δεν είναι μια απάντηση στην ερώτησή σας, αλλά, αν n έχει μια μέγιστη τιμή και η εφαρμογή σας το επιτρέπει, μπορείτε να χρησιμοποιήσετε μια προκαθορισμένη λίστα των χρωμάτων όπως αυτό:
http://en.wikipedia.org/wiki/List_of_colors
Ένα πλεονέκτημα είναι ότι θα μπορούσε να δείξει ένα ανθρωπίνως αναγνώσιμο όνομα του χρώματος σε ένα tooltip για τα άτομα με αχρωματοψία.
Για ορεκτικά, μην χρησιμοποιείτε χώρο RGB? είναι δύσκολο να βρείτε ένα χειρότερο χρωματικό χώρο για αυτό το πρόβλημα. (Ανάλογα με το αν χρησιμοποιείτε τα χρώματα για την εμφάνιση ή για εκτύπωση θα πρέπει είτε τεράστιους αριθμούς των δυσδιάκριτες χρώματα κοντά στο μαύρο ή σχεδόν λευκό).
Εάν χρησιμοποιείτε το Lab χώρο, υπάρχουν αντιληπτική μοντέλα χρώματος (CIE 1996; και CIE 2000) για τη μέτρηση της οπτικής εγγύτητα των χρωμάτων (για εκτύπωση και εμφάνιση, αντίστοιχα).
Δεν χρειάζεται να πω αν θα πάμε να υπολογίσουμε τα χρώματα φορά και να αποθηκεύσετε το αποτέλεσμα, ή αν πρέπει να υπολογισθεί εκ νέου on the fly (και σε αυτή την περίπτωση θα πρέπει να είναι ντετερμινιστικό ή όχι). Προφανώς, κάθε συζήτηση για τον καλύτερο τρόπο για να δημιουργήσει το σύνολο θα εξαρτάται από αυτή.
Αν και θα ήθελα να προτείνω ομοιόμορφα διαίρεση των αξόνων του χρωματικού χώρου (δηλαδή σε 8) και τη χρήση αυτών ως αρχική σημεία θα είναι πολύ πιο αποτελεσματικό από οποιαδήποτε τυχαία διαδικασία. Σίγουρα το μόνο που χρειάζεται για να συγκρίνει κάθε σημείο με τους γείτονές της (και μόνο αν είναι ήδη στο σύνολο), η οποία θα σας σώσει ένα τεράστιο αριθμό των συγκρίσεων.
Ναι. Καθορισμός ξεχωριστή είναι ένα προϊόν της αναβολής σε ένα χρωματικό χώρο, στη συνέχεια, όταν λέμε μέγιστη διαφορετικά χρώματα αυτό που θέλω να πω είναι τα χρώματα που είναι τόσο μακριά από όλα τα άλλα χρώματα όσο το δυνατόν. Αλλά δεδομένου ότι ο χώρος χρώμα δεν αλλάζει την απάντηση δεν πρόκειται να αλλάξει. Και την εφαρμογή κάτι που ταιριάζει καλύτερα με τα ανθρώπινα μάτια και πώς τα ανθρώπινα μάτια βλέπουν το χρώμα σαν CIE-εργαστήριο απόσταση χρώμα de2000 κάνει ξανακάνει όλους τους υπολογισμούς σκληρά, αλλά κάνει μια στατική λίστα εύκολη. Εδώ είναι 128 συμμετοχές.
private static final String[] indexcolors = new String[]{
"#000000", "#FFFF00", "#1CE6FF", "#FF34FF", "#FF4A46", "#008941", "#006FA6", "#A30059",
"#FFDBE5", "#7A4900", "#0000A6", "#63FFAC", "#B79762", "#004D43", "#8FB0FF", "#997D87",
"#5A0007", "#809693", "#FEFFE6", "#1B4400", "#4FC601", "#3B5DFF", "#4A3B53", "#FF2F80",
"#61615A", "#BA0900", "#6B7900", "#00C2A0", "#FFAA92", "#FF90C9", "#B903AA", "#D16100",
"#DDEFFF", "#000035", "#7B4F4B", "#A1C299", "#300018", "#0AA6D8", "#013349", "#00846F",
"#372101", "#FFB500", "#C2FFED", "#A079BF", "#CC0744", "#C0B9B2", "#C2FF99", "#001E09",
"#00489C", "#6F0062", "#0CBD66", "#EEC3FF", "#456D75", "#B77B68", "#7A87A1", "#788D66",
"#885578", "#FAD09F", "#FF8A9A", "#D157A0", "#BEC459", "#456648", "#0086ED", "#886F4C",
"#34362D", "#B4A8BD", "#00A6AA", "#452C2C", "#636375", "#A3C8C9", "#FF913F", "#938A81",
"#575329", "#00FECF", "#B05B6F", "#8CD0FF", "#3B9700", "#04F757", "#C8A1A1", "#1E6E00",
"#7900D7", "#A77500", "#6367A9", "#A05837", "#6B002C", "#772600", "#D790FF", "#9B9700",
"#549E79", "#FFF69F", "#201625", "#72418F", "#BC23FF", "#99ADC0", "#3A2465", "#922329",
"#5B4534", "#FDE8DC", "#404E55", "#0089A3", "#CB7E98", "#A4E804", "#324E72", "#6A3A4C",
"#83AB58", "#001C1E", "#D1F7CE", "#004B28", "#C8D0F6", "#A3A489", "#806C66", "#222800",
"#BF5650", "#E83000", "#66796D", "#DA007C", "#FF1A59", "#8ADBB4", "#1E0200", "#5B4E51",
"#C895C5", "#320033", "#FF6832", "#66E1D3", "#CFCDAC", "#D0AC94", "#7ED379", "#012C58"
};
Εδώ είναι το πρώτο 256 ως εικόνα.

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













