【HALCON】gen_binocular_rectification_map 関数について - ステレオカメラペアの画像整列マッピング

【HALCON】gen_binocular_rectification_map 関数について - ステレオカメラペアの画像整列マッピング

2024-08-20

2024-08-20

HALCONgen_binocular_rectification_map関数は、ステレオカメラペアの画像を整列させ、エピポーラ線が水平軸に一致するように変換を行うためのマッピングデータを生成します。これにより、ディスパリティや距離の計算が効率化され、3D計測などでの精度向上が期待できます。

この記事では、この関数の使い方やパラメータの詳細、実際のコード例を通じて、gen_binocular_rectification_map関数の役割と使用方法を解説します。

関数の概要

gen_binocular_rectification_map 関数は、ステレオカメラペアの画像を共通の整列された画像面にマッピングするための変換マップを生成します。これにより、対応するエピポーラ線が一直線に揃い、距離やディスパリティの計算が容易になります。

関数のシグネチャ

gen_binocular_rectification_map(Map1, Map2, CamParam1, CamParam2, RelPose, SubSampling, Method, MapType : CamParamRect1, CamParamRect2, CamPoseRect1, CamPoseRect2, RelPoseRect)
  • Map1
    出力オブジェクト。カメラ1のマッピングデータが格納されます。
  • Map2
    出力オブジェクト。カメラ2のマッピングデータが格納されます。
  • CamParam1
    入力コントロール。カメラ1の内部パラメータを指定します。
  • CamParam2
    入力コントロール。カメラ2の内部パラメータを指定します。
  • RelPose
    入力コントロール。カメラ2からカメラ1への相対ポーズを指定します。
  • SubSampling
    入力コントロール。サブサンプリングファクタを指定します。デフォルトは1.0です。
  • Method
    入力コントロール。整列方法を指定します。viewing_directiongeometricが選択可能です。
  • MapType
    入力コントロール。マッピングのタイプを指定します。bilinearnearest_neighborcoord_map_sub_pixなどが選択可能です。

パラメータの詳細

Method パラメータ

整列方法には、次の2つのオプションがあります:

  • 'viewing_direction':ステレオカメラペアのベースラインを共通の画像面のX軸として使用します。
  • 'geometric':ベースラインと画像面の交線に基づいた共通の画像面を設定します。

MapType パラメータ

整列された画像の生成方法を指定します:

  • 'bilinear':バイリニア補間でマッピングします。
  • 'nearest_neighbor':最近傍補間でマッピングします。
  • 'coord_map_sub_pix':サブピクセル精度の座標を使用してマッピングします。

使用例

以下のコード例では、ステレオカメラの内部パラメータと相対ポーズを使用して、整列マップを生成し、整列された画像を取得する方法を示しています。

* カメラの内部および外部パラメータを設定
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006, \
                                622, 517, 1280, 1024, CamParam1)
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
                                654, 519, 1280, 1024, CamParam2)
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89, \
             'Rp+T', 'gba', 'point', RelPose)

* 整列マップの生成
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1,'viewing_direction', 'bilinear',\
                                 CamParamRect1, CamParamRect2, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)

* 整列された画像を取得
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageMapped1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageMapped2)

  binocular_disparity(ImageMapped1, ImageMapped2, Disparity, Score, \
                      'sad', 11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

このコードでは、カメラのパラメータを定義し、整列マップを生成して、ディスパリティを計算する例を示しています。

まとめ

gen_binocular_rectification_map 関数は、ステレオカメラペアの画像を効率的に整列し、エピポーラ線を水平に揃えることで、距離やディスパリティの計算を容易にします。この関数を活用することで、3D計測の精度と効率を向上させることが可能です。

この関数の適用範囲は広く、様々な3D計測アプリケーションで利用されており、特に画像の整列が重要な場合に非常に有用です。

Recommend