2016-04-25 9 views
-1

私が現在取り組んでいるプロジェクトでは、ライブAGCと14ビットのグレイスケールビデオの表示が必要です。ビデオはTeledyne Dalsaカメラリンクカードでつかみ、最終的にビットマップとして保存される1つのスレッド上のピクセル配列として処理されます。 2番目の表示スレッドは、常に使用可能な最新のビットマップイメージを取得し、StretchBltを使用してパネルに書き込みます。処理スレッドは平均約40hzで実行されますが、表示スレッドは150hz以上で最新の画像を再描画できます。明らかに同じイメージが新しいものが利用可能になる前に複数回書き直されますが、それは問題ではないと私は思います。発生している問題は、この表示方法を使用して何らかの吃音があることです。このプログラムを供給しているビデオカメラが左右に旋回すると滑らかではなく、少しの遅れ/収差があります。画像内の縦線はわずかにぶら下がっているようです。StetchBltを使用してCでパネルにビットマップを書き込むライブビデオ表示スターター

私の質問は、これを修正する方法はありますか?ライブビデオを表示するには良い方法はありますか?どちらのスレッドも、スタッターを使わないビデオをレンダリングするのに十分高速で実行されていますが、30Hzの未処理のアナログ信号と比較した場合、グラフィックをそのまま出力します。どんな入力も感謝して、役立つならもっと情報を提供することができます。

ありがとう!

キドロン

答えて

0

この問題は修正できません。これはハードウェアの問題です。

この収差は、CMOSマトリクスでrolling-shutterの効果が原因で発生します。

異なるマトリックスライン上の画像は、異なる時間モーメントで固定されるため、フレームの上部および下部は一時的なラグ(左から右のシャッターもある)およびカメラ(またはシーン)の移動。

一部のビデオ編集ソフトウェアは、このような歪みを部分的に修正することがありますが、完全な復元はできません。

+0

私たちはエリアスキャンであると信じている冷却されたInSb検出器を使用するFLIR SC6000シリーズイメージャを使用しています。そこにシャッタをかける可能性はありません。これは、自分の処理ソフトウェアで表示されている場合にのみ発生します。 – kfilbrun

+0

タイマーで表示画面を再描画しているので、タイマーが以前の書き込みを待つことがないため、誤って「ロールシャッター」スタイルのエフェクトを作成しているのではないかと思います。新しいフレームが到着すると、古いフレームとほぼ重複して描画されている可能性があります。おそらく処理スレッドに同期されていない、より高速なループではなく、「新しいフレーム準備完了」で描画を行うべきです。 – kfilbrun

+0

私はタイマーのアプローチはあまり良くないと思いますが、そのような影響を引き起こす可能性は疑います。推奨される方法:フレーム無効なアプリケーションのウィンドウ/フォームを取得した後、ペイントメッセージハンドラ(これはC#で利用可能なものですか?)で画像を出力します。 – MBo

関連する問題