Könnte mir bitte jemand helfen zu verstehen, wie die Mean Shift-Segmentierung tatsächlich funktioniert?
Hier ist eine 8x8-Matrix, die ich gerade zusammengestellt habe
103 103 103 103 103 103 106 104
103 147 147 153 147 156 153 104
107 153 153 153 153 153 153 107
103 153 147 96 98 153 153 104
107 156 153 97 96 147 153 107
103 153 153 147 156 153 153 101
103 156 153 147 147 153 153 104
103 103 107 104 103 106 103 107
Kann anhand der obigen Matrix erklärt werden, wie die Segmentierung der mittleren Verschiebung die drei verschiedenen Zahlenebenen trennen würde.
Antworten:
Die Grundlagen zuerst:
Die Mean Shift-Segmentierung ist eine lokale Homogenisierungstechnik, die sehr nützlich ist, um Schattierungen oder Tonalitätsunterschiede in lokalisierten Objekten zu dämpfen. Ein Beispiel ist besser als viele Wörter:
Aktion: Ersetzt jedes Pixel durch den Mittelwert der Pixel in einer Umgebung mit Bereich r, deren Wert innerhalb eines Abstands d liegt.
Die mittlere Verschiebung benötigt normalerweise 3 Eingaben:
Bitte beachten Sie, dass der Algorithmus an den Rändern nicht gut definiert ist, sodass unterschiedliche Implementierungen dort unterschiedliche Ergebnisse liefern.
Ich werde hier NICHT auf die blutigen mathematischen Details eingehen, da sie ohne die richtige mathematische Notation, die in StackOverflow nicht verfügbar ist, nicht angezeigt werden können und auch, weil sie an anderer Stelle aus guten Quellen stammen .
Schauen wir uns die Mitte Ihrer Matrix an:
Bei vernünftigen Auswahlmöglichkeiten für Radius und Abstand erhalten die vier mittleren Pixel den Wert 97 (ihren Mittelwert) und unterscheiden sich von den benachbarten Pixeln.
Berechnen wir es in Mathematica . Anstatt die tatsächlichen Zahlen anzuzeigen, wird eine Farbcodierung angezeigt, damit Sie leichter verstehen, was passiert:
Die Farbcodierung für Ihre Matrix lautet:
Dann nehmen wir eine vernünftige mittlere Verschiebung:
Und wir bekommen:
Wobei alle Mittelelemente gleich sind (bis 97, übrigens).
Sie können mit Mean Shift mehrmals iterieren und versuchen, eine homogenere Färbung zu erzielen. Nach einigen Iterationen erhalten Sie eine stabile nicht-isotrope Konfiguration:
Zu diesem Zeitpunkt sollte klar sein, dass Sie nicht auswählen können, wie viele "Farben" Sie nach dem Anwenden von Mean Shift erhalten. Lassen Sie uns also zeigen, wie es geht, denn das ist der zweite Teil Ihrer Frage.
Um die Anzahl der Ausgabecluster im Voraus festlegen zu können, benötigen Sie beispielsweise Kmeans-Clustering .
Für Ihre Matrix läuft es folgendermaßen ab:
Oder:
Das ist unserem vorherigen Ergebnis sehr ähnlich, aber wie Sie sehen können, haben wir jetzt nur drei Ausgangspegel.
HTH!
quelle
Eine Mean-Shift-Segmentierung funktioniert ungefähr so:
Die Bilddaten werden in den Feature-Space konvertiert
In Ihrem Fall haben Sie nur Intensitätswerte, sodass der Merkmalsraum nur eindimensional ist. (Sie könnten beispielsweise einige Texturmerkmale berechnen, und dann wäre Ihr Merkmalsraum zweidimensional - und Sie würden nach Intensität und Textur segmentieren. )
Suchfenster sind über den Funktionsbereich verteilt
Die Anzahl der Fenster, die Fenstergröße und die anfänglichen Positionen sind für dieses Beispiel beliebig - etwas, das je nach Anwendung genau eingestellt werden kann
Mean-Shift-Iterationen:
1.) Die MEANs der Datenproben in jedem Fenster werden berechnet
2.) Die Fenster werden auf die Positionen verschoben, die ihren zuvor berechneten Mitteln entsprechen
Die Schritte 1.) und 2.) werden bis zur Konvergenz wiederholt, dh alle Fenster haben sich an den endgültigen Positionen niedergelassen
Die Fenster, die an denselben Speicherorten landen, werden zusammengeführt
Die Daten werden gemäß den Fensterdurchläufen geclustert
... z. B. bilden alle Daten, die von Fenstern durchlaufen wurden, die beispielsweise an Position „2“ gelandet sind, einen Cluster, der diesem Standort zugeordnet ist.
Diese Segmentierung erzeugt also (zufällig) drei Gruppen. Das Anzeigen dieser Gruppen im Originalbildformat ähnelt möglicherweise dem letzten Bild in Belisarius 'Antwort . Die Auswahl unterschiedlicher Fenstergrößen und Anfangspositionen kann zu unterschiedlichen Ergebnissen führen.
quelle