[0,1,2,3]
的群集。我正在寻找一种算法,可以针对每种形状以自然*的方式放置标签。我的第一个猜测是将它们放置在群集的“质量中心”,如下所示。对于连续的群集,这很好。但是,对于形状如群集0
中的群集,该方法将失败。在不使用图例的情况下,将标签放置在此图像上的更好方法是什么?*此处自然是主观的,但标签的目的是帮助观看者将特定的xy平面中的数字区域。
#1 楼
将标签放在线段的最里面怎么办?让我们通过片段蒙版的距离变换的最大值来定义最内层。使用Mathematica之类的软件系统和排序系统,很容易实现。
一个蒙版的蒙版段及其距离变换:
重复每个段并定位单个距离变换最大的标签后:
评论
$ \ begingroup $
您介意详细说明“内在”的含义吗?我没有使用Mathematica的权限(使用python),但是我应该能够编写任何提出的解决方案。
$ \ endgroup $
–钩了
2012年3月30日13:08
$ \ begingroup $
@Hooked查看编辑。如果您可以使用计算距离转换的功能,则一切就绪。
$ \ endgroup $
–马特西亚·奥迪西奥(Matthias Odisio)
2012年3月30日13:41
$ \ begingroup $
这看起来很棒,我认为很难实现自我。为了清楚起见,您应用的变换是否是“ ...图像的距离变换,其中每个像素的值被其到最近的背景像素的距离所代替”。
$ \ endgroup $
–钩了
2012年3月30日13:44
$ \ begingroup $
是的,就是这样。只要您不必自己编写距离转换函数,就可以轻松实现此解决方案(快速实现很难编码)
$ \ endgroup $
–马特西亚·奥迪西奥(Matthias Odisio)
2012年3月30日13:49
#2 楼
我认为放置标签的理想位置应满足两个目标:靠近中心,例如$ d $。易读性,例如$ l $。
因此,我们可以通过使整体度量最小化来确定理想点,例如$ l \ times d ^ \ alpha $或$ l + \ alpha d $,其中$ \ alpha $是权衡参数。
确定$ d $很简单。可以将$ l $设置为标签所占区域下的总变化(或其他详细程度的度量)。您可以在线段外的区域中将此值设置为较高的值,以避免出现示例中的问题。
其余的是数值优化。
评论
$ \ begingroup $
这似乎是一种很好的方法,并且足够鲁棒,可以拍摄出更高细节的照片。您是否靠近中心$ d $,我所说的“质量中心”还是@MatthiasOdisio所说的“最内点”?
$ \ endgroup $
–钩了
2012年3月30日13:11
评论
欢迎使用DSP.SE。这是一个很好的问题! =)@Hooked如果将聚类建模为均值和2x2协方差矩阵的二维高斯模型,那么我认为自然位置将仅仅是高斯函数的均值。您是否已经确定聚类的均值?