Segmentation d'image avec le modèle de mélange gaussien
Les images sont représentées sous forme de tableaux de pixels. Un pixel est un scalaire (ou un vecteur) qui montre l'intensité (ou la couleur). Un modèle de mélange gaussien peut être utilisé pour diviser les pixels en segments similaires pour une analyse plus approfondie.
In[1]:=
pic = ExampleData[{"TestImage", "Aerial"}]
Out[1]=
In[2]:=
pixels = Flatten[ImageData[pic]];
Visualisez la distribution des valeurs de pixel.
Afficher l'entrée complète de Wolfram Language
Out[3]=
Ajustez les valeurs de pixel à un modèle de mélange gaussien à trois composantes.
In[4]:=
gmm = Quiet@
EstimatedDistribution[pixels,
MixtureDistribution[{p1, p2, p3}, {NormalDistribution[a1, a2],
NormalDistribution[b1, b2], NormalDistribution[c1, c2]}]];
Étiquetez chaque pixel avec la composante la plus probable d'une estimation de probabilité maximale a posteriori (MAP).
In[5]:=
pxi = Table[PDF[dist, pixels], {dist, Last[gmm]}];
pxi = Transpose[pxi]/Total[pxi First[gmm]];
labels = ArrayReshape[Ordering[#, -1] & /@ pxi, ImageDimensions[pic]];
Visualisez l'image segmentée et comparez-la avec l'originale.
Afficher l'entrée complète de Wolfram Language
Out[6]=