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

24 visualizaciones (últimos 30 días)
渲航
渲航 el 20 de Mayo de 2023
Respondida: 渲航 el 21 de Mayo de 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.)

Respuesta aceptada

Matt J
Matt J el 20 de Mayo de 2023
There is an OutputView input parameter that will let you control that,

Más respuestas (1)

渲航
渲航 el 21 de Mayo de 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);

Categorías

Más información sobre 3-D Volumetric Image Processing en Help Center y File Exchange.

Productos


Versión

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by