`autocorr2` documentation

The `autocorr2` function calculates the radially averaged autocorrelation (also known as pair correlation or two-point correlation of the pixels of an image as a function of distance. The function is really fast because it uses the Fourier transform for the convolution of the original image. The code also corrects for the finite image size: images close to the edge have fewer neighbors than particles near the center.

## Contents

## Syntax

`[S2,d] = autocorr2(I)`

`S2 = autocorr2(I,d)`

## Description

`[S2,d] = autocorr2(I)` Computes the radially averaged autocorrelation S2 also known as pair correlation or two-point correlation) of the pixels of an image I as a function of distance d.

`S2 = autocorr2(I,d)` Explicitly determine the distance vector d. The maximum element of d should not be larger than 0.3*max(height,width).

## Example

The main application of this algorithm is to characterize microstructures. To demonstrate this, let's create a simple synthetic microstructure based on some circles of different diameter, and then calculate its radially averaged autocorrelation.

% Create a logical image with circles embedded in it % First create the image imageSizeX = 640; imageSizeY = 480; I = zeros(imageSizeY,imageSizeX); [columnsInImage, rowsInImage] = meshgrid(1:imageSizeX, 1:imageSizeY); % Define the number of circles N = 200; % Define the circle parameters in the image. centersX = imageSizeX.*rand(N,1); centersY = imageSizeY.*rand(N,1); radius = 20.*rand(N,1); % Place the circles for ii = 1:N aux = (rowsInImage - centersY(ii)).^2 ... + (columnsInImage - centersX(ii)).^2 <= radius(ii).^2; I = I + aux; end % Convert back to logical I = logical(I);

Now compute the autocorrelation and display it along with the original image.

[S2,d] = autocorr2(I); % Display the images and the two-point correlation function h = figure; set(h, 'Position',[159.4000 203.4000 1.1824e+03 370.4000]); subplot(1,2,1) imshow(I) ; title('Binary image'); subplot(1,2,2) plot(d,S2,'r','LineWidth',2) title('Two-point correlation function'); xlabel('Pixel number'), ylabel('Correlation function S_{2}') ylim([0,1])

## See also

`fft2`, `ifft2`, `fftshift`

## About

Programmed by Santiago M. Benito at the Chair of Materials Technology of the Ruhr-Universität Bochum.