/ / Wyszukiwanie wydłużonych klastrów przy użyciu MATLAB - matlab, przetwarzanie obrazów, uczenie maszynowe, analiza skupień, segmentacja obrazu

Znalezienie wydłużonych klastrów za pomocą MATLAB - matlab, przetwarzanie obrazu, uczenie maszynowe, analiza skupień, segmentacja obrazu

Pozwól mi wyjaśnić, co próbuję zrobić. Mam wykres punktów / pikseli obrazu w przestrzeni RGB. Próbuję znaleźć wydłużone gromady w tej przestrzeni. Jestem całkiem nowy w technikach klastrowania i być może nie robię poprawnie, próbuję grupować używając klastrów k-średnich firmy MATLAB, ale wydaje się, że to nie jest najlepsze podejście w tym przypadku.

Muszę znaleźć "klastry kolorów".

To właśnie otrzymuję po zastosowaniu K-średnich na obrazie. wprowadź opis obrazu tutaj

Oto jak powinno wyglądać:

wprowadź opis obrazu tutaj

dla obrazu podobnego do tego:

wprowadź opis obrazu tutaj

Czy ktoś może mi powiedzieć, gdzie idę źle i co mogę zrobić, aby poprawić moje wyniki?


Uwaga: przepraszam za zdjęcia o niskiej rozdzielczości, są to najlepsze, jakie mam.

Odpowiedzi:

1 dla odpowiedzi № 1

k-oznacza w zasadzie założenie, że klastry sąw przybliżeniu sferyczny. W twoim przypadku zdecydowanie NIE są. Spróbuj dopasować Gaussa do każdego skupienia z niesferyczną macierzą kowariancji. Zasadniczo będziesz postępował zgodnie z tymi samymi krokami maksymalizacji oczekiwań (EM), co w k-średnich, z jedynym wyjątkiem, że będziesz także modelował i dopasowywał macierz kowariancji.

Oto zarys algorytmu

  1. init: przypisz każdy punkt losowo do jednego z nich k klastry.
  2. Dla każdego oszacowania klastra średnia i kowariancja
  3. Dla każdego punktu oszacuj jego prawdopodobieństwo przynależności do każdego klastra
    zauważ, że prawdopodobieństwo to opiera się nie tylko na odległości do środka (średniej), ale także na kształcie klastra, ponieważ jest on kodowany przez macierz kowariancji
  4. powtórz etapy 2 i 3 do momentu uzyskania zbieżności lub do momentu przekroczenia predefiniowanej liczby iteracji

2 dla odpowiedzi nr 2

Próbujesz powtórzyć wyniki tego artykułu? Powiedziałbym, po prostu rób to, co zrobili.

Jednak dodam, ponieważ są pewne problemy z bieżącymi odpowiedziami.

1) Tak, twoje klastry nie są sferyczne - co jestzałożenie k-znaczy czyni. DBSCAN i MeanShift to dwie bardziej popularne metody obsługi takich danych, ponieważ mogą obsługiwać niesferyczne dane. Jednak dane wydają się mieć jedną dużą centralną grupę, która rozprzestrzenia się na zewnątrz w kilku skończonych kierunkach.

W przypadku DBSCAN oznacza to, że wszystko znajdziew jeden klaster, lub wszystko jest jego własnym klastrem. Ponieważ DBSCAN ma założenie jednolitej gęstości i wymaga, aby klastry były rozdzielone pewnym marginesem.

MeanShift prawdopodobnie będzie miał trudności, ponieważwszystko wydaje się pochodzić z jednej centralnej bryły - tak będzie to obszar o największej gęstości, w którym punkty będą się zbliżać, i zbiegają się do jednej dużej gromady.

Moja rada to zmiana przestrzeni kolorów. RGB ma problemy, i to założenia większość algorytmówprawdopodobnie nie utrzyma się pod tym dobrze. Jaki algorytm grupowania powinien zostać użyty, prawdopodobnie zmieni się w przestrzeni różnych obiektów, ale mam nadzieję, że ułatwi to obsługę problemu.


1 dla odpowiedzi nr 3

Spojrzeć na oparte na gęstości algorytmy klastrowania, takie jak DBSCAN i MeanShift. Jeśli robisz to dla segmentacji, możesz chcieć dodać współrzędne pikseli do swoich wektorów.