【HALCON】read_image 関数について - 画像ファイルの読み込み方法を解説

【HALCON】read_image 関数について - 画像ファイルの読み込み方法を解説

2024-08-20

2024-08-20

HALCONライブラリは、画像処理を効率的に行うための強力なツールを提供しており、その中でも基本的な操作の一つが画像ファイルの読み込みです。この記事では、HALCONread_image 関数を使用して、さまざまな形式の画像を読み込む方法を解説します。

read_image 関数とは?

read_image は、指定されたファイルから画像を読み込むための HALCON の基本的な関数です。読み込むファイルの形式は複数に対応しており、TIFF、PNG、JPEG、BMPなどの一般的な画像フォーマットはもちろん、HALCON独自のフォーマット(HOBJやIMA)もサポートしています。

関数のシグネチャ

read_image( : Image : FileName : )
  • Image
    出力オブジェクト。読み込んだ画像が格納される変数です。
  • FileName
    入力コントロール。読み込みたい画像ファイルの名前を指定します。

read_image の使用例

基本的な画像読み込み

最も基本的な read_image の使用方法は、1つの画像ファイルを指定して読み込むことです。例えば、工場で製造された部品の品質検査を行う際に、カメラで撮影した画像を読み込んで解析を行うとします。

* 画像の読み込み
read_image(Image, 'mreut')

このコードでは、HALCONのデフォルト画像の一つである mreut という名前のファイルを読み込んでいます。この画像を基に様々な画像解析を行うことができます。

複数画像の読み込み

HALCONread_image 関数は、1度に複数の画像を読み込むことも可能です。これにより、複数の画像をまとめて処理する場合に便利です。

* 3つの画像を一度に読み込む
read_image(Images, ['ic0', 'ic1', 'ic2'])

この例では、3つの画像 (ic0, ic1, ic2) を配列として読み込みます。読み込まれた画像は、Images 配列に格納され、それぞれの画像を別々に操作できます。

画像検索パスの設定

HALCON では、画像ファイルが複数のディレクトリにまたがって保存されている場合でも、set_system 関数を使って検索パスを指定することができます。

* 画像検索パスを指定
set_system('image_dir', '/mnt/images:/home/images')

このコードでは、/mnt/images/home/images という2つのディレクトリが検索パスに追加されています。これにより、read_image 関数は指定したディレクトリ内から画像ファイルを見つけて読み込むことができます。

対応フォーマット

read_image 関数は、以下のような多様な画像フォーマットに対応しています:

  • HALCON独自フォーマット
    HOBJ, IMA
  • 一般的な画像フォーマット
    TIFF, GIF, BMP, JPEG, JPEG-2000, PNG, PPM, PGM, PBM など

これらのファイルは、拡張子やファイルの内部構造をもとに自動で認識されます。例えば、JPEG形式の場合、read_image 関数は拡張子が .jpg または .jpeg のファイルを探して読み込みます。さらに、カラーチャンネルの画像では、RGB情報をそれぞれのチャンネルに格納することができます。

read_image(Image, 'example_image.jpg')

この例では、example_image.jpg というJPEGファイルを読み込み、画像がImageオブジェクトに格納されます。

特殊な処理について

TIFFやPNG画像のアルファチャンネル

HALCON は TIFF や PNG などの画像でアルファチャンネル(透明度情報)が含まれている場合、その情報を画像オブジェクトのドメインとして解釈します。アルファチャンネルが含まれる画像を読み込むと、透明な部分をマスクして画像処理を行うことができます。

CMYK画像の取り扱い

CMYK形式のJPEGやJPEG-XRファイルを読み込む際、HALCONはAdobe Photoshopの仕様に従い、CMYKチャンネルが反転されている前提でRGBに変換します。もし、反転されていないCMYK画像を読み込んだ場合、invert_image 関数を使って手動で反転処理を行う必要があります。

結果

read_image 関数が正常に画像を読み込むと、関数は 2H_MSG_TRUE)を返します。これは、処理が成功したことを示します。もしエラーが発生した場合は、例外が発生し、適切なエラーハンドリングが必要です。

まとめ

HALCONread_image 関数は、画像処理の最初のステップである「画像の読み込み」を効率的に行うための基本的な関数です。JPEG、TIFF、PNGなどの一般的なフォーマットだけでなく、HALCON独自のフォーマットにも対応しており、幅広い用途で利用できます。正確で効率的な画像処理のために、まずは read_image 関数で必要な画像データを取得し、そこから高度な画像解析に進んでいきましょう。

Recommend