Язык Wolfram Language

Расширенный перечень операций по статистике и теории вероятностей

Сегментация изображения на основе смешанных Гауссовых моделей

Изображения представлены в виде массивов пикселей. Отдельно взятый пиксель представляет собой скаляр (или вектор), который показывает интенсивность (или цвет). Смешанная Гауссова модель может быть использована для разделения пикселей на аналогичные сегменты для дальнейшего анализа изображения.

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

Визуализация распределения значений пикселей.

код на языке Wolfram Language целиком
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 Language целиком
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 zh