10-18-2019 08:15 PM - 編集済み 10-18-2019 08:16 PM
質問させてください。
現在、VIでグレー画像をフォルダから取り込み、BCGLookUPを用いて、画像の輝度、コントラストを変換しています。
以下のやりたいことが実現できていません。
お知恵を拝借したく、VIを添付していただければ幸いです。
やりたいこと
①VI上で実行させたときに、元画像・変換画像を比べながら調整したく
・調整は、BCGの数値でではなく、カーソル調整にしたい。
(カーソルで合わせたときの数値も表示したい)
・画像の拡大縮小も元画像・変換画像が連動させたい
➁上記①のあとに、エッジ検出をしたいのですが、
エッジを検出している画像も併せて表示したい
(VisionAssistantでエッジ検出した画像を表示したい)
➂上記① ⇒➁の順で実行させたく、上記①の調整が終わったら
ボタンを押して、➁に移る、ようにしたい
よろしくお願いします。
解決済! 解決策の投稿を見る。
10-20-2019 04:57 PM
平素よりNI製品をご愛顧頂きありがとうございます。
日本ナショナルインスツルメンツ技術部の上野です。
1. LabVIEW Vision Development Moduleをインストールすると、下記にBCB Lookupのサンプルプログラムが保存されますので、そちらをご参照ください。
サンプルは、下記にございます。
ヘルプメニュー >> サンプルを検索 >> 参照タブ >> ツールキットとモジュール >> 画像 >> 画像処理 >> BCG Lookup.vi
このサンプルではスライドバーで輝度、コントラスト、ガンマ値を変更して別の表示器に結果を表示します。
2. オリジナル画像とエッジ検出後の画像を表示するには、各自IMAQ Createでメモリ領域を確保して別々のImageデータを表示できるようにする必要があります。
上記でご紹介したサンプルでも同様の処理が行われており、参考になるかと思います。なお、Vision Assistantではありませんが、下記にエッジ検出のサンプルプログラムがございます。
ヘルプメニュー >> サンプルを検索 >> 参照タブ >> ツールキットとモジュール >> 画像 >> キャリパ >> Edge Detection.vi
3. 順次実行だけでしたら、エラー配線を数珠つなぎしてデータフローか、シーケンスストラクチャによるシーケンス処理にして、処理の間に次に進む際のきっかけを待機するループ処理をいれればよいかと思います。
ルックアップ調整後にエッジ検出して、再度ルックアップ値の調整を行うなどより柔軟な処理をおこないたいのでしたら、ステートマシンデザインパターンの適用を検討することをお勧めします。
これは、状態遷移図でステートを切り替えて処理する手法で、LabVIEWでは比較的簡単に実装することが可能です。サンプルプログラムが下記にございますので、ご参照いただけると幸いです。
ヘルプメニュー >> サンプルを検索 >> 参照タブ >> 基本機能 >> ループおよびストラクチャ >> ステートマシンの基礎
10-22-2019 07:27 PM
NI 上野様
ご回答ありがとうございます。
BCG Lookup.viを拝見しました。こちらを活用させていただきます。
ちなみに、BCG Lookup.viの中の元画像、変換画像と2つの拡大縮小を連動させたいのですが
方法はありますでしょうか?
10-22-2019 09:25 PM
見逃しておりました。申し訳ございませんでした。
Image Display表示器のプロパティノードには、Zoomに関するものがございますので、連動元の表示器のプロパティノードを読み取りにして、連動先の表示器のプロパティノードを書き込みにし、同じZoom情報と画像位置を共有すればよいかと思います。
プロパティノードは、ダイアグラムでImage Display表示器のオブジェクトを右クリックして、作成 >> プロパティノード >> Zoom Singleを選択して配置します。そのプロパティノードを下に引き延ばして拡張し、2つ目の項目にImage Center Positionを選択します。これでズーム情報と画像の中心位置が読み取れます。
これと同じものを連動先のImage Display表示器でも作成して、プロパティノードを書き込みにすることで同じ情報を使用できます。
なお上記の動作は、BCB Lookupのサンプルに拡大縮小やエッジ検出を追加した添付のプロトタイププログラムで確認しました。
10-22-2019 11:14 PM
上野様
返信ありがとうございます。
添付のVIのように作成しましたが、元画像、変換画像の拡大縮小が連動しません。
プロパティノードを入れる位置が正しくないでしょうか?
10-22-2019 11:38 PM
ループ中に拡大縮小したものがループ停止後に連動するように作成されているようですが、プロパティノードの後にすぐIMAQ Dispose VIで画像を削除しているため結果が分からないのだと思います。
IMAQ Dispose VIをダイアグラム無効ストラクチャで無効化してお試しください。
10-25-2019 12:06 PM
上野さま
本件、ありがとうございます。
解決致しました。助かりました