How can you performing imwarp about the center of an image, not the top left corner?
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sonoma Rich
el 6 de Abr. de 2016
Comentada: Craig Russell
el 29 de Sept. de 2017
I am trying to transform a 2D image using an affine2D object (translation, rotation, and scale). I want to apply it about the center of the image and the output image to be the same size as the input image. When I used imwarp, it applies it at the top left corner. I did it as follows:
T = affine2d(H);
R = imref2d(size(img));
img2 = imwarp(img,T,'OutputView',R);
Can you please help?
0 comentarios
Respuesta aceptada
Alex Taylor
el 7 de Abr. de 2016
Editada: Alex Taylor
el 7 de Abr. de 2016
There are at least two ways to do this with IMWARP. One is to use a composite geometric transformation in which you pre and post multiply your intended transformation to shift the image to the origin (0,0), apply your affine operation, and then shift the image back to its original center.
A second, and I think easier way to do it, is to put your image into a non-default coordinate system where it is defined as being centered at the origin and then just apply your intended transformation. This approach is shown below.
A = imread('pout.tif');
Rin = imref2d(size(A))
Rin.XWorldLimits = Rin.XWorldLimits-mean(Rin.XWorldLimits);
Rin.YWorldLimits = Rin.YWorldLimits-mean(Rin.YWorldLimits);
out = imwarp(A,Rin,tform);
1 comentario
Craig Russell
el 29 de Sept. de 2017
Just a point
Rin.XWorldLimits = Rin.XWorldLimits-2*mean(Rin.XWorldLimits);
Rin.YWorldLimits = Rin.YWorldLimits-2*mean(Rin.YWorldLimits);
Worked for me, unsure why but whatever.
Más respuestas (0)
Ver también
Categorías
Más información sobre 3-D Volumetric Image Processing en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!