Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

RegularStepGradientDescent

規則的なステップ勾配降下オプティマイザー構成

説明

RegularStepGradientDescent オブジェクトは、イメージ レジストレーションの問題を解決するために関数 imregister に渡す規則的なステップ勾配降下による最適化の構成を記述します。

作成

RegularStepGradientDescent オブジェクトは以下の方法を使用して作成できます。

  • imregconfig — モノモーダル イメージのレジストレーションのための適切なメトリクスとペアになった RegularStepGradientDescent オブジェクトを返します

  • 以下のコマンド

    metric = registration.optimizer.RegularStepGradientDescent;
    をコマンド ラインに入力すると、RegularStepGradientDescent オブジェクトが既定の設定で作成されます

プロパティ

すべて展開する

勾配の大きさの許容誤差。正のスカラーとして指定します。GradientMagnitudeTolerance は、最適化プロセスを制御します。勾配の値が GradientMagnitudeTolerance より小さい場合、オプティマイザーが横ばい状態に達している可能性があります。

データ型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

収束の許容誤差。正のスカラーとして指定します。MinimumStepLength は、収束の精度を制御します。MinimumStepLength を小さい値に設定すると、最適化の計算速度は低下しますが、より正確なメトリクスの値に収束する可能性が高くなります。

データ型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

初期ステップ長。正のスカラーとして指定します。オプティマイザーが収束中にステップ サイズを減らすため、初期ステップ長は最大のステップ長になります。MaximumStepLength を大きな値に設定すると、計算時間が減ります。ただし、MaximumStepLength の設定値が大きすぎる場合、オプティマイザーが収束しない可能性があります。

データ型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

最大反復回数。正の整数スカラーとして指定します。MaximumIterations は、オプティマイザーが任意に与えられるピラミッド レベルで実行する最大反復回数を決定するための正のスカラー整数値です。レジストレーションは、オプティマイザーが最大反復数に到達する前に収束する場合があります。

データ型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

ステップ長の減少係数。0 ~ 1 の正のスカラーとして指定します。RelaxationFactor は、オプティマイザーが収束中にステップ サイズを減らす速度を定義します。オプティマイザーは、勾配の向きが変更されたと判断すると、ステップ長のサイズを減らします。メトリクスにノイズが含まれる場合、RelaxationFactor をより大きい値に設定できます。その結果、計算時間が長くなりますが、収束の安定性は向上します。

データ型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

すべて折りたたむ

RegularStepGradientDescent オブジェクトを作成し、これを使用して類似の明度とコントラストをもつ 2 つのイメージのレジストレーションを行います。

参照イメージを読み取って、レジストレーションが行われていないコピーを作成します。

fixed  = imread('pout.tif');
moving = imrotate(fixed, 5, 'bilinear', 'crop');

位置のずれたイメージを表示します。

figure
imshowpair(fixed, moving,'Scaling','joint');

Figure contains an axes object. The axes object contains an object of type image.

モノモーダル イメージのレジストレーションに適しているオプティマイザー構成オブジェクトを作成します。

optimizer = registration.optimizer.RegularStepGradientDescent
optimizer = 
  registration.optimizer.RegularStepGradientDescent

  Properties:
    GradientMagnitudeTolerance: 1.000000e-04
             MinimumStepLength: 1.000000e-05
             MaximumStepLength: 6.250000e-02
             MaximumIterations: 100
              RelaxationFactor: 5.000000e-01

メトリクス構成オブジェクトを作成します。

metric = registration.metric.MeanSquares;

より良い精度を得るために、オプティマイザー構成を変更します。

optimizer.MaximumIterations = 300;
optimizer.MinimumStepLength = 5e-4;

レジストレーションを実行します。

movingRegistered = imregister(moving,fixed,'rigid',optimizer,metric);

レジストレーションが行われたイメージを表示します。

figure
imshowpair(fixed, movingRegistered,'Scaling','joint');

Figure contains an axes object. The axes object contains an object of type image.

アルゴリズム

規則的なステップ勾配降下による最適化では、最適化がイメージ類似度メトリクスの勾配に沿って極値の方向に進むように、変換パラメーターが調整されます。勾配の方向が変わるまでは各計算間で勾配に沿って一定長のステップを使用します。この時点で、RelaxationFactor に基づいてステップ長が減少し、ステップ長の半分 (既定の設定) になります。

拡張機能

バージョン履歴

R2012a で導入

すべて展開する