寻找很多元素之间的长度

时间:2017-05-04 07:47:13

标签: matlab image-processing

我有一个细胞骨架的图像。里面有很多小物件,我想计算每个轴中所有这些物体之间的长度,并得到一个包含所有这些数据的矩阵。我试图在matlab中做到这一点。

我的最终目的是弄清楚对象之间是否存在任何距离恒定的轴。 我已经尝试example.com/?并使用连接组件而没有任何运气。 你还有其他想法吗?

enter image description here

2 个答案:

答案 0 :(得分:0)

所以,最终的目标是你想要在某个方向(线性地)全局拉伸这个图像,这样最近的对之间的距离最终最接近,希望是相同的?或者你可以做更复杂的拉伸? (请注意,任意复杂的一个,你总能让它工作:))

如果是线性全局1,则x'和y'中的距离将是x和y中旧距离的简单乘法,应用于每对点。因此,最终的欧氏距离将最终为sqrt((SX*x)^2 + (SY*y)^2),其中SX在x中伸展,SY伸展在y; X和Y是点对之间X和Y的距离。

如果您对“相同”部分感兴趣,解决方案就不那么困难了:

  

找到所有感兴趣的物体,并将它们的X和Y坐标放在N * 2矩阵中   计算X和Y中所有对象对之间的距离。最终将得到2个大小为N * N的矩阵(对角线上为0,对称且真实,不确定该类型矩阵的名称是什么)。
  找到最小距离(比如A和B之间)。

你可能已经有了这个。现在:

  

采取C.进行N-1转换,所有转换都以C->nearestToC = A->B结束。这是一个简单的方程组,你有X1^2*SX^2+Y1^2*SY^2 = X2^2*SX^2+Y2*SY^2
  所以,先说A->B = C->A,然后A->B = C->B,然后A->B = C->D等等。确保转换正常化=> SX^2 + SY^2 = 1。如果找不到,唯一有效的转换是SX = SY = 0,这意味着您没有解决方案。显然,SX和SY需要是真实的。
  请注意,此解决方案是唯一的,除非X1 = X2Y1 = Y2。在这种情况下,抓住除C之外的其他点来找到这种转换   对于每个转换,检查剩余的点并找到它们的所有最近邻居。如果距离总是与这两个距离相同(对于给定的公差),那么,你找到了你的转变。如果没有,则此转换不起作用,您应继续使用下一个转换。

如果你想要一个最小化距离之间变化的变换(但不要求它们几乎相等),我会做一些优化方法并搜索一个最小值 - 否则我不知道如何找到一个精确的解决方案。如果你没有线性或全局拉伸,我也会选择它。

答案 1 :(得分:0)

如果我理解你的问题,第一步是将图像中的所有物体质心点作为(x,y)坐标。然后,您可以轻松计算所有点之间的所有距离。我建议看一下那些距离的直方图,这些直方图可以提供关于距离分布性质的一些信息(例如,如果它是均匀随机的,或者是否有任何模式出现)。

获取质心点并不是一件容易的事,考虑将图像转换为二进制图像,或者使用斑点检测或/和边缘检测器进行某种背景减法。

要构建直方图,您可以使用histogram