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
Piro
post
Post #2





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 5.07.2008

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


Widzę przynajmniej 2 sposoby:

1) Porównujesz tylko 2 barwy i liczysz najmniejsze odchylenia od koloru podstawowego (nie jest to idealne rozwiązanie)
Pytanie 1 - którą barwę wybrać jako podstawową:
Oczywiście barwę która ma największą wartość.
Pytanie 2 - jak to porównać:
W pierwszej kolejności sprawdzasz czy istnieje barwa o takiej samej wartości koloru głównego. Jeżeli istnieje kilka takich barw porównujesz kolory 'poboczne' tych barw. Jeżeli nie istnieje taka barwa to szukasz najmniejszego odchylenia od wartości podstawowej.

2) Można oczywiście zrobić dużą bazę/tabelę z przedziałami kolorów podobnych (nie opłaca się rozpisywać całego RGB). Konieczne jest dodanie 'skali' podobieństwa. Po wybraniu kilku kolorów można porównać twoim sposobem. To wyeliminuje widoczne gołym okiem błędy w porównaniu.



PS. Twój sposób jest dobry ponieważ praktycznie kolor nr1 jest bardziej podobny niż kolor nr2 (wg. komputer) jeżeli chodzi o człowieka to człowiek wyłapuje kolor główny tak jak to napisałem w sposobie pierwszym.

Pozdrawiam,
Piro
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: 10.10.2025 - 12:55