シリーズ4.ImageJマクロ言語を用いた画像解析~②二値化処理-2~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。

目次

概要

前回の記事(☆下記リンクを参照)で二値化処理およびマクロでの記述方法が理解できたでしょうか。
今回は前回の記事で予告したImageJでの画像の背景の考え方について解説したいと思います。

【ImageJの背景の設定】

ImageJの背景の設定と二値化後の輝度値の関係をまとめると以下のような図になります。

Black Backgroundに✓を入れる→輝度値0を黒、輝度値255を白で示す

Black Backgroundに✓を入れない→輝度値0を白、輝度値255を黒で示す

Step1. まず二値化後の輝度値(0または255)と色(白または黒)の対応を決めます。
ImageJの背景の設定はProcess→Binary→Optionsをクリックします。

Binary Optionsという画面が表示されます。Black Backgroundという項目に注目します。

このBlack Backgroundに✓を入れることによって背景を設定します。

つまり8bit画像で輝度値が0-255のとき
Black Backgroundに✓を入れる→輝度値0を黒、輝度値255を白で示す
Black Backgroundに✓を入れない→輝度値0を白、輝度値255を黒で示す
となり、2通りが考えられます。

※蛍光顕微鏡画像は輝度値が高くなるほど白、輝度値が低くなるほど黒で表示されるので、通常はBlack Backgroundに✓を入れたほうがわかりやすいかもしれません。



Step2.次に画像の前景、背景と輝度値との対応を決めます。
画像には前景と背景があり、それぞれ上記の輝度値と対応させると以下の4種類が考えられます。
白と黒のどちらを輝度値255に設定したとしても、解析対象が輝度値255になるような組み合わせで二値化を実行しないとその後の粒子解析などの画像処理がうまくいかないことがあります。
(後で画像を使用して例示します。)

◆Black Backgroundに✓を入れる→輝度値0を黒、輝度値255を白で示す

前景を輝度値0(黒)/背景を輝度値255(白)
前景を輝度値255(白)/背景を輝度値0(黒)


◆Black Backgroundに✓を入れない→輝度値0を白、輝度値255を黒で示す

前景を輝度値0(白)/背景を輝度値255(黒)
前景を輝度値255(黒)/背景を輝度値0(白)


ではどのように前景、背景と輝度値を組み合わせるのでしょうか。
これは二値化(Threshold)を実行するときに組み合わせます。ImageJのImage→Adjust→Thresholdをクリックします。

表示されるThresholdの画面にDark backgroundという項目があります。

このDark Backgroundへの✓の有無によって前景と背景のどちらを輝度値255に設定するかを決めます。例えば前回の記事で使用したサンプル画像(embryos.jpg)を8bitに変換すると、細胞が暗く、背景が明るく表示されます。
つまりこの画像では細胞が対象物(前景)、背景がバックグラウンドと考えることができます。解析対象は細胞になるので細胞を輝度値255にしたいと考えます。

Black Backgroundに✓を入れる→輝度値0を黒、輝度値255を白で示す
というImageJの設定のもとで、前景(細胞)を輝度値255(白)/背景を輝度値0(黒)で二値化したいときはもとの画像の背景(明るく表示されている方)がバックグラウンドになるのでDark Backgroundへの✓を外して二値化を実行します。 その結果、細胞のほうが赤で表示されApplyをクリックすると、細胞が白(輝度値=255)、背景が黒(輝度値=0)の二値化画像に変換されます。解析対象である細胞が輝度値255になっているので粒子解析が実行可能となります。

この設定を間違えてしまうと細胞を測りたいのに背景の粒子解析をしてしまうので気をつけましょう。

【パターン①から④の二値化処理をマクロで施す】

サンプル画像(*1)Rat_Hippocampal_Neuron2.zip を例に見てみましょう。

◆パターン①(Black Backgroundに✓,Dark Backgroundの✓を外す)

open("C:\\Users\\Hiro\\Downloads\\Rat_Hippocampal_Neuron2.zip");
run("Split Channels");
selectWindow("C3-Rat_Hippocampal_Neuron2.tif");
run("8-bit");
run("Options...", "iterations=1 count=1 black");
setAutoThreshold("Otsu");
//run("Threshold...");
//setThreshold(0, 71);
setOption("BlackBackground", true);
run("Convert to Mask");
run("Analyze Particles...", "  show=Outlines display summarize");
パターン①.macro
細胞ではなく背景が輝度値255(=白)で二値化されたためAnalyze Particleがうまく実行されない。(*2)
*2
0が黒、255が白の画像で、Dark Backgroundに✓が入っていないので明るいところがBack(背景)、暗いところが前景として認識されたので、細胞外領域を数えてしまいました。

◆パターン②(Black Backgroundに✓,Dark Backgroundに✓を入れる)

open("C:\\Users\\Hiro\\Downloads\\Rat_Hippocampal_Neuron2.zip");
run("Split Channels");
selectWindow("C3-Rat_Hippocampal_Neuron2.tif");
run("8-bit");
run("Options...", "iterations=1 count=1 black");
run("8-bit");
setAutoThreshold("Otsu");
//run("Threshold...");
setAutoThreshold("Otsu dark");
//setThreshold(90, 255);
run("Convert to Mask");
run("Analyze Particles...", "  show=Outlines display summarize");
パターン②.macro
細胞が輝度値255(=白)で二値化されたためAnalyze Particleが実行される。(*3)
*3
0が黒、255が白の画像で、Dark Backgroundに✓が入っているので暗いところがBack(背景)、明るいところが前景として認識されたので、細胞が正しく数えられました。

◆パターン③(Black Backgroundの✓を外す,Dark Backgroundの✓を外す)

open("C:\\Users\\Hiro\\Downloads\\Rat_Hippocampal_Neuron2.zip");
run("Split Channels");
selectWindow("C3-Rat_Hippocampal_Neuron2.tif");
run("8-bit");
run("Options...", "iterations=1 count=1");
setAutoThreshold("Otsu");
//setThreshold(0, 89);
setOption("BlackBackground", false);
run("Convert to Mask");
run("Analyze Particles...", "  show=Outlines display summarize");
パターン③.macro
細胞ではなく背景が輝度値255(=黒)で二値化されたためAnalyze Particleがうまく実行されない。(*4)
*4
0が白、255が黒の画像で、Dark Backgroundに✓が入っていないので明るいところがBack(背景)、暗いところが前景として認識されたので、細胞外領域を数えてしまいました。

◆パターン④(Black Backgroundの✓を外す,Dark Backgroundに✓を入れる)

open("C:\\Users\\Hiro\\Downloads\\Rat_Hippocampal_Neuron2.zip");
run("Split Channels");
selectWindow("C3-Rat_Hippocampal_Neuron2.tif");
run("8-bit");
run("Options...", "iterations=1 count=1");
setAutoThreshold("Otsu");
//run("Threshold...");
setAutoThreshold("Otsu dark");
//setThreshold(90, 255);
run("Convert to Mask");
run("Analyze Particles...", "  show=Outlines display summarize");
パターン④.macro
細胞が輝度値255(=黒)で二値化されたためAnalyze Particleが実行される。(*5)
*5
0が白、255が黒の画像で、Dark Backgroundに✓が入っているので暗いところがBack(背景)、明るいところが前景として認識されたので、細胞が正しく数えられました。




ImageJでの画像の背景の考え方と二値化との関連が理解できたでしょうか。
例えば蛍光画像をよく使う人はBlack Backgroundの✓を入れておくことをお勧めします。この場合はDark Backgroundに✓を入れると粒子解析がうまくいきます。 一方で、組織染色画像(明視野画像)をよく使う人はBlack Backgroundの✓を外すことをお勧めします。この場合はDark Background の✓を外すと粒子解析がうまくいきます。
二値化と背景の設定の組み合わせがしっかりと理解できていると、Analyze Particleなどの解析を間違うことなく実行することができます。

次回は二値化処理の手法のひとつであるPercentile法を自分でマクロを書いて実装する書き方を学びます。
Copyright © IMACEL Academy -人工知能・画像解析の技術応用に向けて-| エルピクセル株式会社