Hello,
I use two different methods to calculate the convolution of two images, both methods should return the same result, but they are different and both results don't seem right.
I wanted to auto correlate an image and therefore I convolve the image with a flipped version of itself. In theory it should work, but in reality, there is some bug.
Any idea why this method always returns a black image:
void AutoCorrelation1(Mat *image)
{
cv::Mat flippedImage;
//Flipped around the x - axis
cv::flip(*image, flippedImage, 0);
//Convolved both images
cv::filter2D(*image, *image, -1, flippedImage, Point(-1,-1), 0.0, 0);
}
And this is the one with the strange results:
void AutoCorrelation2(Mat *image)
{
cv::Mat flippedImage;
//Flipped around the x - axis
flip(*image, flippedImage, 0);
//Increase depth
flippedImage.convertTo(flippedImage, CV_64F);
image->convertTo(*image, CV_64F);
//DFT Both images
DFT(image);
DFT(&flippedImage);
//Per element multiplication
multiply(*image, flippedImage, *image);
*image = *image/ 500;
//Inverse DFT Result
DFTInverse(image);
//Transform Image Back
image->convertTo(*image, CV_8U);
}
PS: DFT and DFTInverse work properly, already checked that.
Regards, VoodooCode