【HALCON】adapt_template 関数について - テンプレートを画像のサイズに適応させる
2024-08-23
2024-08-23
HALCONのadapt_template
関数は、作成済みのテンプレートを異なるサイズの画像に適応させるために使用されます。この関数は、テンプレートが元々作成された画像と異なるサイズの画像に対しても、テンプレートマッチングを正確に行うことを可能にします。テンプレートは元のサイズに基づいて作成されますが、新しい画像サイズに合わせてスケールされるため、画像内のオブジェクトの大きさが変わっても、テンプレートマッチングの精度を保つことができます。
例えば、あるオブジェクトの特徴を捉えるためのテンプレートを作成し、そのテンプレートを別の解像度の画像に使用する場合、adapt_template
関数でサイズを適応させてからマッチングを行うことで、誤差を最小限に抑えた正確な結果を得ることができます。
使用例
次に、adapt_template
関数を使用してテンプレートを新しい画像サイズに適応させ、マッチングを行う基本的なコード例を示します。
* 元の画像からテンプレートを作成する
create_template(Image, 5, 5, "ncc", &TemplateID)
* 異なるサイズの新しい画像を読み込む
read_image(&NewImage, "new_image.png")
* 新しい画像サイズにテンプレートを適応させる
adapt_template(NewImage, TemplateID)
* 適応後のテンプレートを使ってマッチングを実行する
best_match(NewImage, TemplateID, &Row, &Column)
この例では、まずcreate_template
関数を使用してテンプレートを作成し、その後adapt_template
関数で新しい画像のサイズにテンプレートを適応させています。その後、適応したテンプレートを使用して、best_match
関数でテンプレートマッチングを行い、指定した位置を取得します。
adapt_template関数の引数
adapt_template
関数は、以下の引数を受け取ります。
Image
テンプレートを適応させる基準となる画像のハンドル。この画像のサイズに合わせてテンプレートが調整されます。TemplateID
適応させるテンプレートのハンドル。create_template
関数などで作成されたテンプレートを指定します。
adapt_template関数の戻り値
adapt_template
関数に明示的な戻り値はありませんが、テンプレートは指定された画像サイズに適応され、その後のマッチングで使用されます。この適応が成功すると、テンプレートマッチングが新しいサイズの画像に対しても正確に実行できるようになります。
応用例
異なる解像度の画像でのテンプレートマッチング
異なる解像度の画像でテンプレートを使用する場合、adapt_template
関数は非常に有効です。元の画像が低解像度でテンプレートが作成されていても、高解像度の画像に対して適応させることで、精度を保ったマッチングが可能となります。
* 低解像度画像でテンプレートを作成
create_template(LowResImage, 5, 5, "ncc", &TemplateID)
* 高解像度画像にテンプレートを適応させる
read_image(&HighResImage, "high_res_image.png")
adapt_template(HighResImage, TemplateID)
* 高解像度画像でのマッチング
best_match(HighResImage, TemplateID, &Row, &Column)
このコードでは、低解像度の画像から作成されたテンプレートを、高解像度の画像に適応させ、その後テンプレートマッチングを行っています。これにより、解像度の違いによるマッチングの誤差を防ぎ、安定した認識を行うことができます。
マルチサイズ画像への対応
adapt_template
関数を使えば、異なるサイズの画像に対して同じテンプレートを再利用することができます。これにより、テンプレートの作成が1回で済み、様々な画像に対して効率的にテンプレートを適応できます。
* 複数の異なるサイズの画像を処理
read_image(&Image1, "image1.png")
read_image(&Image2, "image2.png")
* それぞれの画像にテンプレートを適応させる
adapt_template(Image1, TemplateID)
best_match(Image1, TemplateID, &Row1, &Column1)
adapt_template(Image2, TemplateID)
best_match(Image2, TemplateID, &Row2, &Column2)
このコードでは、異なるサイズの2つの画像に対して同じテンプレートを適応し、それぞれでマッチングを行っています。このようにして、テンプレートを汎用的に使用することができます。
並列処理の活用
adapt_template
関数は再入可能であるため、マルチスレッド環境での使用が可能です。これにより、大規模なデータセットや複数の画像に対して並列にテンプレートを適応させることができます。
* 並列処理でテンプレートの適応を実行
set_system("num_threads", 4)
parallel(adapt_template(Image, TemplateID))
この例では、並列処理を使用して複数の画像に対するテンプレートの適応を同時に行っています。これにより、処理速度の向上が期待できます。
まとめ
HALCONのadapt_template
関数は、テンプレートを新しい画像サイズに適応させるための強力なツールです。この関数を利用することで、異なるサイズや解像度の画像に対してテンプレートマッチングを正確に行うことが可能になります。また、複数の画像に対して同じテンプレートを再利用できるため、テンプレート作成の手間を減らし、効率的な処理が実現します。さらに、並列処理を活用することで、処理時間の短縮も可能です。