1

我有從單個圖像數據中提取的2D線段,並希望與從其他源提取的3D線段相匹配。爲此,首先我想使用共線性方程(我知道外部取向參數)將3D線段投影到圖像空間。由於兩條線段都在同一座標系中,所以我希望找到該線條的最佳匹配線段。匹配線段 - 健壯和快速的方式

我在尋找一種快速穩健的算法來匹配相應的線段,以便稍後更新我的3D線段。

如果有人對此有一個想法,請給出一些建議。提前致謝。

+2

你應該有一個投影矩陣,將3D世界座標轉換爲屏幕座標。你能發表更多關於這個嗎? –

+1

@ Felice Pollano:其實,我已經知道內飾,外部取向參數。所以,我的想法是使用col-linearity公式將3D座標轉換爲圖像座標,反之亦然。那麼我有2D或3D線段。 – niro

回答

1

您正在查看類似於line segment intersection的問題。所以,不言而喻,它的解決方案也可能類似。

直接的方法是將每個2D片段與每個3D片段進行比較,最佳匹配是與實際相比最接近預測長度和位置的那個。實際上是2D片段。這就像O(AB),其中A是2D片段的數量,B是3D片段的數量。

可以有所通過排序2D段字典順序,然後使用同一種算法的我在此question詢問以獲得所有線段,其x值是一定量的預期x值內加快該方法一個或兩個線段終點*。在最壞的情況下,您仍然可能遇到O(AB),但平均時間應該更接近O(B log A)。雖然,根據你所說的話你是否可以使用這種方法還不清楚,所以這一段應該被視爲一個大綱。

比O(B log A)或O(A log B)更快可能需要這是一個很好的研究問題。

  • 如果按字典順序對2D終結點進行排序,那麼您可能會得到1個終點。
+0

@M C:謝謝你的迴應。如果我說,如果我想匹配2D線段,從兩個數據源或2個圖像中獲得,那麼哪種方法將是最好的,因爲即使是2個相應的線可能不在相同的位置和長度以及稍微不同的方向等等上。謝謝 – niro

+0

假設你會分別處理每個圖像,我就更少了。所以時間成爲O(A_1B + A2B)和O(B日誌A1 + B日誌A2)。如果你已經合併了這些片段,你應該能夠通過尋找最適合每個方向的O((A1 + A2)B)和O(B log(A1 + A2))將它們分開。儘管在這種情況下最適合的部分可能會更困難。無論如何,任何一種算法都可能正常工作,但如果您的方向關閉,則更快的算法可能會更容易出錯。 – Nuclearman

+0

哦,二進制搜索方法應該雙向工作。與2D線段相比,您可能有更多的3D線段。儘管線段範圍的最終尺寸可能更多。總的來說,如果3D點的數量明顯多於(A1 + A2) Nuclearman