How to make the output size of imwarp the same as the input?

44 views (last 30 days)
I have some 3D images and wish to perform some rigid transform on them and keep the input size and output size the same. I used the imwarp function for these operations. But I found that it seems impossible to directly give parameters to ensure that the input and output have the same size as functions such as imrotate. How should I deal with it?
(Theoretically I can also crop or pad by myself, but sometimes the size of the image has an odd number, which makes it difficult to define the transformation by myself.)

Accepted Answer

Matt J
Matt J on 20 May 2023
There is an OutputView input parameter that will let you control that,

More Answers (1)

渲航
渲航 on 21 May 2023
I found the solution by Matt J's answer
Besides the transform defnition
tform = rigidtform3d(rotation,translation);
We should define another object by function affineOutputView, such as
sameAsInput = affineOutputView(size(img_pad),tform,"BoundsStyle","SameAsInput"); % the same output size as input
then applied both of them
res_volume = imwarp(img,tform,"OutputView",sameAsInput);

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!