Segmentación de imágenes con un modelo mixto gaussiano
Las imágenes son representadas como arreglos de píxeles. Un pixel es un escalar (o vector) que muestra la intensidad (o color). Un modelo mixto gaussiano puede ser utilizado para dividir píxeles en segmentos similares para su posterior análisis.
In[1]:=
pic = ExampleData[{"TestImage", "Aerial"}]
Out[1]=
In[2]:=
pixels = Flatten[ImageData[pic]];
Visualice la distribución de valores de píxeles.
muestre la entrada completa de Wolfram Language
Out[3]=
Encaje los valores de píxeles en un modelo mixto gaussiano de tres componentes.
In[4]:=
gmm = Quiet@
EstimatedDistribution[pixels,
MixtureDistribution[{p1, p2, p3}, {NormalDistribution[a1, a2],
NormalDistribution[b1, b2], NormalDistribution[c1, c2]}]];
Etiquete cada pixel con el componente más probable con un máximo de un estimado de probabilidad 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]];
Visualice la imagen segmentada y compárela con la original.
muestre la entrada completa de Wolfram Language
Out[6]=