有没有办法从复杂的 ma 中制作 dft
Posted
技术标签:
【中文标题】有没有办法从复杂的 ma 中制作 dft【英文标题】:Is there a way to make a dft from an complex ma 【发布时间】:2014-12-01 13:51:08 【问题描述】:问题是对带有傅氏描述符的信号进行傅氏变换 (cv::dft)。所以垫子应该是复数:(
但我的问题是如何制作复数的垫子?请帮助我找到一个示例或任何其他示例来告诉我如何将复数(RE + IM)存储到垫子上?
有没有办法使用合并?
我的代码
Mat koopa(contours5[0], true);
Mat re;
Mat im;
re.convertTo(re,CV_32SC1);
im.convertTo(re, CV_32SC1);
vector channel(2);
// split coordinates in two mat
split(koopa, channel);
re = channel[0];
im = channel[1];
Mat planes[] = re, im ;
Mat complexImg;
merge(planes, 2, complexImg);
dft(complexImg, complexImg);
split(complexImg, planes);
为什么不工作?链接error picture
【问题讨论】:
请不要发布您的错误的图片(或更糟糕的是,图片的链接)。将错误的 text 复制粘贴到问题中。请复制 complete 错误/构建日志,并标出您收到错误的行。 我认为它很清楚。它是一个数据类型不匹配的问题。您没有估算 dft 期望的数据类型。如果你检查你的错误,你可以看到。阅读编程中的断言是什么。 Matlab 给我与矩阵的相同内容一个完全不同的结果为什么? Opencv [4718, 4534; -19.523417, 35.777447; -146898938938989898935988935889359898989358889358>>>>>>>>>>>>>> 【参考方案1】:因为它需要 CV_32FC 或 CV_64FC 数据类型,但您输入 CV_32SC。
【讨论】:
好的,我已经修复了,代码运行了!但是Matlab给我同样内容的矩阵却给我一个完全不同的结果,为什么? 看来你需要标准化结果。请参阅 DFT_SCALE 标志。 除了改变 dft funktion 没有别的事可做吗?来自 dft(complexImg, complexImg);在 dft(complexImg,complexImg,DFT_SCALE); ?当我这样做时,结果非常小,并且在 matlab 中没有这么高的峰值?? 是不是真的像上面的例子一样,矩阵complexImg中的pay现在是zi = 5 + 6i形式的虚数是由这个合并生成的? 真的无法理解这个问题。但也请看这里:***.com/questions/20045768/…以上是关于有没有办法从复杂的 ma 中制作 dft的主要内容,如果未能解决你的问题,请参考以下文章