В этом исследовании статье в разделе 4.3.1 (core detection),Расчет коэффициента корреляции
Как рассчитать коэффициенты корреляции между двумя пикселями?
public static Complex[,] Correlation(Complex[,]image, Complex[,]mask)
{
Complex[,] convolve = null;
int imageWidth = image.GetLength(0);
int imageHeight = image.GetLength(1);
int maskWidth = mask.GetLength(0);
int maskeHeight = mask.GetLength(1);
if (imageWidth == maskWidth && imageHeight == maskeHeight)
{
FourierTransform ftForImage = new FourierTransform(image); ftForImage.ForwardFFT();
FourierTransform ftForMask = new FourierTransform(mask); ftForMask.ForwardFFT();
Complex[,] fftImage = ftForImage.FourierImageComplex;
Complex[,] fftKernel = ftForMask.FourierImageComplex;
Complex[,] fftConvolved = new Complex[imageWidth, imageHeight];
for (int j = 0; j < imageHeight; j++)
{
for (int i = 0; i < imageWidth; i++)
{
fftConvolved[i,j] = Complex.Conjugate(fftImage[i,j]) * fftKernel[i,j];
}
}
FourierTransform ftForConv = new FourierTransform();
ftForConv.InverseFFT(fftConvolved);
convolve = ftForConv.GrayscaleImageComplex;
Rescale(convolve);
convolve = FourierShifter.FFTShift(convolve);
}
else
{
throw new Exception("padding needed");
}
return convolve;
}
Это правильная процедура calculate correlations?
Если да, то как я могу найти коэффициенты корреляции от этого?
корреляция не между двумя пикселями, но между двумя окрестностями вокруг пикселей. –
@AmitayNachmani, do 'Correlation',' Correlation Matching' и 'Cross-correform' представляют одни и те же вещи? То есть умножение комплексных сопряжений? https://en.wikipedia.org/wiki/Cross-correlation#Properties – anonymous
Я не эксперт в этих вещах, но crooss -корреляция измеряет корреляцию между двумя сигналами для разного количества сдвигов. Каждое значение взаимной корреляции (которое является вектором) является корреляцией, измеренной для конкретного сдвига. –