傅里叶变换方法求图像卷积-OpenCV实现 遇到的问题!!!求指教!!!!!!
来源:互联网 发布:动画制作软件手机版 编辑:程序博客网 时间:2024/06/11 16:18
使用的代码类似
- void convolveDFT(Mat A, Mat B, Mat& C)
- {
- C.create(abs(A.rows - B.rows)+1, abs(A.cols - B.cols)+1, A.type());
- Size dftSize;
- dftSize.width = getOptimalDFTSize(A.cols + B.cols - 1);
- dftSize.height = getOptimalDFTSize(A.rows + B.rows - 1);
- Mat tempA(dftSize, A.type(), Scalar::all(0));
- Mat tempB(dftSize, B.type(), Scalar::all(0));
- Mat roiA(tempA, Rect(0,0,A.cols,A.rows));
- A.copyTo(roiA);
- Mat roiB(tempB, Rect(0,0,B.cols,B.rows));
- B.copyTo(roiB);
- dft(tempA, tempA, 0, A.rows);
- dft(tempB, tempB, 0, B.rows);
- mulSpectrums(tempA, tempB, tempA, DFT_COMPLEX_OUTPUT);
- dft(tempA, tempA, DFT_INVERSE + DFT_SCALE, C.rows);
- tempA(Rect(0, 0, C.cols, C.rows)).copyTo(C);
- }
=========并不能得到想要的结果================
例如上面的矩阵是输出矩阵,核矩阵如下面的矩阵
根据优化DFTsize变成8X8的矩阵。进行卷积操作。然后经过傅里叶逆变换后的矩阵如下图所示
经过计算其中的 330,330,330;840,840,840;1305,1305,1305才是我想要的卷积后的矩阵。tempA(Rect(0, 0, C.cols, C.rows)).copyTo(C);并不能得到我想要的矩阵啊!!!!!!怎么回事????????????????????????
======================实验了一晚上 已找到解决方法=========================================
有效的卷积后的图像信息从 第kernel.cols-1 kernel.rows-1开始
cv::dft(tempA,tempA,cv::DFT_INVERSE+cv::DFT_SCALE);
tempA(cv::Rect(kernel.cols-1,kernel.rows-1,dst.cols,dst.rows)).copyTo(dst);
这样就可以得到正确的图像了
也解释了前面对于优化DFT尺寸为何如此设置。输出图像大小为何如此设置
阅读全文
0 0
- 傅里叶变换方法求图像卷积-OpenCV实现 遇到的问题!!!求指教!!!!!!
- 通过傅里叶变换方法求图像卷积-OpenCV实现
- 遇到问题了,求指教。。。。
- 用opencv求图像的快速傅里叶变换和反变换
- 多线程爬虫遇到问题求大神指教
- opencv实现图像的傅里叶变换
- Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)
- Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)
- Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)
- 问题,求指教
- java多线程爬虫遇到问题求大神指教
- 最近学习hadoop遇到的问题!虽然很小但是很恶心!同时求指教!!!
- opencv求输入图像的子图像
- opencv求输入图像的子图像
- 封装问题..! 求大侠指教!
- git菜鸟问题求指教
- 关于matlab矩阵卷积conv2和傅里叶变换求卷积ifft2的关系
- 求指教
- 回朔法之图着色问题
- 块状元素和行内元素
- 简述游戏抽奖机制运用的心理学知识(上)
- oracle怎么清屏
- Java生成指定位数不重复随机数
- 傅里叶变换方法求图像卷积-OpenCV实现 遇到的问题!!!求指教!!!!!!
- CodeForces
- HDU 3259 Wormholes(Bellman-Ford算法)
- java 小类型向大类型转化
- 双向循环链表
- cocos creator 修改源码教程并使浏览器预览生效(js)
- LeetCode560. Subarray Sum Equals K
- readn和writen函数实现通信
- http协议