Hogyan kell létrehozni n különböző színek bármely n természetes szám?

szavazat
35

Mondjuk n = 100; Hogyan hozhatok létre 100 vizuálisan megkülönböztethető színeket? Ez matematikailag lehetséges?

A kérdést 24/02/2010 19:09
a forrás felhasználó
Más nyelveken...                            


6 válasz

szavazat
4

Azt szeretnénk konvertálni HSL majd végighaladni az értékek az árnyalat (H), miközben a másik 2 érték állandó.

Minden értéket átalakítani a HSL vissza RGB .

Lásd a válaszokat itt és itt .

Ha N nagyon nagy, ezért a színek nem vizuálisan megkülönböztethető akkor ezen a ponton újra végighaladni az összes azonos színárnyalatokat és módosíthatja a többi összetevő, hogy változik a telítettség vagy fényesség. Tehát alapvetően akkor lehetett volna a max számú színárnyalat értékeket, és egyszer, hogy elérje akkor kezdje újra egy másik telítettség vagy fényesség.

Válaszolt 24/02/2010 19:11
a forrás felhasználó

szavazat
4

100 egy csomó szín, de lehet, hogy csinálni, hogy elosztja őket a ritkán lehetséges, a HSB vagy HSL tér; csinálja RGB valószínűleg nehéz.

Például, lehet, hogy úgy döntenek, hogy 10 különböző színárnyalatok, 4 különböző telítettségi szintet, és 3 különböző fényerő beállításokat, ami Önnek akár 120 színben. Akkor el kell, hogy vegye a színtelítettség és fényerő értékeket óvatosan; emberi szem bonyolult és zavaros érzékelők. Ha kezeli a színtér, mint egy tölcsér, akkor érdemes a különböző számú színárnyalatok minden világosság / telítettségi szintje.

Itt egy link a wikipedia bejegyzés HSB .

Válaszolt 24/02/2010 19:11
a forrás felhasználó

szavazat
33

edit:

Nem kell semmilyen szakértelem ezen a területen, és az én matematikai készségek elég átlagos. De van a véleménye, hogy a megoldást erre a problémára sokkal összetettebb és érdekesebb, mint sok válasz van arra utalnak, hiszen megpróbáltam valami hasonlót a közelmúltban, és nem találja a megoldást.

Color Difference

A színérzékelésünket természetesen szubjektív, de van jelentős megállapodás emberek között. Például mindannyian egyetértenek abban, hogy a piros, zöld és kék színek nagyon különböző, és még színvak emberek egyetértenek abban, hogy a fekete és a fehér nagyon különböző.

RGB

A leggyakoribb ábrázolása színes számítógépes rendszerekben az a vektor, (R, G, B) , amely azt sugallja, egy egyszerű távolság függvényében, mint a

RGB szín különbség

Lehetővé teszi, állítsa be a tartomány számára r , g és b a [0, 1] , és látni, hogy ez hogyan működik:

  1. Piros (1, 0, 0) és vörös (1, 0, 0) az a távolság 0 , ami nyilvánvaló
  2. Piros (1, 0, 0) és a sárga (1, 1, 0) az a távolság 1 , amely kisebb, mint a távolság a
  3. Piros (1, 0, 0) és a kék (0, 0, 1) , amely sqrt (2) , amely a megalapozott

Eddig jó. A probléma azonban az, hogy a kék és piros egyforma távolságra 1 fekete (0, 0, 0) , de ha ránézünk a kép ez úgy tűnik, nem igaz:

kék és piros, fekete

Szintén sárga (1, 1, 0) és a bíbor (1, 0, 1) mindkettő egyforma távolságra 1 fehér (1, 1, 1) , amely úgy tűnik, nem értelme vagy:

sárga és bíborvörös, fehér

HSL és HSV

Azt hiszem, nyugodtan feltételezhetjük, hogy az analóg mutatóit a HSL és HSV színséma ugyanazokkal a problémákkal. Ezek a színes programok nem tervezték színek összehasonlításának.

CIEDE2000

Szerencsére vannak tudósok már próbál találni egy jó módja annak, hogy hasonlítsa össze a színeket. Jöttek fel valami bonyolult eljárásokkal, ezek közül a legutóbbi CIEDE2000

CIEDE2000

(a teljes képlet ismertetett a cikk hatalmas )

Ez a mutató veszi az emberi érzékelés figyelembe, mint az a tény, hogy úgy tűnik, hogy nem képesek felismerni kék árnyalatok nagyon jól. Tehát azt mondanám, használja ezt a színkülönbség a funkciót.

A színes szedés algoritmus

naiv megoldás

Néhány javasolt válaszokra a következő algoritmus

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

Ez az algoritmus van néhány probléma:

  1. A távolság a színek nem optimális. Ha elképzeljük a színek, mint a számok egy sorban három szám lenne optimálisan elhelyezve, mint ez:

    | A ----- ----- b c |

    Csomagolás további egy számot ott mozdulatlanul a, b és c egyértelműen rosszabb, mint átszervezve az összes szín.

  2. Az algoritmus nem garantált megszüntetésére . Mi van, ha nincs szín, ami elég messze alkotják a meglévő színeket a listán? A hurok továbbra is örökre

megfelelő megoldás

Nos .. én nem egy van.

Válaszolt 24/02/2010 19:17
a forrás felhasználó

szavazat
2

Nem válasz a kérdésedre, de ha n maximális értékét és az alkalmazás lehetővé teszi, akkor jönne egy előre meghatározott listáját színek, mint ez:

http://en.wikipedia.org/wiki/List_of_colors

Az egyik előnye az, hogy meg tudná mutatni emberileg olvasható színes nevet elemleírásában emberek színvakság.

Válaszolt 24/02/2010 19:31
a forrás felhasználó

szavazat
1

Kezdetnek, ne használja az RGB térben; nehéz megtalálni a rosszabb színtér erre a problémára. (Attól függően, hogy Ön használja a színeket, megjelenítés vagy nyomtatás vagy van rengeteg megkülönböztethetetlenek fekete közelében vagy majdnem teljesen fehér.)

Ha Lab térben vannak percepciós színes modellek (CIE 1996? És a CIE 2000) mérésére vizuális közelsége színben (nyomtatási és megjelenítési sorrendben).

Azt nem mondom, ha mész, hogy kiszámolja a színek egyszer és tárolja az eredményt, vagy ha kell újraszámítását menet közben (és ebben az esetben, ha azt kell determinisztikus vagy sem). Természetesen minden vitát hogyan lehet a legjobban, hogy létrehoz a beállított múlna rajta.

Bár én azt javaslom, hogy egyenletesen elosztjuk a tengelyei a színtér (mondjuk a 8) és használja ezeket a kezdeti pont lenne sokkal hatékonyabb, mint bármilyen véletlenszerű folyamat. Természetesen csak akkor kell összehasonlítani bármely pontján, hogy a szomszédos (és csak akkor, ha már a készlet), amely megment egy hatalmas összehasonlítások száma.

Válaszolt 24/02/2010 20:19
a forrás felhasználó

szavazat
34

Igen. Meghatározása eltérő olyan termék elhalasztását egy színtér, akkor, amikor azt mondjuk maximálisan különböző színt, mit értünk mondani a színeket, amelyek olyan távol az összes többi színt, mint lehetséges. De mivel a színtér nem változik a válasz nem fog megváltozni. És végrehajtása amit jobban illeszkedik az emberi szem és hogy az emberi szem lát színes, mint a CIE-lab de2000 színű távolság miatt redoing minden számítás kemény, de nem tesz egy statikus lista egyszerű. Itt 128 bejegyzés.

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"
};

Itt az első 256 képként.

max távolság

(Balról jobbra) (top-to-bottom). Akkor lehet, hogy még néhány különböző színt, ha meggyőződött arról, minden szín volt, egyenlő távolságra belül a lehető színtér. Ez keresési táblázatban felveszi minden további színt maximálisan különbözik minden korábbi színben helyett kijelölő N kezdetén, majd kidolgozza azokat a színteret. Tehát igen, brute force és a magas szintű színes dsitance algoritmus és te meg, hogy ez ugyanaz meg a színek magad. Az egy nap folyamán, vagy úgy.

Válaszolt 30/11/2013 09:18
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more