我想使用GPU加速算法来执行快速和节省内存的dft。但是,当我执行gpu::dft
时,目标矩阵按照documentation中的解释进行缩放。如何通过将宽度缩放到dft_size.width/2 + 1
来避免此问题?另外,它为什么这样缩放?我对DFT代码是这样的:在C++中使用OpenCV执行gpu :: dft缩放
cv::gpu::GpuMat d_in, d_out;
d_in = in;
d_out.create(d_in.size(), CV_32FC2);
cv::gpu::dft(d_in, d_out, d_in.Size);
其中in
是CV_32FC1
矩阵,这是512×512。
最好的解决方案是大小为d_in.size
和类型CV_32FC2
的目标矩阵。
非常感谢您的解释。这工作!如果有一天我会有非常大的图片,我会换成CCS打包数据格式。也感谢链接。 – Sonic 2011-12-19 15:27:31
没问题!很高兴帮助:) – mevatron 2011-12-19 16:29:28
我只想补充一点,与非gpu dft函数不同,OpenCV的'gpu :: dft'不使用Intel的CCS格式。相反,它使用cuFFT的打包格式。不同之处在于CCS是与真实图像具有相同尺寸的单通道图像,并且cuFFT是宽度约为一半的双通道图像。 – may5694 2014-07-17 15:46:39