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](assets.fr/image-segmentation-with-gaussian-mixture-model/In_27.png)
pic = ExampleData[{"TestImage", "Aerial"}]
Out[1]=
![](assets.fr/image-segmentation-with-gaussian-mixture-model/O_25.png)
In[2]:=
![Click for copyable input](assets.fr/image-segmentation-with-gaussian-mixture-model/In_28.png)
pixels = Flatten[ImageData[pic]];
Visualisez la distribution des valeurs de pixel.
Afficher l'entrée complète de Wolfram Language
Out[3]=
![](assets.fr/image-segmentation-with-gaussian-mixture-model/O_26.png)
Ajustez les valeurs de pixel à un modèle de mélange gaussien à trois composantes.
In[4]:=
![Click for copyable input](assets.fr/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]}]];
Étiquetez chaque pixel avec la composante la plus probable d'une estimation de probabilité maximale a posteriori (MAP).
In[5]:=
![Click for copyable input](assets.fr/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]];
Visualisez l'image segmentée et comparez-la avec l'originale.
Afficher l'entrée complète de Wolfram Language
Out[6]=
![](assets.fr/image-segmentation-with-gaussian-mixture-model/O_27.png)