このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
マルチモーダル MRI イメージのレジストレーション
この例では、強度ベースのイメージ レジストレーションを使用して 2 つの磁気共鳴 (MRI) イメージを共通の座標系に対して位置合わせする方法を説明します。この方法では、特徴を検索したり制御点を使用したりしません。多くの場合、強度ベースのレジストレーションは医療画像および遠隔測定イメージに適しています。
手順 1: イメージの読み込み
この例では、膝の 2 個の MRI イメージを使用します。固定イメージはスピン エコー イメージであり、移動イメージは反転回復を行ったスピン エコー イメージです。同時に 2 個の矢状スライスが取得されますが、ややずれています。
fixed = dicomread("knee1.dcm"); moving = dicomread("knee2.dcm");
関数 imshowpair
は、レジストレーション プロセスのあらゆる部分でイメージの可視化に役立ちます。この関数は、モンタージュで 2 個のイメージを個別に表示したり、2 個のイメージを重ねて位置ずれの程度を示したりするために使用します。
imshowpair(moving,fixed,"montage") title("Unregistered")
imshowpair
で重ね合わせたイメージで、灰色の領域は類似した強度の領域に対応し、マゼンタおよび緑色の領域は片方のイメージが他方のイメージよりも明るい部分を示します。イメージのペアによっては、緑色およびマゼンタの領域にレジストレーションの誤差が示されない場合もありますが、この例では色の情報を使用して位置ずれが示される箇所を簡単に表示できます。
imshowpair(moving,fixed)
title("Unregistered")
手順 2: 初期レジストレーションの設定
関数 imregconfig
を使用すると、imregister
での使用に適したオプティマイザーおよびメトリクスの構成を簡単に選択できます。オプティマイザーおよびメトリクスの変数は、そのプロパティによってレジストレーションを制御するオブジェクトです。詳細については、強度ベースのイメージ レジストレーションのオプティマイザーとメトリクスの作成を参照してください。
この 2 つのイメージは異なる強度分布を取るため、ここではマルチモーダル構成が示唆されます。
[optimizer,metric] = imregconfig("multimodal");
2 つのイメージ間の歪みには、スケーリング、回転および場合によってはせん断が含まれています。イメージ レジストレーションにはアフィン変換を使用します。
movingRegisteredDefault = imregister(moving,fixed,"affine",optimizer,metric);
結果を表示します。imregister
によって既定の設定でイメージの位置が完全に合うことは非常にまれですが、どのプロパティを最初に調整するかを決定するための手段としては役に立ちます。
imshowpair(movingRegisteredDefault,fixed)
title("A: Default Registration")
手順 3: オプティマイザーおよびメトリクスの調整によるレジストレーションの改善
初期レジストレーションはうまくいきませんでした。特に右端に沿って、位置合わせが不十分な領域が、まだかなりあります。オプティマイザーおよびメトリクスの構成プロパティを調整して、レジストレーションを改善してみましょう。
disp(optimizer)
registration.optimizer.OnePlusOneEvolutionary Properties: GrowthFactor: 1.050000e+00 Epsilon: 1.500000e-06 InitialRadius: 6.250000e-03 MaximumIterations: 100
disp(metric)
registration.metric.MattesMutualInformation Properties: NumberOfSpatialSamples: 500 NumberOfHistogramBins: 50 UseAllPixels: 1
オプティマイザーの InitialRadius
プロパティでは、幾何学的変換を正確にするためにパラメーター空間で使用する初期ステップ サイズを制御します。既定のパラメーターでマルチモーダル レジストレーションの問題が収束しない場合は、まず InitialRadius
パラメーターを調整することをお勧めします。最初に、InitialRadius
の既定値を倍率 3.5 で小さくします。
optimizer.InitialRadius = optimizer.InitialRadius/3.5;
movingRegisteredAdjustedInitialRadius = imregister(moving,fixed,"affine",optimizer,metric);
結果を表示します。InitialRadius
の調整の効果は良好です。上端および右端で、イメージの位置合わせが著しく改善されています。
imshowpair(movingRegisteredAdjustedInitialRadius,fixed)
title("B: Adjusted InitialRadius")
オプティマイザーの MaximumIterations
プロパティでは、オプティマイザーで許可される最大反復回数を制御します。MaximumIterations
の値を大きくすると、レジストレーション探索をより長く実行できるため、より良いレジストレーション結果が見つかる可能性があります。反復回数を多くして、前の手順の InitialRadius
を使用した場合、レジストレーションは引き続き改善されるでしょうか。
optimizer.MaximumIterations = 300;
movingRegisteredAdjustedInitialRadius300 = imregister(moving,fixed,"affine",optimizer,metric);
結果を表示します。前のレジストレーションで使用したオプティマイザーの InitialRadius
設定を再利用すると共に、オプティマイザーの反復回数を増やすことで、レジストレーションがさらに改善されました。
imshowpair(movingRegisteredAdjustedInitialRadius300,fixed)
title("C: Adjusted InitialRadius, MaximumIterations = 300")
手順 4: 初期条件を使用したレジストレーションの改善
移動イメージと固定イメージを関連付ける適切な初期条件をレジストレーションに対して設定できる場合に、最適化ベースのレジストレーションは最適に機能します。レジストレーション結果を改善するのに役立つ手法として、剛体変換や相似変換などの比較的単純な変換タイプから始めて、その変換結果をアフィン ("affine"
) などの複雑な変換タイプの初期条件として使用するという方法があります。
関数 imregtform
では、imregister
と同じアルゴリズムを使用しますが、出力として返されるのは、レジストレーションされた出力イメージではなく、幾何学的変換オブジェクトです。imregtform
を使用して、平行移動、回転、等方性スケーリングを含む相似変換に基づいて推定された初期変換を取得します。調整済みのオプティマイザー設定を使用します。
tformSimilarity = imregtform(moving,fixed,"similarity",optimizer,metric)
tformSimilarity = simtform2d with properties: Dimensionality: 2 Scale: 1.0390 RotationAngle: -6.1345 Translation: [-51.1491 6.9891] R: [2×2 double] A: [3×3 double]
レジストレーションは、既定の座標系 (固有座標系とも呼ばれます) で解くため、固定イメージの位置と解像度を定義する既定の空間参照オブジェクトを求めます。
Rfixed = imref2d(size(fixed));
imwarp
を使用して、imregtform
からの幾何学的変換出力を移動イメージに適用し、固定イメージと揃えます。名前と値の引数 "OutputView"
を imwarp
で使用して、移動イメージに固定イメージと同じ解像度およびワールド座標範囲を割り当てます。
movingRegisteredSimilarity = imwarp(moving,tformSimilarity,OutputView=Rfixed);
結果を表示します。
imshowpair(movingRegisteredSimilarity,fixed)
title("D: Registration Based on Similarity Transformation Model")
"affine"
変換モデルを使用し、初期条件として相似変換を指定して、レジストレーションを調整します。レジストレーションの調整後の推定には、せん断の可能性が含まれます。
movingRegisteredAffineWithIC = imregister(moving,fixed,"affine",optimizer,metric, ... InitialTransformation=tformSimilarity);
結果を表示します。初期条件として相似を使ってレジストレーションを調整することで、良いレジストレーション結果を得られます。
imshowpair(movingRegisteredAffineWithIC,fixed)
title("E: Registration from Affine Model Based on Similarity Initial Condition")
手順 5: 妥当な改善程度の決定
imregister
の実行結果を別の設定および初期条件と比較すると、imregister
で変更可能な入力パラメーターは多数あり、それぞれが異なるレジストレーション結果を生じさせる可能性があることがわかります。
2 つのイメージの位置合わせを 1 つの画質メトリクスで正確に表現することはできないため、レジストレーション結果を定量的に比較することは必ずしも容易ではありません。多くの場合、レジストレーション結果は、結果を可視化することによって定性的に判断しなければなりません。上記の結果では、C) と E) のレジストレーション結果はいずれも非常に良好で、見分けるのは容易ではありません。
手順 6: 別の可視化手法
マルチモーダル レジストレーションの品質が改善されると、レジストレーションの品質を視覚的に判断することがさらに難しくなることがよくあります。これは、位置のずれた領域が、強度の差が原因で不明瞭になる場合があるためです。imshowpair
を別の表示モードに切り替えることで、表示されていなかった詳細情報が明らかになることがあります (そうでない場合もあります)。
参考
imregister
| imregconfig
| imwarp
| imref2d
| OnePlusOneEvolutionary
| MattesMutualInformation
| MeanSquares
| RegularStepGradientDescent