Can imregister provide transformation details on the registeration of the moving image?

44 ビュー (過去 30 日間)
I want to register and fuse two images, but I need to do some image processing of the images that I register, then use the translation and rotation details of the registration to fuse the unprocessed images. imregister only provides a transformed image, but no details on how it transformed it. Is there any way to get the details of the transformation to apply to my unprocessed images?
  2 件のコメント
Anita
Anita 2013 年 2 月 27 日
Richard, Can you please provide the modified imregister2 function which outputs tform?
Sean de Wolski
Sean de Wolski 2013 年 2 月 27 日
@Anita, I believe you just have to add tform as an output:
[moving_ref, tform] = imregister2(varargin)
Then copy the rest of its contents.

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

採用された回答

Sonoma Rich
Sonoma Rich 2012 年 3 月 20 日
I modified imregister to return the "tform" object that it uses for the transformation. I then created a copy of "transformMovingImage", a function within imregister so I can call it.
[optimizer, metric] = imregconfig('multimodal');
[movingRegisteredProcessed, tform] = imregister2(movingProcessed,fixedProcessed,'rigid',optimizer,metric);
movingRegisteredUnprocessed = MyTransformMovingImage(movingUnprocessed, fixedUnprocessed, tform);
fused_image = imfuse(fixedUnprocessed,movingRegisteredUnprocessed,'blend');
This worked. It would be nice if the standard function provided the "tform" object.

その他の回答 (2 件)

Alex Taylor
Alex Taylor 2013 年 3 月 14 日
As of R2013a, users who want access to the geometric transformation estimate computed by imregister can call the function imregtform. The function imregtform returns a geometric transformation object that can be applied to the moving image using the new function imwarp.
The function imregister calls imregtform to obtain the geometric transformation that registers the moving image to the fixed image and then calls imwarp to produce the returned output image.
  3 件のコメント
Sean de Wolski
Sean de Wolski 2013 年 12 月 19 日
In R2013b, imregister just calls imregtform on the first line. So it will depend on what you pass in...
Alex Taylor
Alex Taylor 2013 年 12 月 21 日
Yes, I'm quite sure. When you call imwarp with the output tform, you will need to specify an 'outputview' so that imwarp knows the location and resolution you want for the resampled image. In most registration problems in the default coordinate system, you will define the output spatial referencing option (assuming 2d) as:
MovingReg = imwarp(moving, tform, 'OutputView', imref2d(size( fixed)));
This is shown in the examples in the help and documentation for imregtform.

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


Ashish Uthama
Ashish Uthama 2012 年 3 月 20 日
One possible approach:
If you add this parameter and value:
'DisplayOptimization',true
to your call, you'll notice that imregister displays the affine transform it uses with imtransform to perform the final registration.
  1 件のコメント
Sonoma Rich
Sonoma Rich 2012 年 3 月 20 日
I tried this, but I need the results as an object that I can work with it. This method just displays the transformation details, but I need to copy and paste it to use it.

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

Community Treasure Hunt

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

Start Hunting!

Translated by