2009-09-14 15 views
8

Co to jest najlepszy algorytm (wynik, nie wydajność) do pobierania dominujących kolorów z obrazu. Algorytm powinien odrzucić tło obrazu.Uzyskiwanie dominujących kolorów z obrazu odrzucającego tło

Wiem, że mogę zbudować tablicę kolorów i ich liczbę na obrazie, ale potrzebuję sposobu na ustalenie, co jest tłem i tym, co jest na pierwszym planie, i zachowanie tylko drugiego (pierwszego planu) w umyśle, podczas gdy przeczytaj dominujące kolory.

Problemem jest to bardzo trudne, zwłaszcza dla tła gradientu lub backrounds z wzorami (nie zwykły)

Odpowiedz

1

Jeśli chodzi o moją znajomość algorytmów przetwarzania obrazu rozciąga, nie ma pewny sposób, aby uzyskać „wiedza”; możliwe jest uzyskanie granic między obiektami. Prawdopodobnie będziesz musiał zmierzyć się ze średnią lub z proponowaną metodą liczenia tablic. W tym przypadku będziesz chciał nadać kolorom o wyższym nasyceniu wyższy "wynik", ponieważ są one znacznie bardziej widoczne.

+0

Jeśli pierwszy plan był ostry, a tło lekko nieostre, to na surowym obrazie jest wystarczająco dużo informacji, aby określić pierwszy plan z tła. Powiedziawszy to, nie jestem do końca pewien jak to zrobić :) –

+0

Można to zrobić, ale wymaga dwóch lub więcej niż dwóch stereoskopowych obrazów lub mapy głębi. – aviraldg

8

Izolowanie pierwszego planu od tła jest poza zakresem tej konkretnej odpowiedzi, ale ...

Odkryłam, że zastosowanie filtra zakłóceń obrazu do obrazu będzie wyciągnąć naprawdę dobry zestaw „średnia” zabarwienie.

Przed

http://img12.imageshack.us/img12/825/pixelate1a.jpg

Po

http://img12.imageshack.us/img12/8127/pixelate2.jpg

czasami użyć tej metody w celu uzyskania pallete kolorów ze szczególnym nastroju. Najpierw znajduję fotografię z ogólnymi dźwiękami, które obserwuję, pikselem, a następnie próbką z powstałego obrazu.

(Dzięki this page dla obrazów znalezionych przez Google Image Search)

+0

Znam tę technikę, ale nie jest to odpowiedź na moje pytanie. Najprostszym sposobem powyższego podejścia jest: @product = Product.find (params [id]) @image = Magyia :: ImageList.new (@ product.photo.path) @image = @image. quantize (quantization_level) – astropanic

+0

@Drew: tak jak piksele to w zasadzie tylko średnie piksele w bloki, więc tak naprawdę nie odpowiada na to pytanie. – MusiGenesis

+0

@MusiGenesis - Wskazałem, że nie znajdzie pierwszego planu z tła (pierwsze zdanie z mojej odpowiedzi), jednak jest to łatwy i użyteczny sposób na znalezienie dominujących kolorów z obrazu (pierwsze zdanie pytania) .) –

4

powiedziałbym tego problemu jest bliżej do „niemożliwe” niż „bardzo trudne”. Jedynym podejściem do tego, jakie mogę sobie wyobrazić, byłoby założenie, że tło obrazu może składać się z brył o podobnych kolorach, podczas gdy na pierwszym planie prawdopodobnie będą mniejsze bloki o odmiennych kolorach.

Jeśli to przypuszczenie jest na ogół prawdziwe, można zeskanować cały obraz i piksele waga w zależności od tego, jak podobne lub nie są podobne do sąsiednich pikseli. Innymi słowy, jeśli sąsiednie piksele (prawdopodobnie w jakimś dowolnym promieniu) miałyby podobne kolory, to nie uwzględniłby tego piksela w ogólnej ocenie. Jeśli sąsiedzi mają tendencję do bardzo różnych kolorów, ważysz mocno piksel, być może proporcjonalnie do stopnia różnicy.

Może to nie działać idealnie, ale z pewnością miałoby tendencję do wykluczania dużych pokosów o podobnych kolorach.

6

to całkiem fajne miejsce na informacje na ten temat, nie wspominając już o ich pozornie darmowym interfejsie API XML, który będzie tworzył opisową statystykę kolorów dla wybranego obrazu, zgłaszając następujące sformatowane za pomocą próbek w HTML lub jako XML ...

  • jaki jest średni odcień koloru, nasycenie i wartość na moim zdjęciu?
  • jaki jest kolor RGB, który jest najbardziej reprezentatywny dla obrazu?
  • Jak wyglądają histogramy RGB i HSV?
  • jaki jest czytelny dla człowieka opis kolorów (np. Ciemny czysty niebieski)?

Celem tego narzędzia jest generowanie metadanych, który podsumowuje charakterystyki kolorów wykonania Obrazek dla włączenia do bazy danych obrazu, takich jak Flickr. W szczególności narzędzie to służy do generowania metadanych dla grupy kolorów Flickr.

enter image description here

Z mojego doświadczenia wynika jednak .. to narzędzie nadal zdobywa/oczywistą „main” kolor „czytelny dla człowieka”, dużo czasu. Głupie maszyny!