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]:=
pic = ExampleData[{"TestImage", "Aerial"}]
Out[1]=
In[2]:=
pixels = Flatten[ImageData[pic]];
Visualisieren Sie die Verteilung von Pixelwerten.
Den kompletten Wolfram Language-Input zeigen
Out[3]=
Passen Sie die Pixelwerte an ein Gaußsches Mischmodell mit drei Komponenten an.
In[4]:=
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]:=
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]=