2010-08-02 5 views
7

mam niby ogólnym R tutaj pytanie:Clustering Photos in R?

zwykle z digicams mamy tendencję do klikania wiele immages które mogą być powtarzalne i można marnować miejsca w Internecie, a także dzielić na Picassa czy narzut, gdy próbuje usunąć niektóre niechciane obrazy.

Czy można grupować zdjęcia za pomocą R? Chodzi mi o to, że Matlab ma pewne zdolności do grupowania w przetwarzaniu obrazów, ale czy jest dostępna taka funkcjonalność czy są jakieś sugestie, aby to zrobić w R?

Proszę podać kilka pomysłów, jeśli istnieją na ten temat.

Odpowiedz

9

Jeśli spojrzeć na CRAN, istnieją różne (I liczą około 10) pakiety do odczytu danych obrazu. I oczywiście istnieją różne pakiety do tworzenia klastrów. W teorii, można po prostu podłączyć dane surowego obrazu do algorytmów grupowania, ale w praktyce, które nie działałyby zbyt dobrze. Pod względem szybkości byłby bardzo powolny, a pod względem dokładności prawdopodobnie byłby również bardzo zły. Nowoczesne techniki klastra danych obrazu opierają się na wyspecjalizowanych funkcjach wyodrębnionych z obrazów i działają na tym. Najlepsze funkcje zależą od aplikacji, ale niektóre z najlepiej znanych to SIFT, SURF i HOG. Starsze techniki opierały się na histogramach kolorów obrazu jako funkcji i jest to całkiem wykonalne ze wspomnianych wyżej paczek R, ale nie jest to bardzo dokładne - trudno odróżnić zdjęcie morza od obrazu niebieskiego pokoju.

Co robić? To zależy od twojego ostatecznego celu, naprawdę. Jednym ze sposobów może być użycie jednego z różnych ekstraktorów funkcji open source, zapisanie danych w tekście lub innym formacie czytelnym dla R, a następnie przetwarzanie danych w R jak zwykle.

Ładna biblioteka C o otwartym kodzie źródłowym do wyodrębniania funkcji z interfejsem cli to vlfeat. Jeśli używasz tego, zalecam użycie gęstego ekstrakcji SIFT na kanałach trójkolorowych. Następnie przedstaw każdy obraz przez połączone wektory SIFT i zastosuj swoją ulubioną technikę grupowania (która może obsłużyć wektory z wymiarami w tysiącach). To nie dałoby ci najnowocześniejszych osiągów, ale to dopiero początek.

This page ma różne referencyjne implementacje ekstraktorów funkcji, ale tylko binarne.

Uwaga: z mojego doświadczenia wynika, że ​​R nie nadaje się zbyt dobrze do dużych, wielowymiarowych zestawów danych (o rozmiarach w zakresie GB). Kocham R na śmierć, ale używaj C++ do tych rzeczy.

+0

Wielka sugestia, zajmie się tym. Dzięki! –

+1

@Neo_Me: Zapamiętałem program Python + C do grupowania obrazów w oparciu o te techniki. O ile widzę, jest to jednorazowy projekt do celów badawczych, ale może być inspiracją. [Yorg] (http://lear.inrialpes.fr/src/yorg/doc/index.html) – dimatura