【HALCON】read_image 関数について - 画像ファイルの読み込み方法を解説
2024-08-20
2024-08-20
HALCON
ライブラリは、画像処理を効率的に行うための強力なツールを提供しており、その中でも基本的な操作の一つが画像ファイルの読み込みです。この記事では、HALCON
の read_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
という名前のファイルを読み込んでいます。この画像を基に様々な画像解析を行うことができます。
複数画像の読み込み
HALCON
の read_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
関数が正常に画像を読み込むと、関数は 2
(H_MSG_TRUE
)を返します。これは、処理が成功したことを示します。もしエラーが発生した場合は、例外が発生し、適切なエラーハンドリングが必要です。
まとめ
HALCON
の read_image
関数は、画像処理の最初のステップである「画像の読み込み」を効率的に行うための基本的な関数です。JPEG、TIFF、PNGなどの一般的なフォーマットだけでなく、HALCON
独自のフォーマットにも対応しており、幅広い用途で利用できます。正確で効率的な画像処理のために、まずは read_image
関数で必要な画像データを取得し、そこから高度な画像解析に進んでいきましょう。