3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GoogleColabでImageJを動かそう

Posted at

あらまし

使いやすい画像処理環境は、画像処理のアルゴリズム実装のときに役立ちます。
私は、GoogleColabがJavaを動かすことができることは知っていましたが、外部ライブラリを利用できることは知りませんでした。
この記事は、私が普段から使っているImageJをColabで動かす手順の記録です。

ColabNotebookを編集する

Colabノートブックはデフォルトのプログラミング言語のカーネルがpythonになっています。
これを、javaに変更します。
方法は、kernelspecのpythonの箇所をjavaに置き換えるだけです。
置き換えると、このような状態になります。

image.png

編集の方法は、まず、GoogleDriveに新しいColabノートブックを作り、空のまま、「.ipynb」でダウンロードします。
適当なテキストエディタでダウンロードしたノートブックを開き、上述の箇所を編集します。
編集し終えたら、再度、GoogleDriveへアップロードし、Colabで開きます。

JavaとIJavaをインストール

次に、OpenJDK8と、IJavaをインストールします。
ImageJはまだjava8で開発されているので、バージョンを合わせています。
IJavaは、ノートブックをJava仕様で動かすためのツールです。

以下のコードセルを追加して、実行します。

!apt update -q
!apt-get install -q openjdk-8-jdk-headless
!curl -L https://github.com/SpencerPark/IJava/releases/download/v1.3.0/ijava-1.3.0.zip -o ijava-kernel.zip
!unzip -q ijava-kernel.zip -d ijava-kernel && cd ijava-kernel && python3 install.py --sys-prefix

カーネルが無事に追加されると、カーネルリストにjavaが追加されます。
確認は以下のコマンドで可能です。

!jupyter kernelspec list
Available kernels:
  ir         /usr/local/share/jupyter/kernels/ir
  python3    /usr/local/share/jupyter/kernels/python3
  java       /usr/share/jupyter/kernels/java

ホストされているランタイムに接続

ランタイムに再接続することで、Javaを有効にします。
(ランタイムの再起動ではJavaを有効にできません。)
ノートブック右上のRAM、ディスクの表示の右にある下向きの三角マークを選択して、「ホストされているランタイムに接続」を選択します。
数秒、ランタイムが再起動するまで待ちます。

image.png

Javaの動作確認

Hello javaを出力してみます。

// check running java
System.out.println("Hello java")

ImageJを動かす

次に、ImageJをMavenを使って導入します。
ここでは、拡張性を考えて、POM形式で外部ライブラリを読み込む方法を示します。
以下のコードセルを実行します。

%%loadFromPOM
<repositories>
  <repository>
    <id>scijava.public</id>
    <url>https://maven.scijava.org/content/groups/public/</url>
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>net.imagej</groupId>
    <artifactId>ij</artifactId>
    <version>1.53r</version>
  </dependency>
</dependencies>

POMを用いなくとも、各ライブラリやリポジトリは、次のように一行で追加できます。
しかし、POMが確実です。

// add repositories
// %mavenRepo <ID> <URL>
// %mavenRepo scijava.public https://maven.scijava.org/content/groups/public/
// example of load dependensies
// %maven net.imagej:ij:1.53r

画像を表示したいときは、BufferedImageで返すようにします。
(DICOMは非圧縮(JPEG形式のDICOMはNG)でなければ読み込めないので注意してください)

ImagePlus sampleCT = new ImagePlus("https://imagej.nih.gov/ij/images/ct2.dcm");
sampleCT.getBufferedImage();

画像フィルタリング、画像のリサイズ、保存、しきい値処理、ROI、など処理できます。
ちょっと楽しみが増えました。

コメント募集

ImageJでこのような処理をしたい!など、難しいものでなければリクエストにお答え致します。お気軽にコメントください。

サンプルノートブック

References

Visionary Imaging Services, Inc. 2022/05/11

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?