Wolfram 语言

概率和统计延伸

高斯混合模型的图像分割

图像可被表示为像素列阵. 每个像素为一个标量(或向量)显示强度(或颜色). 高斯混合模型可用于将像素分割为相似片段用来进行进一步的分析.

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

可视化像素值的分布.

显示完整的 Wolfram 语言输入
In[3]:=
Click for copyable input
Histogram[pixels, ImageSize -> Medium, PlotTheme -> "Detailed"]
Out[3]=

将像素值拟合于三分量高斯混合模型.

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

以极大后验概率(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]];

可视化分割的图像并与原图进行对比.

显示完整的 Wolfram 语言输入
In[6]:=
Click for copyable input
GraphicsRow[{Image[0.5 (labels - 1)], pic}, ImageSize -> Large]
Out[6]=

相关范例

de en es fr ja ko pt-br ru