ImageJ と cellpose を使って、細胞画像の輝度値を測定する。（５）

※間違えて、一度記事を削除してしまったようですが、復元しました。

# 目的
顕微鏡撮影した細胞画像から、細胞膜領域と細胞質領域の範囲を選び、その平均輝度値を求めたい！

使用するアプリケーションは、以下の通りです。
- Fiji (ImageJ)　　　　　        
-画像解析ソフト
- anaconda 　　　　　　　　　　　　　　
-Python を動かすところ
- cellpose　　　　　　　　　　　
-Python で書かれた細胞画像の分節化に特化した、deep-leaning に基づくアルゴリズム

上記アプリケーション（プラグインを含む）のインストールや、解析に必要なマクロを記録していきます。

#### 最終回の今回は、cellpose での Segmentation の結果を用いて、細胞膜領域ならびに細胞質領域の平均輝度値の測定をします!

### PC の環境
Windows 10
# この記事の範囲
cellpose での Segmentation の結果を用いて、細胞膜領域ならびに細胞質領域の平均輝度値の測定を行う。

# 前準備（ Fiji に、プラグインをインストールする）


前回の [ImageJ と Cellpose を使って、細胞画像の輝度値を測定する。（４）](https://qiita.com/Naka24-sun/items/f7d47171657629431a45) の前準備に記載した、[imagej_roi_converter] と同様に、解析に必要なプラグインを ImageJ にインストールする必要があります。

それは、[MorpholibJ](https://imagej.net/plugins/morpholibj) というプラグインです。

このプラグインのインストールに関しては、[ImageJ と Cellpose を使って、細胞画像の輝度値を測定する。（１）](https://qiita.com/Naka24-sun/items/e1cec6febf3a0cac3859) に記載しているので、そちらを参照ください。


# 細胞膜領域を選択し、その平均輝度値を求める
**注意！**  今回は、細胞の面積 (pixel^2) が、およそ10000程度の写真画像を解析することを念頭に、下記 Macro を組んでいます。それより小さい細胞画像を解析する場合は、適宜係数を変更させてください。
1. 細胞輪郭を Segmentation した cellpose の結果を Fiji に反映させる。
この方法は、 [ImageJ と Cellpose を使って、細胞画像の輝度値を測定する。（４）](https://qiita.com/Naka24-sun/items/f7d47171657629431a45) に記載しています。
2. 不要な ROI を左クリックで選択し、ROI Manager > Delete で消去します。このとき、1000 pixel^2 に満たないような小さな ROI は、一つ一つ消去しなくても大丈夫です。（後から一括して消去します）
3. 細胞写真画像を active にして、以下の Macro を実行する。（IJ1 Macro で書いています）
   実行すると、途中でポップアップウインドウが現れて、パラメータを聞かれます。そこで、細胞膜の厚さ (pixel) を設定します。（デフォルトは、10 pixel）もっと細胞膜領域を太くする場合は、"15" とかそれ以上の数字を入力してください。
   Macro が終了すると、細胞膜領域を ROI とした ROI Manager と、細胞写真画像における ROI（細胞膜領域） の平均輝度値の測定結果が出力されます。
```
rename("Init_Image");
xlength = getWidth();
ylength = getHeight();
newImage("Cell", "8-bit black", xlength, ylength, 1);
run("Colors...", "foreground=white background=black selection=orange");
roiManager("Fill");
run("Colors...", "foreground=black background=black selection=orange");
roiManager("Draw");
Dialog.create("Parameters");
Dialog.addNumber("ErodeNum", 10,0,8,"pixels");
Dialog.show();
ErodeNum = Dialog.getNumber();
Erode = "operation=Erosion element=Disk radius=" + ErodeNum  ;
run("Morphological Filters", Erode); 
rename("Protoplasm");
imageCalculator("Subtract create", "Cell","Protoplasm");
selectWindow("Result of Cell");
rename("Cell_Membrane");
roiManager("deselect");
setOption("BlackBackground", true);
run("Analyze Particles...", "size=1000- display clear add composite");
selectWindow("Init_Image");
roiManager("Show All");
run("Set Measurements...", "mean redirect=None decimal=3");
roiManager("multi-measure measure_all");
close("\\Others");
```
以下、少しだけ解説します。
▼ 4 ～ 8 行目
```
newImage("Cell", "8-bit black", xlength, ylength, 1);
run("Colors...", "foreground=white background=black selection=orange");
roiManager("Fill");
run("Colors...", "foreground=black background=black selection=orange");
roiManager("Draw");
```
このコードでは、2. で調整した ROI から、細胞輪郭のマスク画像を作成しています。
▼ 9 ～ 13 行目
```
Dialog.create("Parameters");
Dialog.addNumber("ErodeNum", 10,0,8,"pixels");
Dialog.show();
ErodeNum = Dialog.getNumber();
Erode = "operation=Erosion element=Disk radius=" + ErodeNum  ;
```
このコードでは、細胞膜領域の太さ（厚さ？）を設定しています。
▼ 14 ～ 18 行目
```
run("Morphological Filters", Erode); 
rename("Protoplasm");
imageCalculator("Subtract create", "Cell","Protoplasm");
selectWindow("Result of Cell");
rename("Cell_Membrane");
```
このコードで、細胞輪郭のマスク画像から、細胞膜領域の太さ分の pixel だけ収縮（Erode）処理をして、細胞膜より内側の領域（Protoplasm 領域）のマスク画像を作成しています。
それから、"細胞輪郭のマスク画像" - "Protoplasm のマスク画像" を計算し、細胞膜領域のマスク画像を作成しています。
▼ 19 ～ 21 行目
```
roiManager("deselect");
setOption("BlackBackground", true);
run("Analyze Particles...", "size=1000- display clear add composite");
```
このコードでは、細胞膜領域のマスク画像の内、サイズ 1000 pixel^2 以上のものを、選択し ROI Manager に登録します。
**注意！** ここで、1000 pixel^2 未満の小さなサイズのマスク画像（おそらく、背景に紛れているチリなど）を除去しています。細胞画像の大きさに応じて、この除去するサイズを変更させてください。
その後のコードでは、作成した ROI Manager から細胞膜領域の平均輝度値を算出しています。
もし、 stack 画像で平均輝度値を測定する場合は、
```
roiManager("multi-measure measure_all");
```
を、
```
roiManager("multi-measure");
```
とした方が、測定結果が見やすいかもしれません。
# 細胞質領域を選択し、平均輝度値を求める場合
上記では、細胞輪郭の Segmentation 結果を用いて、細胞膜領域の ROI を作成し、その平均輝度値を求めました。
この方法を使うと、細胞輪郭の Segmentation の結果と、細胞核の Segmentation の結果を使って、
#### "細胞輪郭のマスク画像" ― "細胞核のマスク画像" ＝ "細胞質のマスク画像"
と計算をすれば、細胞質領域の ROI を作成でき、その平均輝度値を求めることができます。

以上！