Jeśli możesz wdrożyć SVM, możesz skwantyfikować funkcje. :)
Zazwyczaj cechy są kwantowane za pomocą k-średnich grupowania. Najpierw decydujesz, jaki powinien być Twój „rozmiar słownictwa” (powiedz 200 „wizualnych słów”), a następnie uruchom k-oznacza grupowanie dla tej liczby klastrów (200). Deskryptory SIFT to wektory 128 elementów, tj. Punktów w przestrzeni 128-wymiarowej. Możesz więc spróbować je zgrupować, jak wszystkie inne punkty. Wyodrębniasz deskryptory SIFT z dużej liczby obrazów, podobnych do tych, które chcesz sklasyfikować za pomocą zestawu funkcji. (Idealnie powinien to być osobny zestaw obrazów, ale w praktyce ludzie często po prostu uzyskują funkcje z zestawu obrazów treningowych.) Następnie uruchamiasz k-średnich na tym dużym zestawie deskryptorów SIFT, aby podzielić go na 200 (lub cokolwiek) klastrów , tj. przypisać każdy deskryptor do klastra. k-średnich da ci 200 centrów klastrów,
Następnie bierzesz każdy deskryptor SIFT na obrazie i decydujesz, do którego z 200 klastrów należy on, znajdując środek klastra najbliżej niego. Następnie wystarczy policzyć, ile funkcji z każdego klastra masz. Zatem dla każdego obrazu z dowolną liczbą funkcji SIFT masz histogram 200 pojemników. To jest twój wektor cech, który podajesz SVM. (Uwaga: termin cechy jest rażąco przeciążony).
O ile pamiętam, wykonano wiele pracy dotyczącej sposobu znormalizowania tych histogramów. Mogę się mylić, ale wydaje mi się, że przypominam sobie artykuł, który twierdził, że wektor cech binarnych (tj. 1, jeśli obecna jest co najmniej 1 cecha z tego klastra, a 0 w przeciwnym razie) działał lepiej niż histogram. Musisz sprawdzić szczegóły w literaturze, a szczegóły są ważne.
Edycja: Zestaw narzędzi systemu wizyjnego Computer Vision dla MATLAB zapewnia teraz zestaw funkcji .