NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

画像表示

任意数値を8bitグレースケール、10Bitカラースケールで画像表示をする事が目的です。

 

イベントストラクチャを使用し数値制御器の値が変更された時に、ピクチャ表示をしています。

数値制御器の増減はキーボードのPageUp, Downがそれぞて割り当てております。

キーボードを長押しした時に数値制御器の増減は正しく追従するのですが、10bitカラースケールの画像にかなりのディレイがあります。

 

長押し後に数値制御器の値は変化しないため、イベントは待機状態になっていると思いますが、

10bitカラースケールの画像表示がダラダラと動き続けます。

 

数値制御器と同様画像も高速で追従するようにしたいのですが、何か良い方法はありますでしょうか?

ご教示をお願い致します。

※LabVIEW2011を使用しております。IMAQを使わない方法でご提案いただけると幸いです。

すべてをダウンロード
0 件の賞賛
メッセージ1/8
3,745件の閲覧回数

パフォーマンスを計測するとFlattenPixmapに15msecかかっています。

この部分を高速化するのは難しいでしょう。

キューを使用した生産者消費者ループにして、イベント間の時間計測により、

15msec以内でイベントを発生しないようにすればいいのでは?

0 件の賞賛
メッセージ2/8
3,706件の閲覧回数

6_6様

コメントありがとうございます。

アドバイスを参考に少しトライアルしてみます。

0 件の賞賛
メッセージ3/8
3,675件の閲覧回数

キューを使う方法のほかに、ノーティファイアを使う方法もあります。ノーティファイアは使用方法はキューによく似ていますが、受け取り側は最新の情報のみ受け取ります。生産者消費者ループで、消費者ループが生産者ループに追従できない、必ずしも全ての計算を行う必要がない場合(計算結果が表示目的のみなどの場合)は、こちらの方がプログラムが簡単です。

TailOfGon
Certified LabVIEW Architect 2013
0 件の賞賛
メッセージ4/8
3,668件の閲覧回数

TailOfGon様
コメントありがとうございます。
キュー、ノーティファイアともに少し触ってみましたが、私のLabVIEWの習熟度から理解するまでに少し時間がかかりそうです。
勉強してみます。

今回投稿致しました件は、表示の過程も大切です。デジタル制御器の値の変化と同じほぼ同じスピードでピクチャも変化し追従する必要がありました。

6_6様のコメントにもありましたとお1440x1050配列のPixmapの処理に時間を要しておりました。

今回の処理は単色のベタ塗りで良い為1x1配列のPixmapで処理を行い、ピクチャのプロパティノードからスケール係数で拡大する事で処理速度を向上できそうです。

 

6_6様、TailOfGon様より頂いたコメントでキューやノーティファイアも使えるかもしれない事がわかりました。

もっと勉強し習熟度を上げてトライアルしてみます。

 

ありがとうございました。

0 件の賞賛
メッセージ5/8
3,658件の閲覧回数

配列初期化などに時間がかかる要因は他にもありそうです。パフォーマンス計測では計測されないようでした。

(実際の計測では配列初期化は必要のない部分かもしれませんが。)

それよりも気になる点をふたつ。

まず、数値型の認識が出鱈目です。最終的に24bit(32bit)で画像化するのに64bitや32bitどうしでビット結合するなど。

数値型をあやふやにしていると、いつまでも余計なバグに悩むことになります。

次にビット演算部分は、一度文字列に変換していますが、普通はビットマスクとビットシフトと和で組み立てます。

(亜流でも何とか自分なりに解決法をひねり出していることは好きですが。)

 

0 件の賞賛
メッセージ6/8
3,650件の閲覧回数

6_6様コメントありがとうございます。

 

ご指摘の通り添付したファイルはバグがあり、数値結合の前に8bit変換を追加する必要があります。

 

0 件の賞賛
メッセージ7/8
3,642件の閲覧回数

ピクチャではなくカラーボックスの使用では今回の要件は満たせないでしょうか?

 

http://zone.ni.com/reference/ja-XX/help/371361J-0112/lvconcepts/fp_controls_indicators/

カラーボックス

カラーボックスは特定の値に相当する色を表示します。たとえば、カラーボックスを使用すると、範囲外の値などのさまざまな状態を識別できます。カラー値はRRGGBBの形式の16進数で表現します。最初の2桁(RR)は赤のカラー値を制御します。次の2桁(GG)は緑のカラー値を制御します。最後の2桁は青の値を制御します。

操作ツールまたは色付けツールでカラーボックスをクリックしてカラーパレットを表示し、カラーボックスの色を設定します。

0 件の賞賛
メッセージ8/8
3,629件の閲覧回数