lmageJの入出力機能は、静止画像だけでなく、ビデオカメラなどのリアルタイムな映像信号の取り込み機能なども実装できます。lmageJのプラグインは、顕微鏡用カメラのアプリケーションインターフェイス(API)から汎用規格であるTWAINなどのAPIを含め、多彩な規格に対応しています。本稿では、汎用のWebカメラなどからImageJを用いてリアルタイムな映像信号を取り込む方法や、基本的な処理について解説します。
ImageJの画像(信号)取り込みプラグイン
ImageJは、デジタルカメラ、ビデオカメラ、スキャナなどに付随する多彩な規格に対応した入出力用プラグインを持っています。代表的なものとしては、Apple社が開発したPCで動画や音声を取り扱うためのマルチメディアである「Quick Time」のAPIが挙げられます。また最近では、汎用PCを用いてインターネットを通じてリアルタイムに会話と映像を楽しむツールが流通していますが、ImageJではこのようなリアルタイムカメラ(Webカメラなどとも称される)のAPIを持っています。
また、デジタルカメラやビデオカメラばかりではなく、TWAINをはじめとしたスキャナなどに採用される規格のAPI なども実装可能です。TWAINとはヒューレット・パッカード社やイーストマン・コダック社などのメーカー5社が規格化したスキャナなど入力装置用のAPIです。これらのほかにも、工業用の高精細カメラや顕微鏡用カメラAPI など多くのプラグインが紹介されていますので、詳細はImageJのWebサイトなとで確認してみてください。
ビデオカメラインターフェースの実装
ImageJは、Javaというプログラミング言語で作成されているため、Javaによるマルチメディアコンポーネントを用いて、カメラなどの外部装置と接続する方法を紹介します。
筆者が確認したこの操作が実現できるImageJプラグインは以下のものがあります。
本稿では、この中のWebcamCaptureプラグインについてご紹介します。
非常に簡便で、使い勝手のいいシンプルなビデオ操作ができます。
このWebcamCaptureプラグインは、"webcam-capture API"を利用して開発されています。この"webcam-capture API"が非常に使いやすく設計されており、サンプルコードも豊富に公開されているので、開発者には親しみやすいインターフェースになっています。
JMFやその他の高度な画像処理パッケージを利用して開発されていることも注目です。(このJMFと はJava Media Frameworkのことで、コアJavaではなく、ビデオや音声などのマルチメディア対応のオプションAPIです。)
webcam-capture APIに利用されているインターフェースを以下に示します。
筆者が確認したこの操作が実現できるImageJプラグインは以下のものがあります。
- Peter Stierlen氏が開発したCapturingプラグイン
- Jerome Mutterer氏が開発したWebcamCaptureプラグイン
- Funahashi Labで開発されたiSightCaptureプラグイン
本稿では、この中のWebcamCaptureプラグインについてご紹介します。
非常に簡便で、使い勝手のいいシンプルなビデオ操作ができます。
このWebcamCaptureプラグインは、"webcam-capture API"を利用して開発されています。この"webcam-capture API"が非常に使いやすく設計されており、サンプルコードも豊富に公開されているので、開発者には親しみやすいインターフェースになっています。
JMFやその他の高度な画像処理パッケージを利用して開発されていることも注目です。(このJMFと はJava Media Frameworkのことで、コアJavaではなく、ビデオや音声などのマルチメディア対応のオプションAPIです。)
webcam-capture APIに利用されているインターフェースを以下に示します。
- OpenIMAJ,
- LTI CIVIL,
- Java Media Framework (JMF),
- Freedom for Media in Java (FMJ),
- OpenCV via JavaCV,
- VLC via vlcj,
- GStreamer (0.10.x only) via gstreamer-java
- MJPEG IP Cameras,
それでは早速試してみましょう。WindowsでもMacでも操作は同じです。
- リンクから、WebcamCaptureプラグインをダウンロードします。念のため、システム環境変数(またはユーザー環境変数) のパスとクラスパスに、Javaの実行環境やライブラリが設定されていることを確認しておくことをお勧めします。
- ダウンロードしたzipファイルを解凍し、通例どおり、ImageJフォルダ下のPluginsフォルダに入れます。
- ImageJを起動し、PluginsメニューからWebcamCaptureを起動します。
すべてがうまくように設定できれば、図のように、起動画面が立ち上がります。
設定方法は以下のとおり。
このように、Webカメラなどでのリアルタイムな映像が映し出され、映像が出ているときに、Spaceキーを押すと、Snapが作成され、スナップを撮り終わったら、エスケープキーで終了し、作成したスタック画像をAVIやQuickTimeなどの動画として保存できます。
これらの操作は、ImageJの既存の機能を使って、キャプチャ(カメラ起動中にImage>Duplicate)やこれらのDuplicate画像をスタックして保存することも可能です。
設定方法は以下のとおり。
- Webカメラを選択します。最近のPCには内蔵されているものが多いと思います。今回はMac内蔵のiSightを選択しています。
- Grab and returnは、Snapを撮るときに使います。
- Custom sizeは、表示したい画面フレームの大きさを設定できます。
- Calibrationで、ピクセルごとの単位を定義します。
- Timelapseの各項目はGifアニメのような静止画像のキャプチャのつなぎ合わせ設定をしますがここは気にしなくて大丈夫です。
(初期画面:カスタムサイズ設定は無視しています)
(Image>Duplicateでキャプチャした画像:朝でヒゲがボーボーです。冬前の朝は寒い。)
このように、Webカメラなどでのリアルタイムな映像が映し出され、映像が出ているときに、Spaceキーを押すと、Snapが作成され、スナップを撮り終わったら、エスケープキーで終了し、作成したスタック画像をAVIやQuickTimeなどの動画として保存できます。
これらの操作は、ImageJの既存の機能を使って、キャプチャ(カメラ起動中にImage>Duplicate)やこれらのDuplicate画像をスタックして保存することも可能です。
今回は動画像処理の準備としてビデオカメラなどのリアルタイムな映像信号の取り込み方法などを紹介しました。
これらの臨床応用としては、内視鏡画像の取り込みや関心領域シーンの画像キャプチャなどに適応できると考えられます。例えば、内視鏡画像をImageJでDICOM化(セカンダリキャプチャ)して、プラグインのDICOMデータベース、通信、CD書き込み機能を利用して管理すれば、臨床現場でも研究用途で実用的に利用できますね。
事例;
https://repositorium.sdum.uminho.pt/bitstream/1822/21664/1/paper_IUDC12.pdf
これらの臨床応用としては、内視鏡画像の取り込みや関心領域シーンの画像キャプチャなどに適応できると考えられます。例えば、内視鏡画像をImageJでDICOM化(セカンダリキャプチャ)して、プラグインのDICOMデータベース、通信、CD書き込み機能を利用して管理すれば、臨床現場でも研究用途で実用的に利用できますね。
事例;
https://repositorium.sdum.uminho.pt/bitstream/1822/21664/1/paper_IUDC12.pdf
ImageJはすべてがオープンソースで無料ですので、ImageJ内視鏡画像処理システムなども構築できるかもしれません。
次回は、少し振り返りになりますが、連続画像の処理方法について解説します。
参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(24・1) 2009, p91-93」
はじめまして 突然の質問となりますことをご容赦ください。
返信削除記事に倣ってWebcam capture pluginを導入したのですが、カラー画像を表示させることができません。
白黒ではなく、カラー画像で取り込むために必要なマクロなどがあれば教えていただけないでしょうか?
初歩的な質問とは思いますが、お手すきの際にご回答いただければ幸いです。