Bildsegmentierung mithilfe eines Gaußschen Mischmodells
Bilder werden als Arrays von Pixeln dargestellt. Ein Pixel ist ein Skalar (oder Vektor), der die Intensität (oder Farbe) angibt. Ein Gaußsches Mischmodell kann verwendet werden, um Pixel zur weiteren Analyse in ähnliche Segmente zusammenzufassen.
In[1]:=
![Click for copyable input](assets.de/image-segmentation-with-gaussian-mixture-model/In_27.png)
pic = ExampleData[{"TestImage", "Aerial"}]
Out[1]=
![](assets.de/image-segmentation-with-gaussian-mixture-model/O_25.png)
In[2]:=
![Click for copyable input](assets.de/image-segmentation-with-gaussian-mixture-model/In_28.png)
pixels = Flatten[ImageData[pic]];
Visualisieren Sie die Verteilung von Pixelwerten.
Den kompletten Wolfram Language-Input zeigen
Out[3]=
![](assets.de/image-segmentation-with-gaussian-mixture-model/O_26.png)
Passen Sie die Pixelwerte an ein Gaußsches Mischmodell mit drei Komponenten an.
In[4]:=
![Click for copyable input](assets.de/image-segmentation-with-gaussian-mixture-model/In_30.png)
gmm = Quiet@
EstimatedDistribution[pixels,
MixtureDistribution[{p1, p2, p3}, {NormalDistribution[a1, a2],
NormalDistribution[b1, b2], NormalDistribution[c1, c2]}]];
Beschriften Sie jedes Pixel mit der wahrscheinlichsten Komponente unter Verwendung des Maximum-a-posteriori-Schätzverfahrens.
In[5]:=
![Click for copyable input](assets.de/image-segmentation-with-gaussian-mixture-model/In_31.png)
pxi = Table[PDF[dist, pixels], {dist, Last[gmm]}];
pxi = Transpose[pxi]/Total[pxi First[gmm]];
labels = ArrayReshape[Ordering[#, -1] & /@ pxi, ImageDimensions[pic]];
Visualisieren Sie das segmentierte Bild und vergleichen Sie es mit dem Original.
Den kompletten Wolfram Language-Input zeigen
Out[6]=
![](assets.de/image-segmentation-with-gaussian-mixture-model/O_27.png)