WIL説明書(C++)  3.0.0
全般仕様
インプレース/ハーフインプレース処理について
WIL 及び FIE ライブラリでは、特別な記述のない限りインプレース又はハーフインプレース 処理を行うことは出来ません。インプレース又はハーフインプレース処理とは、 入力データ(画像等)において、入力と出力が同じメモリ領域となる処理を言います。 これらについては特に引数チェックを行われないため、 もし処理が行われた場合の処理結果は不定となります。
RGB32 の アルファ値の扱いについて
WIL 及び FIE ライブラリでは、 RGB32(パッキングされたカラー画像)を画像処理する場合、R(赤),G(緑),B(青) の成分を処理対象とします。 通常、A(アルファ) の成分は、画像処理後は 0 にリセットされます。 但し、WIL の表示機能ではアルファ値の使用が可能です。
ビット深度の扱いについて
WIL では、画像表示のスケーリング処理のために 画像オブジェクトにビット深度を持たせていますが、 FIE ライブラリに実装される画像処理はビット深度を考慮しません。 画素値の飽和処理等は、画像の型のレンジで行います。 例えば、 UC8 は 0~255、 US16 は 0~65535 で処理します。
2GB を超える領域の処理について
WIL 及び FIE ライブラリでは、2GB を超える領域を処理すること考慮していません。
本製品の 64bit 版は、1つのアプリケーションが 2GB (32bit 版の上限) を超えるメモリ量(複数のオブジェクトの総メモリ量)を確保することを主な目的としており、 1つのオブジェクトのメモリサイズが 2GB を超えることを考慮していません。 以下の機能以外は、2GB を超えるアドレスにアクセスするような処理を実行しないでください。

  • 画像オブジェクト
    CFvImage は 4GB の領域を確保できることを確認しています。
    但し、2GB 以上の領域を確保する場合は、 SetSize の option 引数に 1 (DIB を使用しない) を指定する必要が有ります。

  • 画像表示
    CFvDisplay は 4GB の画像オブジェクトを表示できることを確認しています。
    但し、2GB 以上の画像オブジェクトを表示する場合は、 中間バッファを 2GB 以下に設定する必要があります。

  • 画像ファイル入出力
    Raw フォーマット(CFvImageFileRaw) のみ、2.2GB の保存と読み込みが行えることを確認しています。 その他のフォーマットは、検証していませんので実行しないでください。
マルチスレッドでの使用における注意
WIL 及び FIE ライブラリでは、初期化・解放時以外はグローバル変数で状態を保持する処理を避けて、 マルチスレッドでの利用の妨げにならないように作られていますが、 同一のインスタンスに対して複数のスレッドがアクセスする場合はスレッドセーフではありません。 その場合は、ユーザが排他制御しなければなりません。以下に特に注意する項目を記載します。
  • ライブラリの初期化や解放
    ライブラリの初期化や解放はグローバル変数を使用する処理があるので必ず単一のスレッドで行ってください。

  • エラーコード
    FVCL::CFvObject の派生クラスはインスタンスメンバ関数のエラー情報を インスタンスメンバ変数(ErrorCode)に保管して返します。 従って、同一のインスタンスに対して複数のスレッドから操作した場合は、 いずれか一方のスレッドが正常にエラーコードを取得できません。

  • 画像オブジェクト
    インスタンスが異なっていても同一の画像アドレスにアタッチしていないか注意が必要です。
  • 複数のクラスで構成された画像処理機能
    FVCL では、FIE ライブラリの FHANDLE を保有するクラスと、その FHANDLE を介してデータを抽出するクラスに分かれているものがあります。 (例: FVCL::Blob::CFvBlobResult が FHANDLE を保有し、 FVCL::Blob::CFvBlobData が FHANDLE を介してデータを抽出します。) データ抽出中に『FHANDLE を保有するクラス』を解放すると、アクセス違反を起こすので注意が必要です。

  • GDIのデバイスコンテキスト
    FVCL::GDI::CFvDisplay::Draw 等、デバイスコンテキストに対して描画する機能を複数のスレッドから使用する際は、 デバイスコンテキストに対するアクセスレースが起きないよう注意が必要です。

  • OpenMP の並列数
    いくつかの画像処理機能では OpenMP による高速化を行っていますが、 物理プロセッサ数を超えて並列化すると逆にパフォーマンスが落ちるので マルチスレッドの場合は注意が必要です。
    詳しくは リリースノートの『マルチコア環境における設定』のページをご参照ください。

Documentation copyright © 2007 FAST Corporation. [B-001864]
Generated on 2023年11月02日(木) 10時12分54秒 for WIL説明書(C++) by doxygen 1.8.11