通常のLabVIEWではTIFFファイルを読み書きすることができず、「NI画像入力ソフトウェア (IMAQ-Vision)」を用いることでそれが可能になります。
しかし、「IMAQ-Vision」のTIFF対応は、
- 1bit白黒形式およびIEEE float形式の画像に未対応
- マルチページTIFFに未対応
と機能に不満があります。そこで、これらに対応した(IMAQ-Visionに依らない)ライブラリ「Tiff4LabVIEW」を開発しました。
LabVIEW2015SP1、.NET Framework4.0以上
「Tiff.llb」をダウンロードし、適当なフォルダに保存するだけです。
ファイルがTIFFファイルかどうかを判定します。
ファイル先頭4バイトが「0x49 0x49 0x2A 0x00」か「0x4D 0x4D 0x00 0x2A」であればTIFFファイルと判断しています。
TIFFファイルから画像データを読み込みます。
マルチページTIFFに対応し、「ポジション」に与えた位置(ゼロ基点)のページの画像データを返します。 総ページ数を超える値もしくは負値を与えた場合には最後のページ画像を返します。 対応する画像形式は以下の6つです。
- 1bit白黒
- 8bitグレースケール
- 8bitカラーマップ
- 16bitグレースケール
- 24bitRGB
- 32bit IEEE float
16bitグレースケールと32bit IEEE floatでは、出力される画像データは独自拡張されたものとなっており、2Dピクチャに接続しても画像表示されません。
1bit白黒、8bitグレースケール、8bitカラーマップ、24bitRGBであれば、出力される画像データを「平坦化ピックスマップ描画 (Draw Flattened Pixmap.vi)」に接続して、2Dピクチャに描画することが可能です。
1bit白黒および8bitグレースケールの画像データには(本来は不要である)色配列が格納されています。これは、2Dピクチャに描画する際に「PhotometricInterpretation」が持っている情報を正しく伝達するためです。
TIFFファイルに格納されているタグ情報は、画像データを構成するために必要なもの以外は破棄されます。ただし、「ImageDescription」「XResolution」「YResolution」「ResolutionUnit」は任意端子で出力されます。
画像データをピックスマップ(2D配列)に変換します。
ピックスマップを画像データに変換します。
1bit白黒のピックスマップを変換する場合、色配列に何も与えなければ「BlackIsZero(PhotometricInterpretation = 1)」と解釈されます。「WhiteIsZero(PhotometricInterpretation = 0)」としたい場合には、[0x00FFFFFF, 0x00000000]である色配列を与えてください。
8bitピックスマップを変換する場合、色配列に何も与えなければ「BlackIsZero(PhotometricInterpretation = 1)」であるグレースケールと解釈されます。「WhiteIsZero(PhotometricInterpretation = 0)」のグレースケールとしたい場合には、[0x00FFFFFF, 0x00FEFEFE, ... 0x00010101, 0x00000000]である色配列を与えてください。カラーマップを与えれば8bitカラーマップ画像となります。
画像データをTIFFファイルに書き込みます。
書き込まれるデータは無圧縮かつ1ストリップ構造となります。
マルチページTIFFに対応し、「モード = add」では「ポジション」に与えた位置(ゼロ基点)に画像をページとして挿入します。総ページ数を超える値もしくは負値を与えた場合には末尾ページとして追加します。
「モード = replace」では(ポジションの値は無視して)ファイルをシングルページTIFFファイルとして上書きします。
このLLBおよびVIはMITライセンスに則り公開されています(LICENSE.txt参照)。