opencv使用频域相乘加速卷积速度
2011-08-24 20:08
253 查看
void speedy_convolution( const CvMat *A,//size:M1 * N1 const CvMat *B, //size : M2 * N2 CvMat *C //size:(M1+M2-1) * (N1+N2-1) ) { int dft_M = cvGetOptimalDFTSize(A->rows + B->rows -1); int dft_N = cvGetOptimalDFTSize(A->cols + B->cols -1); CvMat *dft_A = cvCreateMat(dft_M , dft_N , A->type); CvMat *dft_B = cvCreateMat(dft_M, dft_N, B->type); CvMat tmp; //copy A TO dft_A and pad dft_A with zeros cvGetSubRect(dft_A,&tmp , cvRect(0,0,A->cols,A->rows)); cvCopy(A,&tmp); cvGetSubRect(dft_A,&tmp,cvRect(A->cols,0,dft_A->cols - A->cols , A->rows)); cvZero(&tmp); //no need to pad bottom part of dft_A with zeros because of //use nonzero_rows parameter in cvDFT() call below cvDFT(dft_A,dft_A,CV_DXT_FORWARD,A->rows); //repeat the same with the second array cvGetSubRect(dft_B,&tmp,cvRect(0,0,B->cols,B->rows)); cvCopy(B,&tmp); cvGetSubRect(dft_B,&tmp,cvRect(B->cols,0,dft_B->cols - B->cols , B->rows)); cvZero(&tmp); //no need to pad bottom part of dft_B with zeros because of //use nonzero-rows parameter in cvDFT() call below cvDFT(dft_B,dft_B,CV_DXT_FORWARD,B->rows); //or CV_DXT_MUL_CONJ to get correlation rather than convolution cvMulSpectrums(dft_A,dft_B,dft_A,0); //calculate only the top part cvDFT(dft_A,dft_A,CV_DXT_INV_SCALE,C->rows); cvGetSubRect(dft_A,&tmp,cvRect(0,0,C->cols,C->rows)); cvCopy(&tmp,C); cvReleaseMat(dft_A); cvReleaseMat(dft_B); }
相关文章推荐
- DFT频域相乘和时域卷积计算注意点
- 使用GPU提高OpenCV的图像处理运算速度
- 黑马程序员_加速Java应用开发速度5:使用脚本自动化日常操作
- 加速pip更新速度,使用阿里云pip源
- MATLAB做矩阵卷积 时域做卷积,频域相乘 (时卷频乘) 二维卷积
- asp使用jquery延迟加载用户控件加速网页显示速度
- OpenCV程序加速及C++中一些编程语法速度比较
- STM32使用SPI DMA加双缓冲区的方式加速LCD显示BMP图片时刷屏速度
- VS2010+OpenCV2.3.1环境下使用tbb加速示例
- 使用HTML5的页面资源预加载(Link prefetch)功能加速你的页面加载速度
- 使用opencv作物件识别(一) —— 积分直方图加速HOG特征计算
- 使用opencv作物件识别(一) —— 积分直方图加速HOG特征计算
- OpenCV之gpu 模块. 使用GPU加速的计算机视觉:GPU上的相似度检测(PNSR 和 SSIM)
- 使用opencv作物件识别(一) —— 积分直方图加速HOG特征计算
- 两个多项式相乘 使用散列表加速 在计算时合并多项式的项
- 关于使用opencv的提速(三)(GPU加速)
- Android SDK下载速度慢无法更新?使用国内镜像站加速!
- Python下opencv使用笔记(十)(图像频域滤波与傅里叶变换)
- Python语言opencv使用笔记(十)(图像频域滤波与傅里叶变换)