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

25 Ansichten (letzte 30 Tage)
渲航
渲航 am 20 Mai 2023
Beantwortet: 渲航 am 21 Mai 2023
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.)

Akzeptierte Antwort

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

Weitere Antworten (1)

渲航
渲航 am 21 Mai 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);

Produkte


Version

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by