## struggling with shifting an image using non-integer offset

### Alex (view profile)

on 12 May 2013
Accepted Answer by Matt J

### Matt J (view profile)

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?

## Products

Answer by Matt J

### Matt J (view profile)

on 12 May 2013

Use IMTRANSFORM, griddedInterpolant(), or INTERP2.

Alex

### Alex (view profile)

on 12 May 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 (view profile)

on 13 May 2013

You dont need to (:) xx, yy and Im just send them into interp2 as they are.

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

### Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.