2017-05-04 23 views
0

我有一個細胞骨架的圖像。裏面有很多小的物體,我想計算它們在每個軸之間的長度,並得到一個包含所有這些數據的矩陣。我正在嘗試在matlab中做到這一點。找到很多元素之間的長度

我的最終目標是弄清楚物體之間是否有恆定的距離。 我試過bwdist並沒有任何運氣就使用連接的組件。 你有其他想法嗎?

enter image description here

+0

你對每個軸有什麼意思? X軸和Y軸,歐式距離還是別的? – m7913d

+0

不確定你在詢問「恆定距離」,但「pdist」功能可能是答案。 – Ozcan

回答

0

所以,最終目標是要在全球範圍內拉伸此圖像中的某一方向(線性),使得最近對之間的距離,最終最接近在一起,希望一樣嗎?或者你可以做更復雜的拉伸? (請注意,任意複雜的一個,你可以使它工作:))

如果線性全局一,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->D等等。確保轉換正常化=>SX^2 + SY^2 = 1。如果找不到,唯一有效的轉換是SX = SY = 0,這意味着您在這裏沒有解決方案。顯然,SX和SY需要是真實的。
請注意,除了X1 = X2Y1 = Y2的情況外,此解決方案是唯一的。在這種情況下,抓住比C更多的點來找到這個轉換。
對於每次轉換,請檢查其餘點並查找它們的最近鄰居。如果距離總是與這兩個相同(對給定的容差),那麼很好,你找到了你的轉換。如果沒有,這個轉換不起作用,你應該繼續下一個。

如果你想要一個最小化距離變化(但不要求它們幾乎相等)的變換,我會做一些優化方法並搜索最小值 - 我不知道如何找到一個確切的解決方案。如果你沒有線性或全局拉伸,我也會選擇這個。

0

如果我正確理解你的問題,第一步是獲取圖像中所有質量點的中心點作爲(x,y)座標。然後,您可以輕鬆計算所有點之間的所有距離。我建議看一下這些距離的直方圖,它可以提供關於距離分佈的性質的一些信息(例如,如果它是均勻隨機的,或者是否存在任何模式)。

獲得質點的中心不是一件容易的事情,考慮將圖像轉換爲二進制圖像,或者使用斑點檢測或/和邊緣檢測器進行某種背景減法。

要構建直方圖,您可以使用histogram