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

# Translation in x & y

Asked by Fabo on 2 Apr 2013

How can I find the translations in the x & y coordinates in order to align edge detected images. I have 3 edge detected images and I want to align the second and third parts(G&R) to the first(B).

How can I do this using the 'circshift' function. As I want to Use the sum of squared difference metric to measure how well images match:

Sum of squared differences: sum( (image1-image2).^2 )

I want to record the displacements in x&y that were used to align the parts for each image

## 1 Comment

Walter Roberson on 2 Apr 2013

circshift is unlikely to be correct for this purpose.

## Products

No products are associated with this question.

Answer by Image Analyst on 2 Apr 2013

Your method will be, well, let's say "suboptimal." You might want to give imregister() a try. You can run it on either on the original images or the edge detected output images.

## 1 Comment

Image Analyst on 3 Apr 2013

Here's my demo of normalized cross correlation which can be used to locate one image in another: http://www.mathworks.com/matlabcentral/answers/69245#answer_80505

Answer by Sean de Wolski on 2 Apr 2013
```doc imregister
```

I have also found this one to be very fast and efficient:

http://www.mathworks.com/matlabcentral/fileexchange/18401-efficient-subpixel-image-registration-by-cross-correlation

It does not minimize the sum of squared differences, though. It instead maximizes the normalized cross power spectrum.

Implementing your own minimization of SSD should be fairly straight forward, simply a for-loop over a few different ranges.

## 1 Comment

Fabo on 9 Apr 2013

How would I do a for-loop for the ssd, Im new to matlab