LRTKレフィクシア株式会社

CT画像の体積計算をボクセル数から求める4ステップ

CT画像から臓器、病変、空洞、骨、製品内部の欠陥などの体積を求めるときは、対象領域に含まれるボクセル数と、1ボクセルが表す実空間上の体積を掛け合わせる方法が基本です。考え方は単純ですが、実務では画素間隔、画像の位置と向き、スライス中心間隔、対象領域の抽出条件、部分体積効果などが結果を左右します。

特に注意したいのは、画面上に表示される画像の縦横サイズやスライス枚数だけでは、正しい体積を計算できないことです。同じ512画素四方の画像でも、再構成視野が異なれば1画素の実寸は変わります。また、スライス厚と隣接画像の中心間隔は別の属性であり、常に一致するとは限りません。

この記事では、CT画像の体積計算をボクセル数から行う方法を、実務で確認すべき事項とともに4ステップで解説します。医療用CTだけでなく、産業用CTや研究用途の断層画像にも応用できるよう、特定の機器や解析ソフトウェアに依存しない形で整理します。医療上の診断や治療方針に使用する数値については、施設の手順や専門家による確認を優先してください。

CT画像の体積計算で最初に押さえる考え方

CT画像は、対象物の内部を三次元の格子状に標本化した画像データとして扱えます。一般的な二次元画像では、画像を構成する最小単位を画素と呼びます。CT画像では、画素に奥行き方向の間隔を加えた三次元の格子単位をボクセルと呼びます。

各ボクセルには、撮影対象のX線減弱を反映した値が格納されています。医療用CTでは一般にCT値へ変換して扱われますが、産業用CTでは装置や再構成方法によって値の意味や校正方法が異なることがあります。体積を求める際は、対象領域に該当するボクセルを抽出し、その個数と画像格子の実寸情報から体積を計算します。

この方法が直接使えるのは、対象マスクが一定の直交格子または解析ソフトウェアが正しく解釈できる画像格子上にあり、各ボクセルの物理寸法が把握できている場合です。画像上の1画素が実空間で何mmに相当するか、断面方向の標本間隔が何mmかを確認しなければなりません。

画像面内の2方向の画素間隔をΔx、Δy、断面に直交する方向の標本間隔をΔzとすると、一定格子における1ボクセルの体積は次のように表せます。

1ボクセルの体積 = Δx × Δy × Δz

対象領域に含まれるボクセル数をNとすると、対象体積Vは次の式で求められます。

V = N × Δx × Δy × Δz

各寸法をmmで入力した場合、計算結果の単位はmm³です。cm³へ換算する場合は1000で割ります。1cm³は1mLと等しいため、臓器体積や液体量などをmLで表したい場合にも同じ換算を利用できます。

例えば、対象領域に含まれるボクセル数が200,000個で、ボクセル寸法が0.5mm × 0.5mm × 1.0mmであれば、1ボクセルの体積は0.25mm³です。対象領域の体積は50,000mm³となり、50cm³、すなわち50mLに換算できます。

この計算自体は難しくありません。実務上の難しさは、どのボクセルを対象として数えるか、そしてΔx、Δy、Δzとしてどの画像情報を採用するかにあります。

ボクセル数から体積を求める基本式

CT画像の体積計算では、対象領域の面積をスライスごとに求めて積み上げる方法と、三次元マスク内のボクセル数を数える方法があります。画像が同じ三次元格子上に等間隔で並び、すべてのボクセル寸法が一定であれば、両者は同じ離散化モデルに基づく計算です。

スライスごとの面積から求める場合、各スライスにおける対象画素数に、1画素の面積を掛けます。1画素の面積はΔx × Δyです。その面積に、そのスライスへ割り当てる奥行き方向の間隔Δzを掛けると、スライスが担当する体積を求められます。

スライスiの対象画素数をnᵢとすると、等間隔格子でスライスiが表す体積は次のようになります。

Vᵢ = nᵢ × Δx × Δy × Δz

全スライスについて合計すると、対象領域全体の体積になります。

V = ΣVᵢ

すべてのスライスでΔx、Δy、Δzが一定であれば、全スライスの対象画素数を合計した値が対象ボクセル数Nになります。そのため、N × Δx × Δy × Δzという基本式へまとめられます。三次元画像処理ソフトウェアでも、ボクセル数と画像格子の間隔からmm³やcm³を算出する方法が一般的です。([3D Slicer][1])

一方、画像ごとにスライス間隔が異なる場合、画像の向きが途中で変わる場合、異なる再構成系列が混在している場合は、全ボクセルを同じ体積として扱えません。この場合は画像群を分けるか、各スライスの実空間位置と断面積を用いて区間ごとに計算する必要があります。

スライス厚とスライス間隔は区別しなければなりません。スライス厚は再構成された断面の公称厚さを示す属性であり、スライス間隔は隣接画像の中心間距離です。DICOM規格でも、Pixel Spacingは隣接画素中心間の物理距離、Spacing Between Slicesは隣接スライス中心間の距離として定義されています。([DICOM Standards][2])

スライス厚が1.0mmであっても、画像が0.5mm間隔で並ぶ重複再構成が行われる場合があります。等間隔の三次元格子として体積を数えるなら、画像の位置と向きから確認した中心間隔を格子間隔として扱い、スライス厚をそのまま掛けて同じ空間を二重に数えないようにします。

反対に、スライス厚が1.0mmで、中心間隔が1.5mmの場合は、公称厚さだけを基準に見ると隣接断面の間に間隔がある構成です。薄い構造がその間に位置すると画像上で十分に表現されない可能性があり、単純なボクセル計数だけでは形状誤差を評価できません。体積計算値だけでなく、撮影・再構成条件による空間分解能の限界も考慮します。

通常の等間隔な画像群では、各画像の位置と向きからスライス面法線方向の中心間距離を求め、Δzとして使用する方法が堅実です。DICOMではImage PositionとImage Orientationを組み合わせて画像面の実空間位置と向きを表し、スライス間隔は位置を面法線へ投影して求められます。記録されたSpacing Between Slicesと計算値が一致しない場合もあるため、重要な計測では両者を照合します。([DICOM Standards][3])

ステップ1 対象領域と計測目的を定義する

最初のステップは、何の体積を、どの境界で求めるのかを明確にすることです。体積計算では、計算式よりも対象領域の定義が結果に大きく影響することがあります。

例えば、臓器の体積を求める場合でも、血管、管腔、内部の液体、周辺脂肪、病変部分を含めるかどうかで結果は変わります。腫瘤や欠陥の体積を求める場合も、輪郭が不明瞭な領域をどこまで含めるかについて基準が必要です。

計測目的が経時変化の確認であれば、毎回同じ基準で対象領域を抽出できることが重要です。絶対的な真値に近づけることだけでなく、異なる時点の画像間で取得条件と解析条件を可能な範囲でそろえることが求められます。

産業用CTで内部空洞の体積を求める場合は、空洞と材料の境界をどの画像値で分けるかを決めます。材料内部に微小な気泡やノイズがあると、それらを空洞に含めるか除外するかによって結果が変わります。

対象領域を決めるときは、画像全体の中で計測範囲も定義します。撮影対象の一部が画像範囲から外れている場合、ボクセル数を正しく数えても全体体積は求められません。上下端、左右端、奥行き方向の端部を確認し、対象が画像群に完全に含まれているかを確認します。

複数の構造物が接触している場合は、どの境界で分離するかも決めます。画像値だけでは分離できないときには、形状、連続性、位置関係などを使って領域を区分します。

計測対象が一つの連続した領域とは限りません。複数の空洞、散在する病変、分離した部品などを合計する場合は、すべてを一つの体積として扱うのか、個別体積も記録するのかを決めておくと、後工程での確認が容易になります。

対象領域の境界が曖昧な場合は、抽出条件を一つに決めつけるのではなく、条件を変えたときに体積がどの程度変化するかを確認する方法も有効です。例えば、抽出しきい値を所定の範囲で上下させ、それぞれの体積を計算すれば、境界条件に対する結果の感度を把握できます。

医療上の診断や治療計画に体積値を使用する場合は、画像解析だけで判断を完結させず、専門的な読影や施設内の計測手順と整合させる必要があります。研究用途や品質管理用途でも、目的、対象範囲、除外条件を計測前に文書化しておくことが重要です。

ステップ2 ボクセル寸法とスライス間隔を確認する

次のステップは、1ボクセルが実空間でどれだけの大きさを持つかを確認することです。ここを誤ると、対象領域の抽出が正しくても体積値全体が一定倍率でずれてしまいます。

まず確認するのは、画像面内の画素間隔です。CT画像の縦方向と横方向では同じ画素間隔が設定されていることが多いものの、常に正方形の画素とは限りません。ΔxとΔyはそれぞれ個別に確認します。

DICOMのPixel Spacingには2つの値が入り、最初が行間隔、次が列間隔です。ここでいう行間隔は隣接する行の中心間距離、列間隔は隣接する列の中心間距離を表します。解析コードでxとyへ割り当てる際に順序を逆にしても、体積だけなら積が同じため数値が変わらない場合がありますが、座標変換や寸法計測では方向の取り違えにつながるため、定義どおりに扱います。([DICOM Standard Browser][4])

例えば、画像が512画素 × 512画素であっても、それだけでは画素間隔は分かりません。再構成視野が256mm四方なら、単純化した場合の画素間隔は約0.5mmです。視野が384mm四方なら、約0.75mmになります。画素数が同じでも実寸は異なるため、画像の縦横画素数だけから体積を判断してはいけません。

次に、奥行き方向の間隔を確認します。画像のヘッダー情報にスライス厚が記録されていても、それを自動的にΔzとして使えるとは限りません。等間隔の断面画像群であれば、各画像の位置情報と向きから、隣接する画像中心間の法線方向距離を算出します。

画像が体軸方向や製品の基準軸に対して傾いている場合は、単一の座標成分だけを引き算してはいけません。画像の行方向ベクトルと列方向ベクトルの外積から面法線を求め、隣接するImage Positionの差をその法線へ投影して間隔を求めます。解析ソフトウェアが空間座標情報を正しく解釈していれば自動処理できることもありますが、外部に書き出した画像や座標情報を失った画像では注意が必要です。

スライス間隔が一定であるかも確認します。画像群の途中に欠損スライス、重複位置、並び順の誤りがあると、単純な配列のインデックスと実空間位置が一致しません。各画像の位置を並べ、隣接差が一定か、同じ位置が重複していないか、急な飛びがないかを確認します。

画像群が複数のシリーズや再構成条件を含む場合は、一つの連続した三次元格子として結合しないことが基本です。画像サイズが同じでも、再構成視野、画像方向、原点、画素間隔、スライス位置が異なる場合があります。

画像を別の格子へ再配置する処理を行った場合は、処理後のボクセル寸法を使います。例えば、0.6mm × 0.6mm × 1.0mmの画像を、0.5mm立方のボクセルへ再配置すると、ボクセル数は増加します。ただし、処理が適切であれば対象物の実体積が増えるわけではありません。計算には再配置後の0.5mm × 0.5mm × 0.5mmを用います。

再配置前のボクセル数に再配置後のボクセル体積を掛けたり、再配置後のボクセル数に元のボクセル体積を掛けたりすると、誤った結果になります。対象領域のボクセル数とボクセル寸法は、必ず同じ画像格子から取得します。

画像が縮小、画面保存、単純な画像書き出しなどを経ている場合は、実寸情報が失われている可能性があります。PNGやJPEGなどの断面画像だけが残り、画素間隔、画像方向、スライス位置を確認できない場合、既知寸法の校正情報が別途ない限り、正確な三次元体積を復元することは困難です。

実務では、元画像の空間情報を保持した状態で計算することが基本です。別形式へ変換する場合も、変換後の画素間隔、画像方向、原点、スライス位置が正しく引き継がれているかを確認します。

ステップ3 対象領域を抽出してボクセル数を数える

ボクセル寸法を確認したら、対象領域を抽出します。この処理は一般に領域分割と呼ばれ、対象に該当するボクセルと、それ以外のボクセルを区別する工程です。

最も単純な方法は、画像値にしきい値を設定する方法です。一定範囲の値を持つボクセルを対象として選択します。骨、高密度材料、空気を含む領域など、周囲との差が大きい対象では比較的使いやすい方法です。

ただし、同じ対象でも撮影条件、再構成条件、造影状態、材料構成、ノイズ量によって値の分布は変化します。そのため、すべての画像に共通する固定しきい値を無条件に適用すると、対象領域を過大または過小に抽出する可能性があります。

しきい値だけでは不要な領域まで選択される場合は、位置や連続性を条件に加えます。対象内部の一点を基準として、周囲につながる同種のボクセルを広げて選択する方法を使えば、離れた場所にある同程度の画像値の領域を除外できます。

形状が複雑な場合や境界が不明瞭な場合は、断面ごとに輪郭を指定する方法もあります。手動で輪郭を描く方法は作業時間がかかりますが、複雑な境界を確認しながら調整できます。自動抽出と手動修正を組み合わせると、作業効率と確認性を両立しやすくなります。

対象領域を抽出した結果は、一般に対象ボクセルを1、それ以外を0とする三次元マスクとして表現できます。この二値マスク内で値が1になっているボクセルの総数がNです。

ただし、二値マスクは境界ボクセルを全て含めるか全て除外するかのどちらかです。対象がボクセルの一部だけを占める場合、実際の占有率を直接表しているわけではありません。部分体積効果は有限の空間分解能と境界の混在によって生じ、体積定量にも影響します。小さな対象や細い構造では、単純な二値化による誤差が相対的に大きくなりやすい点に注意します。([PubMed Central (PMC)][5])

用途によっては、境界ボクセルの対象占有率を0から1の値で推定し、その合計にボクセル体積を掛ける方法もあります。ただし、占有率推定にはモデルや校正が必要であり、単純なボクセル計数より常に正確になるとは限りません。採用した方法と前提を記録します。

ボクセル数を数える前に、マスクと元画像の格子が一致しているかを確認します。配列サイズが同じでも、原点、向き、画素間隔、スライス位置が異なる場合があります。ずれたマスクを用いると、見かけ上は対象を覆っていても実空間上の位置やボクセル体積が一致しません。

領域抽出後は、横断面だけでなく、縦方向や前後方向に再構成した表示でも輪郭を確認します。横断面だけを順に見ていると、スライス間で輪郭が急に広がったり、細い構造が途切れたりしていることに気づきにくい場合があります。

小さな孤立領域が多数含まれているときは、それらが実際の対象なのか、画像ノイズや抽出処理による誤検出なのかを確認します。一定サイズ以下の領域を自動的に除外する処理は便利ですが、本来計測すべき小構造まで消す可能性があるため、除外条件を記録しておく必要があります。

空洞の体積を求める場合は、対象外部の空気が内部空洞と連結して選択されることがあります。この場合は、製品外周や臓器外周を先に抽出し、その内側だけを検索範囲とする方法が有効です。

ボクセル数の集計は、抽出処理を行ったソフトウェア内で実施する方法のほか、三次元マスクを書き出して別の計算処理で数える方法があります。どちらの場合も、補間表示された画面上の見かけではなく、実際のマスクデータに含まれるボクセル数を使用します。

ステップ4 体積へ換算して妥当性を検証する

対象ボクセル数Nとボクセル寸法Δx、Δy、Δzがそろったら、一定格子では基本式を使って体積へ換算します。

V = N × Δx × Δy × Δz

例えば、対象ボクセル数が480,000個、画素間隔が0.7mm × 0.7mm、スライス中心間隔が1.0mmの場合、1ボクセルの体積は0.49mm³です。

対象体積は次のようになります。

V = 480,000 × 0.7 × 0.7 × 1.0

V = 235,200mm³

これをcm³へ換算すると235.2cm³です。1cm³は1mLと等しいため、235.2mLとも表せます。

計算後は、数値をそのまま採用するのではなく、画像上の大きさと整合しているかを確認します。例えば、対象が70mm × 70mm × 70mmの外接直方体に収まるなら、その外接体積は343,000mm³です。抽出した対象体積が外接体積を超えている場合は、単位、ボクセル寸法、抽出範囲、重複スライスなどに誤りがある可能性があります。

別の概算式で照合する方法も有効です。対象が球に近い場合は球の体積、円柱に近い場合は円柱の体積、直方体に近い場合は縦 × 横 × 高さを使って概算します。複雑形状では完全には一致しませんが、桁や単位の誤りを見つける手掛かりになります。

スライスごとの断面積をグラフ化する方法もあります。対象の形状が連続的であれば、断面積は通常、隣接スライス間である程度連続して変化します。一部のスライスだけ面積が急増している場合は、不要領域の混入、輪郭のはみ出し、位置の重複などを確認します。ただし、実際に急激な形状変化がある対象では、面積変化が大きいこと自体を誤りと決めつけないようにします。

体積計算の結果には、使用した画像群、対象領域の定義、抽出方法、しきい値、手動修正の有無、ボクセル寸法、単位を併記します。単に体積値だけを記録しても、別の担当者が同じ結果を再現できません。

重要な判断に使用する場合は、同じ画像を複数回抽出して結果のばらつきを確認したり、別の担当者が独立して計測したりする方法があります。境界が明瞭でない対象では、計測者間差や抽出条件差が、単純な乗算処理の丸め誤差より大きくなることがあります。

妥当性の検証では、計算式、画像幾何情報、領域抽出結果の三つを分けて確認することが重要です。体積値がおかしいときに計算式だけを見直しても、原因がマスクのずれや画像位置の重複であれば問題は解決しません。

実務で使える体積計算の具体例

ここでは、一定のボクセル寸法を持つCT画像から、内部空洞の体積を求める場合を考えます。

画像面内の画素間隔は0.4mm × 0.4mm、画像位置から確認したスライス中心間隔は0.6mmです。領域抽出の結果、空洞として選択されたボクセル数が1,250,000個だったとします。

1ボクセルの体積は次のとおりです。

0.4 × 0.4 × 0.6 = 0.096mm³

対象体積は次のようになります。

1,250,000 × 0.096 = 120,000mm³

cm³に換算すると120cm³です。

この計算で注意したいのは、画像に記録されたスライス厚が0.8mmであっても、等間隔に並ぶ画像の中心間隔が0.6mmなら、三次元格子のボクセル体積を求める際に0.8mmをそのまま使わないことです。

0.8mmを使った場合の計算結果は160,000mm³となり、0.6mmを格子間隔として用いた場合より約33.3%大きくなります。ただし、0.6mmが適切であることは、画像位置と向きが一貫し、同一の再構成系列として並んでいることを確認した上で判断します。

次に、スライス間隔が一定でない例を考えます。前半が0.5mm間隔、後半が1.0mm間隔で構成されている場合、全ボクセル数に一つのΔzを掛ける方法は適切ではありません。また、前半と後半のボクセル数へそれぞれ0.5mmと1.0mmを掛けるだけでは、間隔が切り替わる境界と両端の扱いが曖昧になります。

この場合は、各スライスの対象断面積Aᵢと、隣接するスライス中心間距離dᵢを求めます。隣接スライス間で断面積が直線的に変化すると近似するなら、区間体積は次のように計算できます。

区間体積 = (Aᵢ + Aᵢ₊₁)÷ 2 × dᵢ

全ての隣接区間について合計すれば、中心位置間の体積を求められます。最初と最後のスライス外側まで対象が続く場合は、その端部をどこまで含めるかを別途定義しなければなりません。撮影範囲内だけを評価するのか、端部形状を仮定して補うのかを明記します。

ボクセル計数の形で扱う必要がある場合は、各スライスへ有効厚さを割り当てる方法があります。内部スライスの有効厚さは、前後の中心間距離の半分ずつを足した値として設定できます。両端は隣接間隔の半分を割り当てる方法がありますが、これは画像中心から外側半区間までを対象範囲とみなす約束です。目的に応じて端部条件を決めます。

対象形状がスライス間で滑らかに変化している場合、台形近似は断面積の変化を考慮できます。ただし、非常に薄い構造や急激に形状が変わる対象では、粗いスライス間隔から失われた情報を計算式だけで復元することはできません。

別の例として、再配置処理後の画像を考えます。元画像のボクセル寸法が0.8mm × 0.8mm × 2.0mmで、対象ボクセル数が100,000個なら、元画像上での体積は128,000mm³です。

これを0.5mm立方の等方ボクセルへ再配置し、同じ実体積を理想的に保つと、相当する対象ボクセル数は約1,024,000個です。再配置後の1ボクセル体積は0.125mm³なので、計算結果は同じく約128,000mm³になります。

ボクセル数が約10倍になっても、1ボクセルの体積が小さくなるため、対象物全体の体積はほぼ変わりません。ただし、実際には画像補間とマスクの再標本化、再抽出条件、境界処理によって差が生じます。大きく異なる場合は、画像格子とボクセル寸法の組み合わせだけでなく、マスクの補間方法も確認します。

CT画像の体積計算で誤差が生じる主な原因

CT画像の体積計算では、単純な四則演算よりも、画像の空間分解能、画像幾何情報、対象領域の境界設定が主な誤差要因になります。

代表的な要因が部分体積効果です。一つのボクセル内に複数の組織や材料が含まれると、そのボクセルの値は各成分の影響を受けた中間的な値になります。境界上のボクセルを対象に含めるか除外するかで、計算結果が変化します。

特に、ボクセル寸法に対して細い構造や小さな対象を測る場合は、境界ボクセルの割合が大きくなります。大きな対象では境界部分が全体に占める割合は比較的小さくなりますが、小さな対象ではわずかな輪郭の違いが体積比として大きく現れます。

スライス厚やスライス間隔が大きい場合も、奥行き方向の形状表現が粗くなります。断面内では明瞭に見える形状でも、奥行き方向に薄い構造は平均化され、実際より厚く見えたり、反対に十分なコントラストを得られなかったりする可能性があります。

画像ノイズも領域抽出に影響します。画像値のばらつきが大きいと、しきい値付近のボクセルが不規則に選択されます。輪郭がぎざぎざになり、不要な孤立領域が発生することがあります。

平滑化処理によってノイズを抑えることはできますが、細い構造や小さな凹凸まで失われる可能性があります。平滑化の前後で体積を比較し、処理による変化が計測目的に対して許容できるかを確認します。

金属や高密度材料が含まれる場合は、アーチファクトによる筋状の乱れや局所的な画像値変化が発生し、対象境界が不明瞭になることがあります。単純なしきい値抽出では、乱れた領域が対象に混入したり、本来の対象が欠落したりすることがあります。

撮影範囲の不足も見落としやすい原因です。対象の上端や下端が画像群から切れている場合、計算された体積は撮影範囲内の部分体積にすぎません。画像の最初または最後のスライスで対象領域が大きく残っている場合は、対象全体が含まれていない可能性があります。

スライス位置の重複や欠損も確認が必要です。同じ位置の画像が重複して保存されていると、配列を単純に積み重ねた場合に二重計上する可能性があります。反対に、途中の画像が欠けていると、その区間の形状情報が不足します。欠損区間を補間しても、実際に撮影されていない細部を復元できるわけではありません。

単位の取り違えも重大な誤差につながります。mmをcmとして扱うと、長さでは10倍、体積では1000倍の差が生じます。体積は三方向の寸法を掛けるため、長さの単位誤りが三乗で影響します。

画像の縦横寸法が画素数で表示されている場合、それをmmと誤認しないことも重要です。512 × 512という数値は画像の画素数であり、実寸が512mm四方であることを意味しません。

領域抽出後のマスクを保存するときに、画像の寸法や座標情報が変更される場合もあります。マスクを別の画像形式へ変換した結果、画素間隔が既定値へ置き換わると、元画像と同じ形に見えても体積換算結果が変わります。

誤差を完全になくすことは困難ですが、どの要因が結果に影響し得るかを把握し、入力データ、画像幾何、領域抽出、換算、妥当性確認を順に点検することで信頼性を高められます。

計算結果の再現性を高める記録方法

体積計算を一度だけ行う場合でも、計算条件を記録しておくことが重要です。経時比較、複数担当者による測定、研究結果の確認、製品検査の追跡などでは、再現性が特に重視されます。

まず、使用した画像群を特定できる情報を残します。同じ撮影データから、異なるスライス厚、画像間隔、再構成条件の画像群が作成されることがあります。撮影日時だけではなく、どの再構成系列を使ったかが分かるようにします。医療画像では個人情報の取扱規則に従い、共有用記録には必要に応じて匿名化された識別情報を使用します。

次に、画像の画素間隔、スライス厚、画像位置から算出したスライス中心間隔、画像枚数、画像の向き、原点、再配置処理の有無を記録します。体積換算に実際に用いたΔx、Δy、Δzも明示します。

領域抽出については、対象の定義、使用した画像値範囲、開始位置、連結条件、除外した領域、手動修正の有無を記録します。手動で輪郭を修正した場合は、どの範囲をどのような判断で変更したかが分かると、後から結果を確認しやすくなります。

使用した解析手順、ソフトウェアまたはスクリプトの版、再標本化方法、マスク補間方法も記録します。同じ名称の機能でも版や設定によって結果が変わる場合があるため、数値だけでなく処理条件を残します。

計算前のマスクも保存しておくと、体積値だけを残す場合より検証しやすくなります。マスクを元画像に重ねて表示すれば、境界の取り方や不要領域の混入を確認できます。

対象ボクセル数、1ボクセルの体積、換算前の体積、最終的な表示単位も残します。例えば、対象ボクセル数が480,000個、1ボクセルが0.49mm³、計算結果が235,200mm³、表示値が235.2mLという流れを記録します。

計算結果の小数点以下を必要以上に細かく表示しないことも重要です。元画像の解像度や領域抽出の不確かさが大きいのに、体積を小数点以下何桁も表示すると、実際以上に高精度な測定であるように見える可能性があります。

表示桁数は、画像解像度、対象の大きさ、測定の再現性、用途を踏まえて決めます。例えば、輪郭条件を少し変えるだけで数mL変化する対象について、0.001mL単位まで表示しても実務的な意味は限られます。

経時変化を見る場合は、絶対量だけでなく変化量と変化率を併記できます。ただし、異なる時点で撮影条件や抽出方法が変わっていると、見かけ上の変化に測定条件の差が含まれます。

同一対象を比較するときは、可能な範囲で画素間隔、スライス間隔、再構成条件、抽出条件をそろえます。条件を完全にそろえられない場合は、共通格子へ再配置して比較しやすくする方法がありますが、再配置だけで元画像の分解能差やノイズ差が解消されるわけではありません。

ボクセルを細かく分けても、元画像に存在しなかった細部情報が新たに得られるわけではありません。再配置後の滑らかな見た目と、実際の空間分解能を混同しないことが重要です。

CT画像以外の三次元計測に応用する考え方

ボクセル数から体積を求める考え方は、CT画像だけに限定されません。三次元空間を一定サイズの格子に分割し、対象に該当する格子数または各格子の占有率を数える処理であれば、同じ基本式を利用できます。

例えば、地形、土量、堆積物、構造物、空間占有率などを三次元格子で表現した場合も、対象セル数に1セルの体積を掛けることで格子近似による体積を求められます。

ただし、地形計測では対象の表面を点群や三角形面として表現することが多く、内部までボクセルが埋まっているとは限りません。表面点だけを数えても体積にはならないため、基準面との間を閉じた立体にする処理、上下の表面差を積分する処理、または内部を格子として埋める処理が必要です。

CT画像では対象の内部まで画像値が存在しますが、外部から取得する三次元計測では見えない面や遮蔽部分が生じます。そのため、体積計算の前に欠損範囲、基準面、閉じていない形状を確認しなければなりません。

一方で、格子寸法と格子数の関係、格子を細かくしたときの計算量、境界セルによる誤差、単位換算などは共通しています。格子が粗いほど計算は軽くなりますが、細かな凹凸が失われます。格子を細かくすると形状を表現しやすくなるものの、データ量と処理時間が増加します。

実務では、必要な精度に対して適切な格子寸法を選ぶことが重要です。対象物が数m規模で、必要な精度が数cm程度であれば、計測精度や点密度を超えて極端に細かな格子を設定しても、実体積の信頼性が同じ割合で向上するとは限りません。

CT画像で培った確認手順は、現場計測にも応用できます。対象範囲を定義し、空間分解能と座標系を確認し、対象領域を抽出し、体積へ換算し、別の方法で妥当性を確認するという流れは共通です。

医用画像や産業用CTとは計測原理と対象が異なりますが、屋外の地形や構造物を三次元データとして取得し、体積や形状を確認したい場合には、現場向けの計測手段としてLRTK Phoneを検討できます。実際の精度や適用範囲は、対象形状、取得条件、基準点、解析方法に応じて確認する必要があります。

まとめ

CT画像の体積計算は、一定の画像格子上にある対象マスクについて、対象ボクセル数と1ボクセルの実体積を掛けることで求められます。基本式は、対象ボクセル数 × 画像面内の2方向の画素間隔 × スライス面法線方向の格子間隔です。

実務では、最初に計測対象と境界条件を定義し、次に画素間隔、画像位置、画像方向、スライス中心間隔を確認します。その後、対象領域を抽出してボクセル数を数え、最後に体積へ換算して結果の妥当性を検証します。

特に、スライス厚とスライス中心間隔を同じものとして扱わないことが重要です。重複再構成された画像にスライス厚を掛けると、三次元格子として表す空間を過大に数える可能性があります。画像位置と画像方向から求めた中心間隔や、正しく構成された画像格子に記録されたボクセル寸法を使用します。

スライス間隔が一定でない場合は、全ボクセルへ一つのΔzを掛けません。各スライスの断面積と隣接中心間隔を用いた区間積分、または端部条件を明示した有効厚さによる計算を行います。

また、領域抽出の条件は計算結果に直接影響します。画像値のしきい値、対象領域の連結条件、手動修正、微小領域の除外、境界ボクセルの扱いなどを記録し、同じ条件で再計算できる状態を整える必要があります。

計算後は、外接する直方体、球、円柱などによる概算値や、スライスごとの断面積変化と比較します。単位の取り違え、画像欠損、位置の重複、マスクのずれ、再配置時の補間方法などを確認することで、入力ミスや処理上の問題を発見しやすくなります。

ボクセルを用いた体積計算は、CT画像だけでなく、三次元格子で表現された地形や構造物の体積評価にも応用できます。ただし、点群や表面メッシュでは閉じた形状や基準面を定義する必要があり、CT画像のボクセル計数をそのまま置き換えられるわけではありません。対象データの性質に合わせて計算方法を選ぶことが重要です。

現場を3Dで残して、あとから測る。
実際の画面と動画で使い方を確認できます。

LRTK Phoneの使い方・実例を見る
資料請求導入相談
現場をスマホで3DスキャンLRTK Phone実例を見る