Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP/GD] Znajdowanie dominujących kolorów obrazka, żeby było łatwiej z predefiniowaną paletą
c2h5oh
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 6.10.2006

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


Mam predefiniowaną paletę kilkudziesięciu kolorów (40-50) i obrazki. Dla każdego z nich muszę znaleźć 3-4 dominujące w nim kolory z tej palety (nie jest wymagana 100% zgodność kolor piksela-kolor z palety).

Zastanawiam się jak to sensownie zrobić, póki co wymyśliłem, że:
1. Nie ma sensu pracować na dużym obrazku - miniatura 100x100px, którą i tak generuje, wystarczy w zupełności
2. Najprościej (i najdokładniej) byłoby zrzutować tą miniaturę na zadaną paletę i zrobić histogram. Miałoby to również tę zaletę, iż mógłbym bardzo prosto odrzucić kolor tła - wystarczyłoby ignorować kolor zajmujący np ponad 30%. Problem polega na tym, że nie mam pomysłu jak to sensownie zrobić.
Potraktować barwy składowe jako współrzędne w przestrzeni trójwymiarowej i szukać najbliższego punktu? Wymagałoby to liczenia odległości każdego piksela od wszystkich kolorów w palecie i wyboru najmniejszej - czyli dla 40 kolorów i miniatury 100x100px byłoby to 100x100x40 = 400 000 sqrt((x1-x2)^+(y1-y2)^2+(z1-z2)^2) i tyle samo porównań, czyli delikatnie mówiąc paskudnie wydajnościowo.
Co prawda takich operacji nie będzie wiele (max 100-200 na dobę, co będzie stanowić <0,05%), ale i tak wolałbym tego uniknąć.

Ma ktoś jakiś lepszy pomysł? Może być kosztem dokładności, pod warunkiem, że błędne rzutowanie będzie w granicach kilku procent.
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: 20.09.2025 - 16:12