Re - ImageJで学ぶ!: 第44回 ImageJを用いたリアルタイムな映像信号の取り込み処理で学ぶ!

2015年11月2日月曜日

第44回 ImageJを用いたリアルタイムな映像信号の取り込み処理で学ぶ!

lmageJの入出力機能は、静止画像だけでなく、ビデオカメラなどのリアルタイムな映像信号の取り込み機能なども実装できます。lmageJのプラグインは、顕微鏡用カメラのアプリケーションインターフェイス(API)から汎用規格であるTWAINなどのAPIを含め、彩な規格に対応しています。本稿では、汎用のWebカメラなどからImageJを用いてリアルタイムな映像信号を取り込む方法や、基本的な処理について解説します。

ImageJの画像(信号)取り込みプラグイン


ImageJは、デジタルカメラ、ビデオカメラ、スキャナなどに付随する多彩な規格に対応した入出力用プラグインを持っています。代表的なものとしては、Apple社が開発したPCで動画や音声を取り扱うためのマルチメディアである「Quick Time」APIが挙げられます。また最近では、汎用PCを用いてインターネットを通じてリアルタイムに会話と映像を楽しむツールが流通していますが、ImageJではこのようなリアルタイムカメラ(Webカメラなどとも称され)APIを持っています。

また、デジタルカメラやビデオカメラばかりではなく、TWAINをはじめとしたスキャナなどに採用される規格のAPI なども実装可能です。TWAINとはヒューレット・パッカード社やイーストマン・コダック社などのメーカー5社が規格化したスキャナなど入力装置用のAPIです。これらのほかにも、工業用の高精細カメラや顕微鏡用カメラAPI など多くのプラグインが紹介されていますので、詳細はImageJWebサイトなとで確認してみてください。

ビデオカメラインターフェースの実装


ImageJは、Javaというプログラミング言語で作成されているため、Javaよるマルチメディアコンポーネントを用いて、カメラなどの外部装置と接続する方法を紹介します。

筆者が確認したこの操作が実現できるImageJプラグインは以下のものがあります。




本稿では、この中のWebcamCaptureプラグインについてご紹介します。
非常に簡便で、使い勝手のいいシンプルなビデオ操作ができます。

このWebcamCaptureプラグインは、"webcam-capture API"を利用して開発されています。この"webcam-capture API"が非常に使いやすく設計されており、サンプルコードも豊富に公開されているので、開発者には親しみやすいインターフェースになっています。

JMFやその他の高度な画像処理パッケージを利用して開発されていることも注目です。(このJMF Java Media Frameworkのことで、コアJavaではなく、ビデオや音声などのマルチメディア対応のオプションAPIです。)

webcam-capture APIに利用されているインターフェースを以下に示します。


それでは早速試してみましょう。WindowsでもMacでも操作は同じです。


  1. リンクから、WebcamCaptureプラグインをダウンロードします。念のため、システム環境変数(またはユーザー環境変数) のパスとクラスパスに、Javaの実行環境やライブラリが設定されていることを確認しておくことをお勧めします。
  2. ウンロードしたzipファイルを解凍し、通例どおり、ImageJフォルダ下のPluginsフォルダに入れます
  3. ImageJを起動し、PluginsメニューからWebcamCaptureを起動します。
すべてがうまくように設定できれば、ように、起動画面が立ち上がります。
設定方法は以下のとおり。

  1. Webカメラを選択します。最近のPCには内蔵されているものが多いと思います。今回はMac内蔵のiSightを選択しています。
  2. Grab and returnは、Snapを撮るときに使います。
  3. Custom sizeは、表示したい画面フレームの大きさを設定できます。
  4. Calibrationで、ピクセルごとの単位を定義します。
  5. Timelapseの各項目はGifアニメのような静止画像のキャプチャのつなぎ合わせ設定をしますがここは気にしなくて大丈夫です。



(初期画面:カスタムサイズ設定は無視しています)


(Image>Duplicateでキャプチャした画像:朝でヒゲがボーボーです。冬前の朝は寒い。)

このように、Webカメラなどでのリアルタイムな映像が映し出され、映像が出ているときに、Spaceキーを押すと、Snapが作成され、スナップを撮り終わったら、エスケープキーで終了し、作成したスタック画像をAVIやQuickTimeなどの動画として保存できます。

これらの操作は、ImageJの既存の機能を使って、キャプチャ(カメラ起動中にImage>Duplicate)やこれらのDuplicate画像をスタックして保存することも可能です。

今回は動画像処理の準備としてビデオカメラなどのリアルタイムな映像信号の取り込み方法などを紹介しました。

れらの臨床応用としては、内視鏡画像の取り込みや関心領域シーンの画像キャプチャなどに適応できると考えられます。例えば、内視鏡画像をImageJDICOM化(セカンダリキャプチャ)して、プラグインのDICOMデータベース、通信、CD書き込み機能を利用して管理すれば、臨床現場でも研究用途で実用的に利用できますね。


事例;

https://repositorium.sdum.uminho.pt/bitstream/1822/21664/1/paper_IUDC12.pdf

ImageJすべてがオープンソースで無料ですので、ImageJ内視鏡画像処理システムなども構築できるかもしれません。

次回は、少し振り返りになりますが、連続画像の処理方法について解説します。

参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(24・1) 2009, p91-93」

1 件のコメント:

  1. はじめまして 突然の質問となりますことをご容赦ください。

    記事に倣ってWebcam capture pluginを導入したのですが、カラー画像を表示させることができません。
    白黒ではなく、カラー画像で取り込むために必要なマクロなどがあれば教えていただけないでしょうか?

    初歩的な質問とは思いますが、お手すきの際にご回答いただければ幸いです。

    返信削除