# Image Processing: Shifting Images

## Contents

Assuming we have two images of the same object, but not aligned properly:

imagesc(im1), imagesc(im2);

## Finding the difference in coordinates

You must be careful when choosing the reference points. Here we use the end points of the major axis in the denser (red) region
and average over them. We now type ** ginput** to find the coordinates of the rings:

imagesc(im1) [x1, y1] = ginput(2)

x1 = 49.7200 77.0104 y1 = 65.4430 78.3728

Then do the same thing to ** im2**:

imagesc(im2) [x2, y2] = ginput(2)

x2 = 79.6094 108.5242 y2 = 94.2412 111.2851

Assuming we want to keep ** im1** unchanged and shift

**to fit**

`im2`**. Then we calculate the difference in coordinates:**

`im1`Diffx = x1 - x2

Diffx = -29.8894 -31.5138

Diffy = y1 - y2

Diffy = -28.7982 -32.9123

Averaging over the two points we have

Dx = mean(Diffx)

Dx = -30.7016

Dy = mean(Diffy)

Dy = -30.8553

Remember that the *rows* are in the *y*-direction and the *columns* are in the *x*-direction, and the pixel indices should be integer. Therefore the number of rows and columns over which ** im2** must be shifted, are

Nrow = round(Dy)

Nrow = -31

Ncol = round(Dx)

Ncol = -31

The ** round()** function returns value to the nearest integer.

## Calling the function 'imshift'

To call the function, type the following command:

imr=imshift(im2,Nrow,Ncol);

Now the shifted ** im2** (i.e.

**) should be aligned with**

`imr`**:**

`im1`imagesc(imr), imagesc(im1);