opencv - FFTW fftwf_plan_r2r_2d() with FFTW_REDFT01 equivalent -


i trying port code uses fftw use kissfft.
code uses fftwf_plan_r2r_2d() fftw_redft01.

what equivalent call in kissfft?

if call (with fftw_redft01) equivalent dct, use direct dct transform instead, e.g. such opencv cv::dct?
there input data modification i'd need do, reflections , symmetrizations?

answering own question...
of these two references, ended not using dft @ all, using opencv's cv::dct() , cv::idct() instead.

to answer question, fftwf_plan_r2r_2d(...,fftw_redft10, fftw_redft10,...) can replaced opencv code additional scaling:

cv::dct(img, resfft); // fwd dct. matlab's dct2() resfft *= (4 * sqrt(float(img.rows/2)) * sqrt(float(img.cols/2))); resfft.row(0) *= sqrt(2.f); resfft.col(0) *= sqrt(2.f); 

the inverse fftw_redft01 can done so:

// first re-scale data idct(): resfft /= (4 * sqrt(float(img.rows/2)) * sqrt(float(img.cols/2))); resfft.row(0) /= sqrt(2.f); resfft.col(0) /= sqrt(2.f); cv::idct(resfft, outimg); // return input  // however, transforms computed fftw unnormalized, corresponding,  // computing transform followed inverse yields original array scaled n, n logical dft size.  // logical dft size: logical n=2*n each axis, th implicit symmetrization // of image: reflect right , reflect both halves down. int logicalsizen = (2*img.rows) * (2*img.cols); outimg *= logicalsizen; // scale fftw result 

more helpful links here , here.

note opencv supports images number of rows , columns.


Comments

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -