見出し画像

Radiomics超入門:Intensity histogram feature(信号強度ヒストグラム特徴)

信号強度ヒストグラムは、ROI 信号強度マスク内にある信号強度分布$${X_{gl}}$$をヒストグラムのビンに離散化した強度分布$${X_d}$$から計算されます。

$$
X_d={X_{d,1},X_{d,2},...,X_{d,N_v}}
$$

これは、$${N_v}$$個の離散化された信号強度のボクセルからなる集合(離散化されたボクセルセット)です。

ヒストグラムは、ある離散化信号強度$${i}$$ の頻度をカウントして得られた度数$${n_i}$$を、信号強度順に並べたものです。

$$
H={n_1,n_2,...,n_{Ng}}
$$

ヒストグラムを使えば、離散化されたボクセルセットの中で、どのくらい信号強度$${i}$$をもつボクセルが含まれるのかを、出現確率$${p_i}$$として計算することができます。確率といっても、単純に全体のうちの何割かを計算しているだけです。

$$
p_i=n_i/N_v
$$

Intensity histogram 特徴は、3D で計算されることが推奨されています。2D で画像スライスごとに計算した後、平均化などで集約されることは推奨されません。

離散化したボクセルセットから得られる統計的な特徴

IBSIでは、離散化を必要とするかしないかで、特徴の種類を厳密に区別しています。Intensity-based statistical 特徴は離散化は不要ですが、Intensity histogram 特徴は離散化が前提です。

以下のIntensity histogram 特徴は、Intensity-based statistical 特徴にて定義されている特徴と同じ定義で計算されます。違いは単純に、入力されるボクセルセットが離散化されているか否かです。計算方法は変わりません。これらの計算については、"Intensity-based statistical 特徴"の解説を参照してください。

  • Mean discretised intensity

  • Discretised intensity variance

  • Discretised intensity skewness

  • (Excess) discretised intensity kurtosis

  • Median discretised intensity

  • Minimum discretised intensity

  • $${10^{th}}$$ discretised intensity percentile

  • $${90^{th}}$$ discretised intensity percentile

  • Maximum discretised intensity

  • Discretised intensity interquartile range

  • Discretised intensity range

  • Intensity histogram mean absolute deviation

  • Intensity histogram robust mean absolute deviation

  • Intensity histogram median absolute deviation

  • Intensity histogram coefficient of variation

  • Intensity histogram quartile coefficient of dispersion

最頻値:Intensity histogram mode

ヒストグラム$${H}$$の中で最も度数の高かった信号強度です。

エントロピー:Discretised intensity entropy

エントロピー[Aerts2014]は情報理論的な概念で、$${X_d}$$に含まれる情報の尺度となります。 シャノン・エントロピー(Shannon entropy)は次のように定義されます。

$$
F_{ih.entropy} = - \sum_{i=1}^{N_g} {p_i} \log_2 p_i
$$

連続した信号強度分布をもつボクセルセットでは、$${-\log2{N_v}}$$になる傾向があるため、エントロピーは離散化されたボクセルセットに対して意味が多い指標です。

均一性:Discretised intensity uniformity

Uniformity(均一性)[Aerts2014]は次のように式で表されます。

$$
F_{ih.uniformity} = \displaystyle\sum_{i=1}^{N_g} {p_i}^2
$$

ほとんどの信号強度が 1 つのビンに含まれるような極端に偏ったヒストグラムでは、均一性は1に近づきます。下限値は$${1/N_g}$$です。

この特徴は、energy(エネルギーまたはエナジー)と呼ばれることもあります。

Maximum histogram gradient

ヒストグラム$${H}$$の勾配$${H'}$$は、離散化された信号強度ごとに次のように表されます。

$$
H'_i =
\begin{cases}
{n_2 - n_1} & i=1 \\
(n_{i+1} - n_{i-1})/2 & 1\lt i \lt N_g\\
n_{N_g} - n_{N_{g-1}} &i=N_g
\end{cases}
$$

$${H}$$の$${n_i}$$はビンの度数であり、$${n_i =0}$$のビン(度数がゼロのビン)は省略されません。一般に、ヒストグラム勾配はさまざまな方法で計算できます。上の方法は実装が簡単で、$${H}$$と同じビン数の勾配$${H′}$$を導くという利点があります。これは、$${H}$$の離散化された信号強度と$${H′}$$のビンとの間の直接的な対応を維持するのに役立ちます。

最大ヒストグラム勾配[VanDijk2016]は、次のとおりです。

$$
F_{ih.max.grad}=max(H′)
$$

Maximum histogram gradient intensity

最大ヒストグラム勾配信号強度 $${F_{ih.max.grad.gl}}$$[VanDijk2016] は、最大ヒストグラム勾配となる離散化信号強度です。

Minimum histogram gradient

最小ヒストグラム勾配は、次のように表されます。

$$
F_{ih.min.grad}=min(H′)
$$

Minimum histogram gradient intensity

最小ヒストグラム勾配信号強度$${F_{ih.min.grad.gl}}$$[VanDijk2016]は、最小ヒストグラム勾配となる離散化信号強度です。

実践

RadiomicsJを用いて、IBSIデジタルファントムからこれらの特徴を計算してみます。

ImagePlus ds_pair[] = TestDataLoader.digital_phantom1();
ImagePlus imp = ds_pair[0];
ImagePlus mask = ds_pair[1];
		
RadiomicsJ.targetLabel = 1;
RadiomicsJ.nBins = Utils.getNumOfBinsByMinMaxRange(imp, mask, RadiomicsJ.targetLabel);//digital phantom  of roi, max.
		
IntensityHistogramFeatures ihf = new IntensityHistogramFeatures(imp, mask, RadiomicsJ.targetLabel, true, RadiomicsJ.nBins, null);
		
System.out.println(IntensityHistogramFeatureType.MeanDiscretisedIntensity+":"+ihf.calculate(IntensityHistogramFeatureType.MeanDiscretisedIntensity.id()));//OK
System.out.println(IntensityHistogramFeatureType.Variance+":"+ihf.calculate(IntensityHistogramFeatureType.Variance.id()));//OK
System.out.println(IntensityHistogramFeatureType.Skewness+":"+ihf.calculate(IntensityHistogramFeatureType.Skewness.id()));//OK
System.out.println(IntensityHistogramFeatureType.Kurtosis+":"+(ihf.calculate(IntensityHistogramFeatureType.Kurtosis.id())-3));//OK, 3.3.4 (Excess) intensity kurtosis
System.out.println(IntensityHistogramFeatureType.Median+":"+ihf.calculate(IntensityHistogramFeatureType.Median.id()));//ok
System.out.println(IntensityHistogramFeatureType.Minimum+":"+ihf.calculate(IntensityHistogramFeatureType.Minimum.id()));//OK
System.out.println(IntensityHistogramFeatureType.Percentile10+":"+ihf.calculate(IntensityHistogramFeatureType.Percentile10.id()));//OK
System.out.println(IntensityHistogramFeatureType.Percentile90+":"+ihf.calculate(IntensityHistogramFeatureType.Percentile90.id()));//OK
System.out.println(IntensityHistogramFeatureType.Maximum+":"+ihf.calculate(IntensityHistogramFeatureType.Maximum.id()));//OK
System.out.println(IntensityHistogramFeatureType.Mode+":"+ihf.calculate(IntensityHistogramFeatureType.Mode.id()));//OK
System.out.println(IntensityHistogramFeatureType.Interquartile+":"+ihf.calculate(IntensityHistogramFeatureType.Interquartile.id()));//OK
System.out.println(IntensityHistogramFeatureType.Range+":"+ihf.calculate(IntensityHistogramFeatureType.Range.id()));//ok
System.out.println(IntensityHistogramFeatureType.MeanAbsoluteDeviation+":"+ihf.calculate(IntensityHistogramFeatureType.MeanAbsoluteDeviation.id()));
System.out.println(IntensityHistogramFeatureType.RobustMeanAbsoluteDeviation+":"+ihf.calculate(IntensityHistogramFeatureType.RobustMeanAbsoluteDeviation.id()));
System.out.println(IntensityHistogramFeatureType.MedianAbsoluteDeviation+":"+ihf.calculate(IntensityHistogramFeatureType.MedianAbsoluteDeviation.id()));
System.out.println(IntensityHistogramFeatureType.CoefficientOfVariation+":"+ihf.calculate(IntensityHistogramFeatureType.CoefficientOfVariation.id()));
System.out.println(IntensityHistogramFeatureType.QuartileCoefficientOfDispersion+":"+ihf.calculate(IntensityHistogramFeatureType.QuartileCoefficientOfDispersion.id()));
System.out.println(IntensityHistogramFeatureType.Entropy+":"+ihf.calculate(IntensityHistogramFeatureType.Entropy.id()));//ok
System.out.println(IntensityHistogramFeatureType.Uniformity+":"+ihf.calculate(IntensityHistogramFeatureType.Uniformity.id()));//or named energy
System.out.println(IntensityHistogramFeatureType.MaximumHistogramGradient+":"+ihf.calculate(IntensityHistogramFeatureType.MaximumHistogramGradient.id()));//ok
System.out.println(IntensityHistogramFeatureType.MaximumHistogramGradientIntensity+":"+ihf.calculate(IntensityHistogramFeatureType.MaximumHistogramGradientIntensity.id()));//ok
System.out.println(IntensityHistogramFeatureType.MinimumHistogramGradient+":"+ihf.calculate(IntensityHistogramFeatureType.MinimumHistogramGradient.id()));//ok
System.out.println(IntensityHistogramFeatureType.MinimumHistogramGradientIntensity+":"+ihf.calculate(IntensityHistogramFeatureType.MinimumHistogramGradientIntensity.id()));//ok
		
//出力
MeanDiscretisedIntensity:2.1486486486486487
Variance:3.0454711468225
Skewness:1.0838207225574612
Kurtosis:-0.3546204806878417
Median:1.0
Minimum:1.0
Percentile10:1.0
Percentile90:4.0
Maximum:6.0
Mode:1.0
Interquartile:3.0
Range:5.0
MeanAbsoluteDeviation:1.552227903579255
RobustMeanAbsoluteDeviation:1.1138338159946533
MedianAbsoluteDeviation:1.1486486486486487
CoefficientOfVariation:0.8121978584917317
QuartileCoefficientOfDispersion:0.6
Entropy:1.2656115555865246
Uniformity:0.5124178232286339
MaximumHistogramGradient:8.0
MaximumHistogramGradientIntensity:3.0
MinimumHistogramGradient:-50.0
MinimumHistogramGradientIntensity:1.0

RadiomicsJの引用はこちら

Kobayashi, T. RadiomicsJ: a library to compute radiomic features. Radiol Phys Technol 15, 255–263 (2022). https://doi.org/10.1007/s12194-022-00664-4

RadiomicsJのリンク

https://github.com/tatsunidas/RadiomicsJ


Stay visionary


この記事が気に入ったらサポートをしてみませんか?