二进制形状的时间序列

时间:2011-12-01 10:44:06

标签: python numpy scipy time-series contour

我一直在努力从形状中提取时间序列,这些时间序列基于距离从0到360的顺时针方向的质心距离。

我的实现根据它们与[1,0]的角度排列轮廓点,矢量可能对某些形状有用,但对于有很多清晰度的形状没有用。请考虑以下代码:

  

im = Image.open(os.path.join(path,filename))

     

im = im.filter(ifilter.MedianFilter)

     

contim = im.filter(ifilter.CONTOUR)

     

contim = contim [1:-1,1:-1]#这是因为这里将边界提取为等高线

     

contpts = np.where(contim == 0)

     

contpts = np.vstack((contpts [0],contpts [1]))#只需要相对于形状的质心顺时针排列这些点

任何人都可以指导我如何从任何形状中提取该特征,我可以从一个点开始并沿着轮廓继续提取到形状中心的所有距离。

有关该功能的更多信息,请查看本文:“LB_Keogh支持使用任意表示和距离测量的旋转不变下的形状的精确索引”

1 个答案:

答案 0 :(得分:0)

如果我理解,在离散平面中有一个几何图形,表示为矩阵。如果条目为1,则您在图中。如果它是0,你就在外面。他想确定边缘中所有点的图形边缘与图形中心之间的距离。他用极坐标系对它进行了参数化。图的中心是原点,现在他想根据角度获得到边界的距离。这就是他所谓的“时间序列”。

这是对的吗?

如果是的话,你不能只是:

1. determine the center of mass,
2. reposition the origin to match the center of mass. 
3. start angle at 0
4. r = 0
5. for each angle in [0,1,...,360] 
      1. If you're in inside the figure, increase r until you reach the border. 
      2. If you're outside the figure, decrease r until you reach the border.
      3. When you reach the border, d(angle) = r

这个数字有一个或多或少的连续边界,这将遵循轮廓。

这会有用吗?