# opencv idft output and calculation of phase I have been trying to calculate the phase information of a complex matrix in opencv. As I am new in using opencv I am sure I am failing to look for the correct answer. So, I have this program.

I am sure the matrix invDFT holds complex values.

So what is the easiest way of calculating the phase of the total matrix? And how can I imshow the DFT output for this program? I have used phase and I am not sure if its correct.

Thanks. I already said I am new in opencv. So please pardon if my questions are too basic. Thanks once again.

int main()
{
// Read image from file
// Make sure that the image is in grayscale
Mat img = imread("input.bmp", 0);
Mat mag, ph;

Mat planes[] = { Mat_<float>(img), Mat::zeros(img.size(), CV_32F) };
Mat complexI;    //Complex plane to contain the DFT coefficients {-Real,-Img}
merge(planes, 2, complexI);
dft(complexI, complexI);  // Applying DFT

// Reconstructing original imae from the DFT coefficients
Mat invDFT, invDFTcvt;

idft(complexI, invDFT, DFT_SCALE | DFT_REAL_OUTPUT); // Applying IDFT

Mat planesi[] = { Mat_<float>(invDFT), Mat::zeros(invDFT.size(), CV_32F) };
split(invDFT, planesi);

invDFT.convertTo(invDFTcvt, CV_8U);
imshow("Output", invDFTcvt);

phase(planesi, planesi, ph, false);

namedWindow("phase image", CV_WINDOW_AUTOSIZE);
imshow("phase image", ph);

//show the image
imshow("Original Image", img);

// Wait until user press some key
waitKey(0);
return 0;
}

edit retag close merge delete