【HALCON】バーコード・2Dコード完全ガイド - 検出から読み取りまで

PUBLISHED 2024-08-31
UPDATED 2024-09-06

HALCONのバーコード・2Dコード認識機能は、産業用アプリケーションで広く使用されています。製造ライン、物流、在庫管理など様々な場面でコード読み取りを実現します。


1Dバーコード

create_bar_code_model - バーコードモデルの作成

バーコードを検出・読み取るためのモデルを作成します。

create_bar_code_model(GenParamName, GenParamValue, BarCodeHandle)

パラメータ:

  • GenParamName: モデルの生成パラメータ名
  • GenParamValue: パラメータ値
  • BarCodeHandle: 作成されたモデルのハンドル
* 基本的なバーコードモデルの作成
create_bar_code_model([], [], BarCodeHandle)

* パラメータを指定してモデルを作成
create_bar_code_model(['element_size_min', 'element_size_max'], [1.5, 3.0], BarCodeHandle)

find_bar_code - バーコードの検出と読み取り

画像内のバーコードを検出し、デコードします。

find_bar_code(Image, SymbolRegions, BarCodeHandle, CodeType, DecodedDataStrings)

パラメータ:

  • Image: 入力画像
  • SymbolRegions: 検出されたバーコード領域
  • CodeType: バーコードタイプ(‘EAN-13’, ‘Code 39’など)
  • DecodedDataStrings: デコードされたデータ
* バーコードの検出と読み取り
read_image(Image, 'product_barcode.png')
create_bar_code_model([], [], BarCodeHandle)
find_bar_code(Image, SymbolRegions, BarCodeHandle, 'EAN-13', DecodedData)

* 結果の表示
dev_display(Image)
dev_set_color('green')
dev_display(SymbolRegions)

対応バーコードタイプ

タイプ説明
EAN-13国際商品コード(13桁)
EAN-8短縮商品コード(8桁)
UPC-A米国商品コード(12桁)
Code 39英数字対応の汎用コード
Code 128高密度バーコード
Interleaved 2/5数字専用、物流向け
Codabar医療・図書館向け
Pharmacode製薬業界向け

2Dデータコード

create_data_code_2d_model - 2Dコードモデルの作成

QRコードやData Matrixなどの2Dコードを認識するモデルを作成します。

create_data_code_2d_model(SymbolType, GenParamName, GenParamValue, DataCodeHandle)

パラメータ:

  • SymbolType: コードタイプ(‘QR Code’, ‘Data Matrix’など)
  • GenParamName: パラメータ名
  • GenParamValue: パラメータ値
  • DataCodeHandle: モデルハンドル
* QRコードモデルの作成
create_data_code_2d_model('QR Code', [], [], DataCodeHandle)

* Data Matrixモデルの作成
create_data_code_2d_model('Data Matrix ECC 200', [], [], DataCodeHandle)

* パラメータを指定してモデルを作成
create_data_code_2d_model('QR Code', ['default_parameters'], ['enhanced_recognition'], DataCodeHandle)

find_data_code_2d - 2Dコードの検出と読み取り

画像から2Dコードを検出し、内容を読み取ります。

find_data_code_2d(Image, SymbolXLDs, DataCodeHandle, ResultHandles, DecodedDataStrings)

パラメータ:

  • Image: 入力画像
  • SymbolXLDs: 検出されたコードの輪郭(XLD)
  • ResultHandles: 検出結果のハンドル
  • DecodedDataStrings: デコードされたデータ
* QRコードの検出と読み取り
read_image(Image, 'qr_code_image.png')
create_data_code_2d_model('QR Code', [], [], DataCodeHandle)
find_data_code_2d(Image, SymbolXLDs, DataCodeHandle, ResultHandles, DecodedData)

* 結果の表示
dev_display(Image)
dev_set_color('green')
dev_display(SymbolXLDs)
disp_message(WindowHandle, DecodedData, 'window', 12, 12, 'black', 'true')

対応2Dコードタイプ

タイプ説明
QR Code日本発祥、高容量、広く普及
Data Matrix ECC 200小型部品向け、エラー訂正強力
PDF417大容量、運転免許証等に使用
Aztec Code交通チケット等に使用
Micro QR CodeQRコードの小型版

モデルの管理

set_bar_code_param / get_bar_code_param

* パラメータの設定
set_bar_code_param(BarCodeHandle, 'meas_thresh', 0.5)

* パラメータの取得
get_bar_code_param(BarCodeHandle, 'meas_thresh', Value)

set_data_code_2d_param / get_data_code_2d_param

* パラメータの設定
set_data_code_2d_param(DataCodeHandle, 'timeout', 1000)

* パラメータの取得
get_data_code_2d_param(DataCodeHandle, 'timeout', Value)

clear_bar_code_model / clear_data_code_2d_model

* メモリ解放
clear_bar_code_model(BarCodeHandle)
clear_data_code_2d_model(DataCodeHandle)

実用的な設定

低品質画像での読み取り

* バーコード:閾値を下げて検出感度を上げる
create_bar_code_model(['meas_thresh'], [0.3], BarCodeHandle)

* 2Dコード:拡張認識モードを使用
create_data_code_2d_model('QR Code', ['default_parameters'], ['enhanced_recognition'], DataCodeHandle)

複数コードの同時読み取り

* 画像内の全バーコードを読み取り
find_bar_code(Image, SymbolRegions, BarCodeHandle, 'auto', DecodedData)

* 複数の2Dコードを読み取り
find_data_code_2d(Image, SymbolXLDs, DataCodeHandle, ResultHandles, DecodedData)
* DecodedDataにはすべてのコードのデータが格納される

タイムアウト設定

* 処理時間の制限
set_data_code_2d_param(DataCodeHandle, 'timeout', 500)  * 500ms

応用例

製造ラインでの製品管理

* 製品バーコードの読み取りと検証
create_bar_code_model([], [], BarCodeHandle)
find_bar_code(Image, SymbolRegions, BarCodeHandle, 'Code 128', ProductCode)

if (|ProductCode| > 0)
    * 製品コードの検証処理
    check_product_code(ProductCode, IsValid)
endif

物流でのトラッキング

* パッケージのQRコード読み取り
create_data_code_2d_model('QR Code', [], [], DataCodeHandle)
find_data_code_2d(Image, SymbolXLDs, DataCodeHandle, ResultHandles, TrackingInfo)

* トラッキング情報の解析
parse_tracking_info(TrackingInfo, ShipmentID, Destination)

品質検査

* コードの印刷品質チェック
get_data_code_2d_result(DataCodeHandle, ResultHandles, 'quality_isoiec15415', QualityGrade)

if (QualityGrade < 'C')
    * 印刷品質が基準以下
    log_quality_issue(Image, QualityGrade)
endif

コード認識の比較

項目1Dバーコード2Dコード
データ容量小(〜50文字)大(〜数千文字)
読み取り速度高速中程度
部分的な損傷耐性低い高い(エラー訂正)
印刷面積横長コンパクト
主な用途商品管理製造・物流・認証

まとめ

HALCONのバーコード・2Dコード認識機能は、産業用途に必要な高い信頼性と柔軟性を提供します。用途に応じて適切なコードタイプを選択し、パラメータを調整することで、効率的なコード認識システムを構築できます。

CATEGORY
TAGS
円