Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP/GD2] porównywanie kolorów, Jaki algorytm do porównywania kolorów?
DooBLER
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.08.2006

Ostrzeżenie: (0%)
-----


Witam.

Chciał bym zapytać, czy ktoś wie jakiego algorytmu powinno się używać żeby jak najdokładniej porównać kolory?

Chodzi mi o sytuację, w której mam jeden kolor (nazwijmy go podstawowy) i muszę wybrać spośród kilku innych kolorów najbardziej podobny do tego podstawowego.

W internecie znalazłem coś o geometrii Euklidesowej.
Czyli potraktować kolor ( r,g,b ) jako punkt znajdujący się w sześcianie i obliczać po prostu odległość punktów w przestrzeni 3D za pomocą wzoru:
  1. sqrt( pow(r1-r2,2) + pow(g1-g2,2) + pow(b1-b2,2))

dla zmniejszenia ilości obliczeń można pominąć pierwiastek bo nie wpływa on na wartość porównania.

Jednak rozwiązanie takie nie do końca się sprawdza.
Poniższy przykład zaczerpnąłem z forum EP z tematu, który niestety umarł w 2006 roku:
(IMG:http://img688.imageshack.us/img688/7937/koloryr.gif)

według wzoru podanego wyżej bardziej podobny do podstawowego jest kolor 1, jednak "na oko" widać, że kolor 2 bardziej pasuje.

Nie bardzo wiem co z tym zrobić...

Ten post edytował DooBLER 6.04.2010, 15:53:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
aio
post
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 4
Dołączył: 13.11.2009

Ostrzeżenie: (0%)
-----


Zależy jak bardzo jesteś zawzięty (IMG:style_emoticons/default/winksmiley.jpg)
Bo te same wartości B w HSB mają różną jasność odczuwalną dla R,G,B. Więc jeśli Ci zależy na porównaniu w systemie HSP (P - Perceived Brightness) to ja kiedyś posiłkowałem się tym: http://alienryderflex.com/hsp.html
aczkolwiek później wyciągnąłem wg mnie lepsze wagi do obliczania P z Photoshopa:
Kod
//Photoshop extruded
$PERCEIVE = array (
    RGB => array (
        RED => 0.341607834,
        GREEN => 0.544522888,
        BLUE => 0.113869278
    ),
    RYB => array (
        RED => 0.281081081,
        YELLOW => 0.524324324,
        BLUE => 0.194594595
    )
);

RGB, RYB - to modele mapowania hue
Potrzebne to jest wtedy gdy porównujesz kolory o podobnym oddaleniu H i S wtedy porównanie wg B może być wadliwe.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 17:04