産業用カメラに関するFAQ/1枚の画像の中に上下で別フレームの画像が表示されまることがあ...

1枚の画像の中に上下で別フレームの画像が表示されまることがあります。対策方法を教えてください。(No.194)

多くの場合、以下のような処理で、画像を表示または加工している最中に原画像情報が他の処理により書き換えられたとき、1枚の画像の上下で別フレームの画像が表示される事象が発生します。

・画面表示用Bitmapオブジェクト作成などの画像加工処理の途上に原画像データが更新されたとき。
・Bitmapオブジェクトを画面に描画している最中に、次のBitmapオブジェクト描画処理が割り込み実行されたとき。
・TeliCamSDKのStrm_LockBuffer()関数が提供する画像バッファポインタをバッファアンロック後も使い続けたとき。
・TeliCamSDKに登録したImageAcquiredコールバックI関数が提供する画像バッファポインタをコールバック処理完了後も使い続けたとき。
・TeliCamSDKの低水準ストリーム関数Strm_EnqueueReques()でEnqueueしたStreamRequestを使い続けたとき。

対策としては以下の方法があります。排他制御とダブルバッファリングの併用がよく使用されています。
・処理中の原画像が不用意に更新されないよう排他制御を適用する。
・画像バッファを複数設け、画像更新用バッファと画像加工・表示用バッファを別のバッファにする。(ダブルバッファリングなど)

ダブルバッファリングなどを採用した場合でも画像更新用バッファと画像加工・表示用バッファを入れ替えるタイミングで本事象が発生する可能性があります。
画像更新または画像加工・表示に使用するバッファのインデックス又はポインタをローカル変数として持つなどの工夫をしてください。

なお、初期のBU1203ではCPUまたはUSBホストアダプタのパフォーマンスが不足しているときに類似の事象が発生することがあります。
詳しくはFAQ「BU1203MCFで乱れた画像が取得されます。」を参照してください。

戻る

このFAQは、お役にたちましたか?

今後のFAQ作成の参考にさせていただくため、FAQについてのご意見等をご入力ください。(800文字以内)
下記にご記入いただいても、回答できませんのでご了承下さい。

当社のウェブサイトで利用するクッキーの設定変更は以下より実施ください。