2016-09-15 222 views
0

我知道那裏已經發布了關於這個話題的一些答案,但是我不太清楚如何測量攝像機和物體之間的距離。相機和物體之間的距離?

我的目標:

我設法跟蹤一個紅球使用OpenCV的顏色檢測。 現在我試圖將激光指向紅球的中間位置。激光在移動時應始終跟隨紅色球。我正在使用小型伺服電機來打開激光。

Image

我想如果我能測量物體與相機之間的距離,我就能夠計算出伺服需要轉動角度...

我試圖按照Cameron Lowell Palmer's post

我所做的:

我校準我的皮相機V2

F_X:463.64
f_y:463.64
c_x:319,50
c_y:239.5

原始分辨率= 3280 x 2464(我認爲?我不知道如何找到這個...)
焦距= 3.00mm(我認爲?我不知道如何找到這個...)

然後,我應該能夠以像素爲單位測量我的對象大小?我不知道如何...

有人可以幫助我嗎?

+0

發佈樣本圖像...您可以使用HSV顏色空間很好地檢測紅色。也許這會幫助你發現紅球。 – Micka

+0

檢測紅球不是問題,它是測量紅球和攝像機之間的距離...... –

+0

嘗試solvePnP來獲取物體的位置或使用已知大小的真實球和測量的像素大小。距離(mm)= [焦距(mm)*實際高度物體(mm)*圖像高度(px)]/[(物體高度(px)*) – Micka

回答

0

我設法得到了距離,但它不是確切的。

我做了什麼:

  • 我校準相機爲官方教程
  • 我使用cameraMatrix和distortionCoeff不失真我的形象描述。與undistort()函數
  • 我thresholded我的形象過濾出的紅球,如解釋here
  • 我計算出的照相機和使用公式紅球之間的距離:

距離=長焦點在毫米*(以mm真實對象寬度)/(單位:像素虛擬對象寬度)

  • 要獲得虛擬對象的寬度,我畫了一個輪廓在我的閾值的圖像(我用minEnclosingCircle)。然後我計算了這個輪廓的寬度。
  • 我從中檢索功能 'calibrationMatrixValues'

結果圖像我長焦點:Result

距離表(運行的代碼片段):

<table border="1" style="text-align: center"> 
 
    <thead> 
 
     <tr> 
 
     <th>Real Distance (mm)</th> 
 
     <th>Calculated Distance (mm)</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
     <tr> 
 
      <td>100</td> 
 
      <td>83</td> 
 
     </tr> 
 
     <tr> 
 
      <td>200</td> 
 
      <td>174</td> 
 
     </tr> 
 
     <tr> 
 
      <td>300</td> 
 
      <td>275</td> 
 
     </tr> 
 
     <tr> 
 
      <td>400</td> 
 
      <td>384</td> 
 
     </tr> 
 
     
 
    <tbody> 
 
    </table>

現在,我只給結果添加20毫米。如果任何人都可以幫助我得到更準確的測量結果,我將非常感激:-)。

0

你可能通過將像素大小與對象(紅球)大小相關來推斷出近似距離嗎?回到初等代數,你可以推斷出它與一個物體之間已知距離的遠處的高度。在這種情況下,您已知的是對象大小,像素大小和焦距。

+0

是的,我試圖找到此公式的數字 *傳感器的高度(PX) 1)我不知道焦距和傳感器高度 2)我應該考慮我的校準的誤差值 這就是我堅持...... –

+0

也許這可以幫助你:HTTP ://ksimek.github.io/2013/08/13/intrinsic/它討論了相機模型的內在參數。你已經有焦距了嗎?f_x和f_y。 – jamalin

相關問題