2011年2月13日日曜日

[LabVIEW] Susie pluginを使う

LabVIEWって、、、対応画像ファイルフォーマット、少なくないッスか?

デフォで「BMPJPEGPNG」、Vision開発モジュール入れても「JPEG2000TIFF」、、、こんだけってw

著名なとこだと「GIF」が読めません(昔は特許絡みの問題を避けるためだったんでしょうが…もう切れてるしなぁ)。

「GIF」だけ読めればイイってんなら、ココで紹介されてるようなライブラリを使う、ってのもアリですが、
読みたいフォーマット全てに対して、ローダを一から書くのは、いくら『車輪の再発明大好きっコ』な私でも勘弁願いたいところですw

こういう場合、我々日本人なら、グラフィックビューワ「Susie」に対応した「plugin」を使うのが常道ですね。
ココとかに、色んなフォーマットに対応したpluginへのリンクが貼られています。


というわけで、LabVIEWから「Susie plugin」を使ってみたいと思います。



LabVIEWで「Susie plugin」を使うためのLLBと、そのデモを作ってみました(ダウンロードはココから)。
使い方等は同梱のReadme.txtを参照してください。

***** 2011-02-20 追記 *****
上でリンクしてるのは旧バージョンです!
最新版は、このエントリからどうぞ!
**************************

「Susie plugin」の詳細は、ココとかを参照してほしいのですが、
ザックリというと、「拡張子【.spi】を持つDLLで、内部の関数で画像ファイルをDIBに展開し、そのハンドルを返す」ってものです。

使い方の簡単な流れは、
  1. GetPluginInfo関数で、pluginの対応ファイル形式(単一ファイル・書庫ファイル等)とファイルオープンダイアログ用のパターンを取得し、
  2. IsSupported関数で、pluginが画像ファイルを展開できるか判断し、
  3. GetPicture関数で、画像ファイルをDIBに展開してもらい、そのBitmapInfoとBitmapデータへのハンドルを返してもらい、
  4. 返されたハンドルから画像を取り込んで、煮るなり焼くなりコロ助なりして遊ぶ。
って感じスかね。
DLL内の関数なので、 LabVIEWからはライブラリ関数呼び出しノードを使ってアクセスすることになります。
値渡しの方法なんかは、LLB内のVIを参照してください。

同梱のDemo_GraphicViewer.viを使ってみたスクリーンキャプチャを以下にいくつか挙げておきます。


「Susie」開発者である、たけちん氏作のplugin「ifjpeg.spi」を用いて、同氏のテスト画像(JPEG/24bit)を表示。


同様に、同氏のplugin「ifgif.spi」を用いて、同氏のテスト画像(GIF/4bit, 8bit)を表示。

また、同氏のplugin「ifmag.spi」を用いて、MAG形式(MAG/4bit)を表示(懐かしいw)。
画像ファイルはグラフ印刷ツールGPサンプル画像

【渡辺 裕朗】氏作の「ifTIFF6.spi」を用いて、TIFFファイルを表示。画像は有名なLena(の上半身のみw)。

また、同氏のplugin「ifDIB.spi」を用いて、同Lena画像を白黒2値BMPにしたもの(BMP/1bit)を表示。



とりあえず、今回は単一画像ファイルの取込みまで実装しました。
Susie pluginには、他に書庫ファイル内画像の取込みpluginもあるんですが、
その実装はまた気が向いたときにでもw

0 件のコメント:

コメントを投稿