Wolfram Language

Probabilité et statistiques étendues

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]:=
Click for copyable input
pic = ExampleData[{"TestImage", "Aerial"}]
Out[1]=
In[2]:=
Click for copyable input
pixels = Flatten[ImageData[pic]];

Visualisez la distribution des valeurs de pixel.

Afficher l'entrée complète de Wolfram Language
In[3]:=
Click for copyable input
Histogram[pixels, ImageSize -> Medium, PlotTheme -> "Detailed"]
Out[3]=

Ajustez les valeurs de pixel à un modèle de mélange gaussien à trois composantes.

In[4]:=
Click for copyable input
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]:=
Click for copyable input
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
In[6]:=
Click for copyable input
GraphicsRow[{Image[0.5 (labels - 1)], pic}, ImageSize -> Large]
Out[6]=

Exemples connexes

de en es ja ko pt-br ru zh