2012-03-13 10 views
7

Mam wiele zdjęć (dziesiątki tysięcy) dość dużych obrazów JPG. Każdy jest obrazem karty indeksu. Większość z nich ma kolor biały, ale niektóre mają standardowe kolory kart indeksu (these colors).Jak automatycznie klasyfikować obrazy według dominującego koloru?

Kolory odpowiadają atrybutom danych, dlatego chciałbym programowo sklasyfikować te karty według kolorów. Wiem, że możliwe jest wyodrębnienie dominującego koloru z obrazów w przeglądarce internetowej przy użyciu elementu canvas i algorytmu takiego jak color thief, i działa - daje mi wartość rgb wystarczającą do zniszczenia kart.

Ale nie widzę, jak mogłem uruchomić takie rzeczy przez przeglądarkę internetową na tak wielu obrazach.

Zastanawiam się, czy ktoś może polecić narzędzie wiersza poleceń, być może moduł Python lub Ruby, który mógłby zrobić coś podobnego.

Odpowiedz

3

Wygląda na to, że mocno pokrywa się z this question.

Gdybym był w twojej sytuacji, chciałbym spróbować kilku rzeczy. Po pierwsze, możesz uzyskać jedną z kilku bibliotek Pythona, które mogą działać: OpenCV, Mahotas, PIL, lub scikits.image prawdopodobnie wszystkie te rzeczy poradzą sobie z tym, ponieważ musisz po prostu usunąć średnie wartości RGB.

Napisz skrypt, aby załadować każdy obraz i dołączyć jego średnią wartość RGB do listy. Następnie można użyć wbudowanych metod z scikits.learn, aby przeprowadzić kategoryzację średnich lub k-średnich na tej dużej liście kolorów. Ponieważ prawdopodobnie wiesz, ile jest różnych kolorów, k-znaczy to dobry wybór. Ewentualnie, jeśli znasz już wartości RGB standardowych kolorów, to dla każdego załadowanego obrazu oblicz średnią wartość RGB, a następnie "zaklasyfikuj" ten obraz zgodnie ze standardowym, kolorowym wektorem RGB, który znajduje się najbliżej.

Powiązane problemy