2016-09-15 9 views
0

私はすでにこのトピックについていくつかの回答が掲載されていることを知っていますが、カメラとオブジェクトの距離を測定する方法はあまりわかりません。カメラとオブジェクトの距離は?

私の目標:

私はOpenCVのを使用して色検出で赤いボールを追跡するために管理。 今、私は赤いボールの真ん中にレーザーを向けようとしています。赤色のボールが動いたとき、レーザーは常に赤色のボールに追従すべきです。私は小さなサーボモータを使ってレーザーを回しています。

Image

私は従うことをしようとした

...私は、オブジェクトとカメラの間の距離を測定することができれば、私はサーボをオンにする必要が角度を計算することができるであろうと思っていますCameron Lowell Palmer's post。私が何をしたか

私は

V2

私のPiカメラを校正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を試して、オブジェクトの配置を取得するか、実際のボールの既知のサイズとピクセルの測定サイズを使用します。 – Micka

答えて

0

私は距離を得ることができましたが、それは本当に正確ではありません。

私が何をしたか

  • 公式チュートリアル
  • で説明したように、私はcameraMatrixとdistortionCoeffを使用して、私の画像を歪みなく、カメラを校正。 undistort()関数を使って
  • hereのように、赤いボールをフィルタリングするために画像を閾値処理しました。ミリメートル*(MMにおける実オブジェクトの幅)/(PXにおける仮想物体幅)

距離=焦点距離:I式を用いてカメラと赤いボールとの間の距離を算出

    • は、仮想オブジェクトの幅を取得するには、私は私の閾値処理画像(私はminEnclosingCircleを使用)の周りに輪郭を描きました。私はこの輪郭の幅を計算しました。 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>

    • 私は関数 'calibrationMatrixValues'

    結果画像からの私の焦点距離を取得し

    今のところ、結果に20mmを追加するだけです。誰かが私にもっと正確な測定を手伝うことができれば、私は非常に感謝します:-)。

    0

    ピクセルサイズをオブジェクト(赤い球)のサイズに関連付けることで、おおよその距離を推測できますか?初等代数に戻って、あなたはそれと物体との間の既知の距離を遠く離れた何かの高さを推論します。この場合、オブジェクトサイズ、ピクセルサイズ、および焦点距離は既知です。

    +0

    はい、私はこの数式の数を見つけようとしています 距離(mm)= [焦点距離(mm)*実高さオブジェクト(mm)*画像の高さ(px)] /(オブジェクトの高さ(px)*センサーの高さ(ピクセル)] 1)私は多分これはあなたを助けることができる –

    +0

    ...私は立ち往生午前どこだ私のキャリブレーション の不正確値を考慮しなければならない)の焦点距離とセンサの高さ 2わからないです:HTTP ://ksimek.github.io/2013/08/13/intrinsic/カメラモデルの本質的なパラメータについて説明します。あなたはすでに焦点距離を持っています:あなたはf_xとf_yではありません。 – jamalin

    関連する問題