解释了使用均值平移的图像分割
image
image-processing
image-segmentation
6
0

谁能帮助我了解“均值漂移”细分实际上是如何工作的?

这是我刚刚组成的8x8矩阵

  103  103  103  103  103  103  106  104   
  103  147  147  153  147  156  153  104   
  107  153  153  153  153  153  153  107   
  103  153  147  96   98   153  153  104   
  107  156  153  97   96   147  153  107   
  103  153  153  147  156  153  153  101   
  103  156  153  147  147  153  153  104   
  103  103  107  104  103  106  103  107

使用上面的矩阵可以解释均值移位分割如何将3个不同级别的数字分开?

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

基础知识优先:

Mean Shift分割是一种局部均化技术,对于衰减局部对象的阴影或色调差异非常有用。一个例子胜于许多词:

在此处输入图片说明

行动: 将每个像素替换为范围r附近且其值在距离d之内的像素的平均值。

平均移位通常需要3个输入:

  1. 距离功能,用于测量像素之间的距离。通常可以使用欧几里得距离,但可以使用任何其他定义明确的距离函数。 曼哈顿距离有时是另一个有用的选择。
  2. 半径。将计算此半径内的所有像素(根据上述距离测量)。
  3. 价值差异。从半径r内的所有像素中,我们将仅采用值在此差值以内的像素来计算均值

请注意,该算法在边界处定义不明确,因此不同的实现方式会给您带来不同的结果。

我不会在这里讨论繁琐的数学细节,因为没有适当的数学符号就无法显示它们,在StackOverflow中也不可用,而且因为它们可以从其他地方的好的资源中找到。

让我们看一下矩阵的中心:

153  153  153  153 
147  96   98   153 
153  97   96   147   
153  153  147  156  

在合理选择半径和距离的情况下,四个中心像素的值将为97(其平均值),并且与相邻像素的值将有所不同。

让我们在Mathematica中进行计算。除了显示实际数字,我们还将显示颜色编码,因此更容易理解正在发生的事情:

矩阵的颜色编码为:

在此处输入图片说明

然后我们进行合理的均值平移:

MeanShiftFilter[a, 3, 3]

我们得到:

在此处输入图片说明

所有中心元素都相等的地方(等于97,BTW)。

您可以使用“均值移位”进行多次迭代,以尝试获得更均匀的着色。经过几次迭代,您将获得稳定的非各向同性配置:

在此处输入图片说明

目前,应该清楚的是,在应用均值平移后您无法选择获得多少“颜色”。因此,让我们展示如何执行此操作,因为这是您问题的第二部分。

您需要能够预先设置输出集群的数量的是Kmeans集群之类的东西。

它对您的矩阵以这种方式运行:

b = ClusteringComponents[a, 3]

{{1, 1, 1, 1, 1, 1, 1, 1}, 
 {1, 2, 2, 3, 2, 3, 3, 1}, 
 {1, 3, 3, 3, 3, 3, 3, 1}, 
 {1, 3, 2, 1, 1, 3, 3, 1}, 
 {1, 3, 3, 1, 1, 2, 3, 1}, 
 {1, 3, 3, 2, 3, 3, 3, 1}, 
 {1, 3, 3, 2, 2, 3, 3, 1}, 
 {1, 1, 1, 1, 1, 1, 1, 1}}  

要么:

在此处输入图片说明

这与我们之前的结果非常相似,但是正如您所看到的,现在我们只有三个输出级别。

HTH!

收藏
评论

Mean-Shift细分的工作原理如下:

图像数据被转换为特征空间 特征空间

在您的情况下,您所拥有的只是强度值,因此特征空间只能是一维的。 (例如,您可能会计算一些纹理特征,然后您的特征空间将是二维的,并且将根据强度纹理进行分割)

搜索窗口分布在特征空间上 在此处输入图片说明

在此示例中,窗口的数量,窗口的大小和初始位置是任意的-可以根据特定的应用进行微调

均值平移迭代:

1.)计算每个窗口内数据样本的均值 在此处输入图片说明

2.)将窗口移至等于其先前计算出的均值的位置 在此处输入图片说明

重复步骤1.)和2.),直到收敛为止,即所有窗口都落在最终位置 在此处输入图片说明

最终在相同位置上的窗口被合并 在此处输入图片说明

数据根据窗口遍历进行聚类 在此处输入图片说明

...例如,所有在例如位置“ 2”处结束的窗口所遍历的所有数据将形成与该位置相关联的簇。

因此,这种细分将(偶然地)产生三个组。以原始图像格式查看这些组可能看起来像belisarius答案中的最后一张图片 。选择不同的窗口大小和初始位置可能会产生不同的结果。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号