【画像処理】ImageJの使い方【ImageJ】

【画像処理】ImageJの使い方【ImageJ】

研究に利用する画像の画像処理や統計解析が気軽に行いたいと思ったことはありませんか。

ImageJというソフトを利用すれば、これらを簡便に行うことができ、さらに処理の自動化を仕込むこともできます。

今回はImageJのインストール方法から、簡単な画像処理の操作方法についてを紹介します。

動作検証済み環境

macOS Ventura(13.2.1), Windows11(22H2), ImageJ 1.53

ImageJとは? 

ImageJとは、アメリカ国立衛生研究所(National Institutes of Health, NIH)で開発されたオープンソースのソフトウェアで画像処理や分析に用いられます。また、OSに依存せずWindowsやMac、Linuxで同様の操作が可能です。

ImageJで行える代表的な画像処理は以下の通りです。

  • 画像の前処理(フィルタリング、平滑化、鮮鋭化、境界抽出、二値化など)
  • 画像の測定(長さ、面積、強度、形状、角度など)
  • 画像の解析(セグメンテーション、オブジェクト識別、自動対象検出など)
  • 画像の統計解析(平均、中央値、標準偏差、相関分析など)

これらの処理はマクロやプラグインを使った自動化や機能拡張が行えます。さらに、Fijiという研究によく利用されるプラグインがパッケージとしてまとめられた、ImageJの上位互換と呼べるようなものもあります。

ImageJを利用する準備

ImageJを利用するにはローカルにインストールするか、ブラウザ上で起動するかの2通りあります。

ImageJのインストール(2023/2現在)

以下のサイトにアクセスし、利用しているOSに応じたファイルをダウンロードします。
https://imagej.nih.gov/ij/download.html

Windowsの場合はij153-win-java8.zipという名前のZipファイルがダウンロードされているので解凍します。解凍するとImageJ.exeというファイルが格納されているので、そのままクリックし起動します。

Macの場合はIntelのCPUの場合はij153-osx-java8.zip、M1などのAppleSiliconの場合はij153-osx-arm-java13.zipというファイルがダウンロードされるのでダブルクリックして解凍します。解凍するとImageJ.appという以下のようなアイコンのアプリケーションがインストールされます。

Fijiの場合

以下のサイトにアクセスします。右の▼を押すとOSが選択できるので、利用しているOSに応じたファイルをダウンロードします。
https://fiji.sc/

ブラウザでの起動

ImageJのトップページから「Run ImageJ in Browser!」をクリックします。
https://imagej.nih.gov/ij/index.html

しばらくするとImageJが起動し以下のような画面に遷移します。ブラウザ上で起動した場合もローカルにある画像やマクロを解析に利用することができます。

今回はブラウザ上でImageJを操作し、簡単な画像処理のやり方を紹介します。

ImageJの基本的な操作

まずはImageJで操作する画像の準備を行います。ImageJではTIFF、GIF、JPEG、PNG、FITS、DICOMなど複数の拡張子に対応しています。

ImageJでは操作の練習用にサンプル画像が用意されているのでそれを利用してみましょう。ツールバーからFile > Open Samples > M51 Galaxy (16-bits)を選択します。

選択すると以下のように白い点の画像が表示されます。このままでは何の画像かわからないので、コントラスト調整を行います。

コントラストを調整する

画像処理の代表的なコントラスト調整のやり方です。ツールバーからImage > Adjust > Brightness/Contrast…を選択します。

B&Cというウィンドウが表示されるので、MinimumとMaximumの調節バーを動かします。

すると銀河の渦巻きが見えるようになりました。このようにコントラストを変えることで一見気付かない構造を可視化することができます。

画像の輪郭を抽出する

こちらの記事で作成した衛星データのRGB画像から長野県の諏訪湖を切り取った以下の画像を利用します。

諏訪湖北東部では夏場に水面上に植物が繁茂します。画像で言うと赤枠で囲った部分です。今回はこの領域の輪郭を抽出します。

処理としてはRGB画像を白黒の画像に変換後、平均化処理と二値化を行い輪郭を抽出します。二値化の詳しい内容やPythonでのやり方については過去に記事がありますのでそちらをご確認ください。

まずはImageJを開いたブラウザに画像ファイルをドラッグ&ドロップします。

次にツールバーからImage > Type > 8-bitを選択します。

この動作でRGBの元画像が8-bitの白黒画像に変換されました。

つぎに画像を平均化しノイズ除去を行います。ツールバーからProcess > Filters > Mean…を選択します。

新しくMean…というウィンドウが表示されるので、そこに数値を入力します。

ここでは入力するのは周囲何ピクセルを用いて平均化を行うかを設定します。例えば以下のような画像データがあったとすると、Radiusが赤線で囲った1.0 pixelsの場合の平均値は約100、青線で囲った2.0 pixelsの場合の平均値は約108となります。

今回は2.0 pixelsで設定してみましょう。画像が下図のように変わったのがわかります。
これで平均化処理が完了しました。

次に二値化を行います。ツールバーからImage > Adjust > Threshold…を選択します。

Thresholdのウィンドウで対象の領域が黒になるように調整します。

次にツールバーからProcess > Find Edgesを選択し輪郭を抽出します。

最後に元画像に輪郭の重ね合わせを行います。新しく元画像のRBG画像をドラッグ&ドロップし、8-bitの白黒画像に変換します。

ツールバーからImage > Color > Merge Channels…を選択し、抽出した輪郭を元画像に重ね合わせます。下図のように始めに期待していた諏訪湖北東部の植物が繁茂した部分の輪郭が抽出できていることがわかります。

最後に

今回の記事では画像解析に用いられるImageJというソフトウェアの紹介と簡単な画像処理のやり方についてを紹介しました。ImageJはマクロという簡便な処理プログラムを利用し、今回紹介したような処理を自動化することもできます。無料で利用できかつ他にもまだまだ便利な機能がありますので、ぜひ試してもらえればと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です