2012-05-27 95 views
0

到目前爲止我的過程如下:查找距離標記

標記是正方形標記物的已知大小的,一個例子是下面:

enter image description here

  1. 檢測標記
  2. 使用POSIT獲取標記相對於相機的平移+旋轉 - 結果是相機座標空間中矩陣的變換矩陣。

現在我試圖找到兩個標記的相關角之間的距離,單位爲毫米。下面是一個例子:

enter image description here

通過距離我的意思的歐幾里得距離(SQRT(X^2 + Y^2 + Z^2))。

我想這應該是可能的,因爲我有一個參考mm距離(任何標記的邊緣是已知的毫米距離),但我不確定我將如何從這兩個轉換我有矩陣。

編輯:

到目前爲止,我已成功通過第一的倒數第二變換矩陣相乘,並查看結果的翻譯得到標記中心之間的相對距離。

我覺得我可以通過獲取正常和點來獲得每個標記的平面。從那裏我應該能夠通過觀察2D點如何與該平面相交併從那裏獲得角落的三維座標,並且從那裏應該很容易。我不完全確定如何獲得標記的法線,以及如何確定代表角的二維座標與飛機相交的點。

額外的信息:

  • 使用XNA和C#
  • 使用AForge.net視頻輸入和標記檢測。
+0

[你有什麼試過?](http://whathaveyoutried.com) –

回答

1

爲了簡化計算,我將假設標記位於XY平面上。否則,您必須進行一些預測才能將相機位置放入標記平面。

給定翻譯矩陣,您應該可以定義相機的位置。我們將嘗試找到這些點的座標之間的絕對差異

假設pC(xc,yc)是攝像頭位置,pA(xa,ya)是第一個標記位置,pB(xb,yb)是第二個標記位置。

LAC A和攝像機之間的絕對距離,這是公知的

LBC B和照相機之間的絕對距離,這是公知的

LAB B和A

之間的絕對距離dAC(dcax,dcay)照相機與A之間的曼哈頓距離,

dBC(dcbx,dcby)和dAB(dabx,daby)也是如此。

dcax = SQRT(LAC^2 - (XC-XA)^ 2)

dcay = SQRT(LAC^2 - (YC-YA)^ 2)

DCBX = SQRT(LBC^2 - (XC-XB)^ 2)

dcby = SQRT(LBC^2 - (YC-YB)^ 2)

dabx = ABS(DCBX-dcax)

daby = ABS( dcby-dcay)

實驗室=開方(dabx^2 + daby^2)

image

PS:這是一個很長的時間,因爲我已經做到了這一點,將不勝感激一個雙重檢查:)