Wolfram Language

Probabilidade e estatística aprofundadas

Segmentação de imagem com um modelo mistura gaussiano

As imagens são representadas como arranjos de pixels. Um pixel é uma gradeza escalar (ou vector) que mostra a intensidade (ou cor). Um modelo mistura de Gauss pode ser usado para dividir os pixels em segmentos semelhantes para posterior análise.

In[1]:=
Click for copyable input
pic = ExampleData[{"TestImage", "Aerial"}]
Out[1]=
In[2]:=
Click for copyable input
pixels = Flatten[ImageData[pic]];

Visualize a distribuição de valores de pixels.

mostre o input completo da Wolfram Language
In[3]:=
Click for copyable input
Histogram[pixels, ImageSize -> Medium, PlotTheme -> "Detailed"]
Out[3]=

Ajuste os valores de pixel em um modelo mistura gaussiano de três componentes.

In[4]:=
Click for copyable input
gmm = Quiet@ EstimatedDistribution[pixels, MixtureDistribution[{p1, p2, p3}, {NormalDistribution[a1, a2], NormalDistribution[b1, b2], NormalDistribution[c1, c2]}]];

Marque cada pixel com o componente mais provável com uma estimativa de máxima probabilidade 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]];

Visualize a imagem segmentada, e compare-a com a original.

mostre o input completo da Wolfram Language
In[6]:=
Click for copyable input
GraphicsRow[{Image[0.5 (labels - 1)], pic}, ImageSize -> Large]
Out[6]=

Exemplos Relacionados

de en es fr ja ko ru zh