2017年3月11日 更新

ImageJを使った体積測定

共焦点顕微鏡が普及している現在、簡単にできそうな体積の測定ですが、意外に手こずることがあります。 「面積は簡単だったから体積だって!」という方、読んでみてください。

24,711 view お気に入り 0
objects mapの画像

objects mapの画像

測定対象となったピクセルを表示します。そのままだとほぼ真っ黒で、表示されたピクセルがみえないので、[LUT > Glasbey inverted ]としてLUTを変更してください。個々のビーズが異なる色で表示され、視認できるようになります。GlasbeyというLUTは、階調全体に渡ってなるべくランダムに色が配分されるように考慮されたLUTで、このようなラベリングを目的とする画像(Categorical image:名義画像といいます)に対して用いることを目的として設計されています 。このLUTは白を背景とする画像になりますが、生物画像用には黒の背景を用いることが多いので、Fijiには組み込まれているGlasbey Invertedという背景が黒の独自のLUTを使いました(Cf. #1)。ビーズに添えられた数字はビーズそれぞれのID番号で、Resultsの表に表示される行番号の数値結果に対応します。ビーズのそれぞれのピクセル値を確認すると、これらのID番号が対応していることがわかるかと思います。これらは全て、二値化の閾値とサイズフィルタにひっかかったピクセルになります。

surface mapの画像

surface mapの画像

surface_mapは計測対象の表面を示したものです。先ほどとおなじようにLUTを変更してみてください。中抜きの円を見ることができるはずです。複雑な形状の測定対象の場合、このような表示も理解の一助になると思います。

centres of massesの画像

centres of massesの画像

center of massは日本語で重心になりますが、各voxelの輝度値で重み付けしたxyz座標平均です。 測定対象の数がラベルされ、その位置がデータとして得られます。蛍光ビーズのデータはそれぞれの位置が ほぼ同じ焦点面にあったので、同じsliceにcenter of massが集まっています。
centroidsの画像

centroidsの画像

centroidも重心ですが、こちらは輝度値で重み付けをしていません。測定対象の輝度値が一様であればcenter of massとcentroidは等しくなるはずです。
これらの画像と同時に表も出現し、実際に測定された数値が得られます。 表中、一番左端の数字は上記に示した測定対象のラベルを示しますが、その横に今回の解析目的である体積の測定値が表示されています。 今回はほぼ同じ大きさの蛍光ビーズだったのでほぼ同じ値が得られています。
出力されるresultsの表1

出力されるresultsの表1

(横に長いので半分表示しています)
出力されるresultsの表2

出力されるresultsの表2

(横に長いので半分表示しています)

正確な体積測定のために

さて、基本的には2,3のクリックだけでスタックデータに含まれる3次元中の多数の計測対象について、体積が測定できました。大事なポイントをおさらい、考察します。

  • フィルタ: 面積測定と同じように体積測定の肝はセグメンテーション、つまり測定対象を正しく分けることができるかどうかです。大抵の顕微鏡画像と同じように今回もノイズを含んだデータであったので、メディアンフィルタをかけることでセグメンテーションの改善を図りました。観察者の意図に合った測定となるように適切な画像処理を行うことが体積測定成功の鍵です。

  • 閾値: 閾値によってセグメンテーションされる領域が変化するので、当然この値によって計測結果が変わります。今回は蛍光ビーズという比較的境界がはっきりした対象だったので適当に決めましたが、生体内の組織や細胞を対象とする場合、この閾値を客観的に決定するために画像処理が必要だったり、一意に決めることが難しい場合もあります。深さによって閾値が変わることもしばしばあるので、上述の画像処理を使うか、データを複数に分けるなどの工夫が必要なときもあります。

  • 使いどころ: 同一データに多数の測定対象が存在したり、測定対象の形状が複雑である場合、セグメンテーションが上手くできれば今回のような解析方法は強力なツールになります。100個の測定対象が100スライスに点在するデータなどの場合、手作業で同様の測定をすると気が狂いそうになるかもしれませんが、3D Objects counterなら数クリックで完了します。ただし、上述のように別データの場合はそれぞれのデータにおける閾値が同じである保証が必要であるため、リファレンスとなる対象、つまりそれぞれのデータに含まれる同じぐらいの体積のものを見つけることが鍵となります。そのようなリファレンスがない場合、単にデータごとの閾値の違いを見ている可能性もあるので注意しましょう。

また今回は便利なのでプラグインを使いましたが、もちろんマクロやスクリプトを作成することで面積測定から体積を算出することも可能です。

測定値の検証と3次元計測の勘所

さて、今回計測したビーズは半径4マイクロメートルの規格のものを使いました。ビーズは球形をしているはずですが、[Image -> Stacks -> Orthogonal Views]を使ってデータを見るとz方向に伸びて見えます。計測値と実際の値の差を考える上で、3次元データもしくは共焦点画像データ特有の問題について次回触れたいと思います。お楽しみに。

  • Ref. 1 "Colour displays for categorical images" Chris Glasbey, Gerie van der Heijden, Vivian F. K. Toh, Alision Gray 2007 DOI: 10.1002/col.20327
30 件

関連する記事 こんな記事も人気です♪

シリーズ6.マクロ言語を使った画像処理の応用編~ノイズ軽減② 空間フィルタ処理~

シリーズ6.マクロ言語を使った画像処理の応用編~ノイズ軽減② 空間フィルタ処理~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。
総括① ImageJマクロ言語による画像処理―画像の基礎から二値化処理まで―

総括① ImageJマクロ言語による画像処理―画像の基礎から二値化処理まで―

多くのライフサイエンスの研究領域では顕微鏡で撮像した画像から輝度値や面積など各種統計量の計測や画像に写っている細胞数や粒子数の計数化などの定量化がImageJを用いて行われています。 ImageJマクロシリーズの記事では、このようなライフサイエンスの研究で実際によく使われる画像処理をマクロ言語で自動化することを目標に学習を進めてきました。本稿では総括①としてImageJのマクロ言語を用いた画像解析の学習シリーズ1~5までで学んだ内容をまとめました。
シリーズ6.マクロ言語を使った画像処理の応用編~ノイズ軽減① 空間フィルタ処理~

シリーズ6.マクロ言語を使った画像処理の応用編~ノイズ軽減① 空間フィルタ処理~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。 今回の記事から応用編としてさらに詳しく画像処理を学んでいきます。最初のテーマはノイズ軽減です。
YoutubeでImageJ  - インストール・セットアップ・プラグイン

YoutubeでImageJ - インストール・セットアップ・プラグイン

Fiji(ImageJにあらかじめ様々なプラグインがインストールされているもの)のインストールの仕方。新しいプラグインのインストールの方法を動画として紹介します。
北村 旭 | 3,353 view
ImageJ Plugin で数値計算をしてみる #5

ImageJ Plugin で数値計算をしてみる #5

非情報科学研究者 (特に生物系研究者) が ImageJ plugin を作るために超えるべき壁やTipsをまとめます。今回は、面積の平均値や中央値、分散を出力するためのコードをご紹介します。
湖城 恵 | 9,754 view

この記事のキーワード

この記事のキュレーター

塚田 祐基 (Yuki Tsukada) 塚田 祐基 (Yuki Tsukada)