struggling with shifting an image using non-integer offset

1 visualización (últimos 30 días)
Alex
Alex el 12 de Mayo de 2013
Comentada: Gustav Shen el 15 de Mayo de 2017
I am not sure I understand the fact that the image's resolution 1500x2000 (integer values) pixels and offset_X = -3.0314 and offset_Y = 1.2432.
How to go about shifting the image taking into account the offset?

Respuesta aceptada

Matt J
Matt J el 12 de Mayo de 2013
Use IMTRANSFORM, griddedInterpolant(), or INTERP2.
  2 comentarios
Alex
Alex el 12 de Mayo de 2013
Thank you for the advice. Could you please, correct the code below based on interp2. Let's say I have an image (size 971x1471) assigned to variable Im. Offset for this image is offset_X = -3.0314 and offset_Y = 1.2432. I need to get the image ImC (corrected image shifted using the offset above). After reading about interp2 I came up with the next code with MATLAB error message leaping at me. Please, guide me here.
[xx,yy] = ndgrid(1:971,1:1471);
xx = xx(:);
yy = yy(:);
xxShifted = xx + offset_X;
yyShifted = yy + offset_Y;
ImC=Im;
ImC(:) = interp2(xx,yy,Im(:),xxShifted,yyShifted);
Error using griddedInterpolant The grid vectors are not strictly monotonic increasing.
Error in interp2/makegriddedinterp (line 220) F = griddedInterpolant(varargin{:});
Error in interp2 (line 125) F = makegriddedinterp({X, Y}, V, method);
Bjorn Gustavsson
Bjorn Gustavsson el 13 de Mayo de 2013
You dont need to (:) xx, yy and Im just send them into interp2 as they are.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Geometric Transformation and Image Registration en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by