画像処理
ImageJ
画像解析
Fiji

HSI(Hopkins-Skellam index)算出のためのImageJマクロ

概要

組織中の細胞の分布パターンを画像解析から評価するため、Fiji(ImageJ)で使えるマクロを作成した。
評価基準にはHSI(Hopkins-Skellam index)という指数を用いている。

HSI(Hopkins-Skellam index)とは

HSIとは植物集団における個体の分布パターンを分類するためHopkinsとSkellamにより考案された指標である。ある領域内の点群についてこれを求めると、分布がランダムであればHSIは1に近く、凝集・集合が起こっている状態では1より大きく、regularに分布していれば1より小さくなる(Hopkins & Skellam, 1954)。

使用法

画像の前準備

1)Fiji(またはImageJ)で画像を開く

2)カラー画像の場合は8bit画像に直す
 Image > Type > 8-bit

3)着目したい粒子のみが選択されるよう、Thresholdを設定する
 Image > Adjust > Threshold →(設定)→ Apply

  image.png
    ⬇︎
  image.png

粒子群の位置測定

4)測定内容の設定:
 Analyze > Set Measurements...
 → Center of massにチェック☑︎ → OK
  image.png

5)粒子の重心座標を測定:
 Analyze > Analyze Particles...
 ・着目する粒子群以外に小さな塵などが認識されている場合は、
  "Size"の下限を引き上げることで解析対象から除外できる。
 ・Display Resultsにチェック☑︎を入れておくと、測定終了後に
  結果がResultウィンドウで表示される。
  image.png

HSIの算出 - マクロの実行

6)以下のマクロを実行する。
 マクロウィンドウはPlugins > New > Macroなどから開ける。

obtainHSI.ijm
macro "obtainHSI"
{
    getDimensions(width, height, channels, slices, frames);

    r1sum=0;
    r2sum=0;
    for(k=0;k<1000;k++)
    {
        for(j=1;j<nResults();j++)
        {
            r1sum=r1sum+getNearestDistanceSquare(random()*width,random()*height);
            r2sum=r2sum+getNearestDistanceSquare(getResult("XM",j),getResult("YM",j));
        }   
    }
    showMessage(r1sum/r2sum);

    function getNearestDistanceSquare(x,y)
    {
        nearestDistanceSquare=width*width+height*height;
        for(i=1;i<nResults();i++)
        {
            DistanceSquare=(getResult("XM",i)-x)*(getResult("XM",i)-x)+(getResult("YM",i)-y)*(getResult("YM",i)-y);
            if(DistanceSquare<nearestDistanceSquare&&0<DistanceSquare)
            {
                nearestDistanceSquare=DistanceSquare;
            }
        }
    return nearestDistanceSquare    
    }
}

7)算出されたHSIがMessageウィンドウに表示される
  image.png