フィルターのクリア

一度最適化したレジス​トレーション処理を使​いまわす方法

7 ビュー (過去 30 日間)
Motohiro Horiuchi
Motohiro Horiuchi 2020 年 6 月 28 日
コメント済み: Motohiro Horiuchi 2020 年 6 月 29 日
上の例の通りにレジストレーションを行いました。
この際、同じサイズの別の画像に上記で行った変換と全く同じ変換を行う方法はありますか?

採用された回答

Kei Otsuka
Kei Otsuka 2020 年 6 月 28 日
同じ変換を行うにはどのような変換を行ったのかを示す情報 = 変換行列 が必要ですが、imregister関数の出力として
この変換行列を得ることができるようになっていないため、まず始めにimregisterの内容を少し修正します。
1.imregisterをエディタで開く。
edit imregister
2.別名(imregister2.m)で保存
3.1行目を以下の内容と差し替えて上書き保存
function [movingReg,Rreg,tform] = imregister2(varargin)
これで、変換行列を出力できる関数imregister2が出来ました。
動作を確認してみます。
%% 2つの画像の読込・表示
orig = dicomread('knee1.dcm');
moving = dicomread('knee2.dcm');
%% 輝度ベースのレジストレーション実行・表示 (変換行列が必要な場合は、imregtform を使用)
[optimizer,metric] = imregconfig('multimodal'); % パラメタ設定 (別々のデバイス:異なる輝度範囲)
optimizer.MaximumIterations = 150; % 反復回数
optimizer.InitialRadius = 0.002; % 初期検索範囲
[Registered, ~, tform] = imregister2(moving, orig, 'affine', optimizer, metric); %アフィン変換:拡大縮小・平行移動・回転
figure, imshowpair(Registered, orig)
%% 得られた変換行列を利用し、幾何学変換実行
Registered2 = imwarp(moving, tform, 'OutputView', imref2d(size(orig)));
figure, imshowpair(Registered2, orig)
imwarpで変換した結果(Registered2)とRegisteredが同じ画像になっていることを確認できると思います。
  1 件のコメント
Motohiro Horiuchi
Motohiro Horiuchi 2020 年 6 月 29 日
ありがとうございます。
解決できました。

サインインしてコメントする。

その他の回答 (0 件)

タグ

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!