HALCONキャリブレーション手順

HALCONキャリブレーション手順

カメラの内部パラメータの設定1.初期値

StartCamPar:= [0.016,0,0.0000074,0.0000074,326,247,652,494]
set_calib_data_cam_param(CalibDataID、0、 'area_scan_division'、StartCamPar)

  1.1カメラのモデル

      (1)エリア・アレイ

      (2)線形アレイ

  (彼らはエリアカメラを話)1.2パラメータ

      (1)事業の歪みモデル

          CameraParam:[フォーカス、カッパ、SX、Syを、Cxとは、Cy、ImageWidth、ImageHeight]

      (2)多項式歪みモデル

          CameraParam:[フォーカス、K1、K2、K3、P1、P2、SX、Syを、Cxとは、Cy、ImageWidth、ImageHeight]

          注:レンズは、テレセントリックレンズである、フォーカス= 0。

  1.3歪みのタイプの選択

      課の歪みモデルは、進行状況だけに適用され、非常に高いではありません、写真のより少ない数のキャリブレーション、多項式歪みモデルの画像

      そして、歪み補正、歪みに対して接線方向にある、高い精度が、それは長い時間がかかります。

  スキルは1.4キャリブレーションのパラメータ値を決定します

      フォーカスF:レンズの公称の焦点距離、例えば、0.016メートル; 0のテレセントリックレンズ用として。
      [カッパ]:一般的な0.0〜
      または:
      のKI、K2、K3、P1およびP2:全て0に初期化することができる
      SXへは:推奨CCDCMOSによって決定されます:値は以下の通りである
           フルイメージ(640×480)のサブサンプリング(320 240 *)
           1/3 "0.0000055 0.0000110 M M -chip
           0.0000086 0.0000172メートルM -chip 1/2"
           0.0000110 0.0000220メートルのM -chip」2/3
      Syを: CCDCMOSは、次のように推奨値が決定されます。

          例えば:
           フル画像(640×480)、サブサンプリングは、(320 * 240)
           1/3 "0.0000055メートル0.0000110メートル-chip
           0.0000086メートル0.0000172メートル-chip 1/2"
           2/3" -chip 0.0000110メートル0.0000220メートル

      :CXとCyは以下のように光学中心の座標値を初期、このパラメータは
         、例えば:
          フルイメージ(640×480)のサブサンプリング(320 * 240)
          CX 320.0 160.0
          サイ240.0 120.0
      ImageWidthは、ImageHeightません:実際の画像サイズは、値を初期化する
       ために例:
      完全な画像(640×480)、サブサンプリング(320 * 240)
      ImageWidthしません640 320
      ImageHeight 480 240

2.キャリブレーションボードの初期化

    CaltabName:= 'caltab_30mm.descr' //キャリブレーションプレート記述ファイル
    set_calib_data_calib_object(CalibDataID、0、CaltabName)

3.データモデルを作成します。

create_calib_data( 'calibration_object'、1、1、CalibDataID)

4.取得画像のキャリブレーション

    異なるポーズシート8-15下カメラ画像は、キャリブレーションプレートは、写真を撮影する(キャリブレーションプレート作動距離に合わせフィールドのサイズ)全視野をカバーしようとし、撮像画像上の直径が10個の未満の画素にはできません

前記校正プレート領域を見つけるために、すべての画像をロードし、中心が決定され、結果は、コンポーネントにロードされ

用I:= 1によってNumImagesへ1
...画像を取得...
  find_caltab(画像、Caltab、CaltabName、SizeGauss、MarkThresh、MinDiamMarks)
  find_marks_and_pose(画像、Caltab、CaltabName、StartCamPar、StartThresh、 
      DeltaThresh、MinThresh、アルファ、MinContLength 、MaxDiamMarks、RCoord、CCoord、StartPose)
  set_calib_data_observ_points(CalibDataID、0、0、I、RCoord、CCoord、 'すべて'、StartPose)
ENDFOR

一般的な原則は、ハルコンはこのように述べ、目標点を抽出することになります。

(MarkThreshの大きさの)閾値続い画像(コアサイズSizeGauss)、上の第一find_caltabオペレータガウシアンフィルタリングは、分割された円形のパネル、find_marks_and_poseオペレーター領域の較正領域を見つけるために、円は、番号を検索します境界は、位置座標などがそうでなければ、それは自動的にStartThreshを調整する、キャリブレーションプレート記述ファイルと一致している必要があり、そのようなStartThreshは、DeltaThresh MinThreshステップ正確な中心を見つける場所を知っているに応じて減少させました。

画像のすべての中心と6を較正することができます

    calibrate_cameras(CalibDataID、エラー)

    エラーが投影エラーリターンを意味します

以下是一个伪代码段.........(明天再续)
*較正パラメータ
CaltabDescr:= 'caltab_100mm.descr'
CaltabThickness:= 0.0064
NumCameras:= 4
NumCalibObjects:= 1
NumPoses:= 20
CameraType:=「area_scan_polynomial '
StartCamPar:= [0.0085、0.0、0.0、0.0、0.0、0.0、6E-6、6E-6、幅* 0.5、高さ* 0.5、幅、高さ]は
*
*カメラキャリブレーションモデルを作成し、設定されたパラメータの
create_calib_data( 'calibration_object'、NumCameras、NumCalibObjects、CalibDataID)
*セット使用カマラ型
set_calib_data_cam_param(CalibDataID、 'すべて'、CameraType、StartCamPar)
*セット使用される較正オブジェクト
set_calib_data_calib_object(CalibDataID、0、CaltabDescr)

おすすめ

転載: www.cnblogs.com/wwwbdabc/p/11652422.html