Фурье-преобразование изображения в EmguCV - PullRequest
2 голосов
/ 07 октября 2011

Может кто-нибудь сказать мне, есть ли в emgucv 2.3 встроенная функция для обнаружения преобразования Фурье изображений?

Заранее спасибо

1 Ответ

3 голосов
/ 08 октября 2011

Из моего ответа Преобразование Фурье + emgucv

Функция, за которой вы работаете, это CvInvoke.cvDFT, технически она вызывает метод opencv, но она должна быть той, что ваша после

Вот код, который разделяет мнимые и реальные части из cvDFT:

Image<Gray, float> image = new Image<Gray, float>(open.FileName);
IntPtr complexImage = CvInvoke.cvCreateImage(image.Size, Emgu.CV.CvEnum.IPL_DEPTH.IPL_DEPTH_32F, 2);

CvInvoke.cvSetZero(complexImage);  // Initialize all elements to Zero
CvInvoke.cvSetImageCOI(complexImage, 1);
CvInvoke.cvCopy(image, complexImage, IntPtr.Zero);
CvInvoke.cvSetImageCOI(complexImage, 0);

Matrix<float> dft = new Matrix<float>(image.Rows, image.Cols, 2);
CvInvoke.cvDFT(complexImage, dft, Emgu.CV.CvEnum.CV_DXT.CV_DXT_FORWARD, 0);

//The Real part of the Fourier Transform
Matrix<float> outReal = new Matrix<float>(image.Size);
//The imaginary part of the Fourier Transform
Matrix<float> outIm = new Matrix<float>(image.Size);
CvInvoke.cvSplit(dft, outReal, outIm, IntPtr.Zero, IntPtr.Zero);

//Show The Data       
CvInvoke.cvShowImage("Real", outReal);
CvInvoke.cvShowImage("Imaginary ", outIm);

Приветствия

Chris

...