傅里叶变换+emgucv

2024-02-28

谁能告诉我这段代码有什么问题吗...

基本上我正在尝试计算图像的 dft 并将其显示为屏幕上的图像。

Image<Gray, float> GreyOriginalImage = new Image<Gray, float>(strFileName);
Matrix<float> imageMat = new Matrix<float>( CvInvoke.cvGetOptimalDFTSize( GreyOriginalImage.Rows ) , CvInvoke.cvGetOptimalDFTSize( GreyOriginalImage.Cols ) );

GreyOriginalImage.CopyTo( imageMat.GetSubRect( GreyOriginalImage.ROI ) );
CvInvoke.cvDFT( imageMat , imageMat , Emgu.CV.CvEnum.CV_DXT.CV_DXT_FORWARD , imageMat.Rows );

GreyFourierImage = new Image<Gray, float>( imageMat.Rows , imageMat.Cols );
imageMat.CopyTo( GreyFourierImage );

ImageBox2.Image = GreyFourierImage;
imageBox2.Show();

问题是代码在执行时挂起并且没有显示图像......

我正在使用带有 emgu cv 的 Visual studio 2010。


好吧,我已经检查了你的代码并对其进行了调试,问题行在这里:

imageMat.CopyTo( GreyFourierImage );

您正在尝试复制 imageMat,它是一个 float[,] 数组到图像浮点数[,,*] 我确信您可以弄清楚这不起作用,这就是程序挂起的原因。

以下是从 cvDFT 中分离虚部和实部的代码:

Image<Gray, float> image = new Image<Gray, float>(open.FileName);
IntPtr complexImage = CvInvoke.cvCreateImage(image.Size, Emgu.CV.CvEnum.IPL_DEPTH.IPL_DEPTH_32F, 2);

CvInvoke.cvSetZero(complexImage);  // Initialize all elements to Zero
CvInvoke.cvSetImageCOI(complexImage, 1);
CvInvoke.cvCopy(image, complexImage, IntPtr.Zero);
CvInvoke.cvSetImageCOI(complexImage, 0);

Matrix<float> dft = new Matrix<float>(image.Rows, image.Cols, 2);
CvInvoke.cvDFT(complexImage, dft, Emgu.CV.CvEnum.CV_DXT.CV_DXT_FORWARD, 0);

//The Real part of the Fourier Transform
Matrix<float> outReal = new Matrix<float>(image.Size);
//The imaginary part of the Fourier Transform
Matrix<float> outIm = new Matrix<float>(image.Size);
CvInvoke.cvSplit(dft, outReal, outIm, IntPtr.Zero, IntPtr.Zero);

//Show The Data       
CvInvoke.cvShowImage("Real", outReal);
CvInvoke.cvShowImage("Imaginary ", outIm);

Cheers,

Chris

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

傅里叶变换+emgucv 的相关文章

  • FFT - 计算频率仓之间的精确频率

    我在用我在网上找到的一个不错的 FFT 库 http www corix dk Mix FFT mix fft html看看我是否可以编写一个音高检测程序 到目前为止 我已经能够成功地让库对包含一些正弦波的测试音频信号进行 FFT 计算 其
  • AudioKit FFT 转换为 dB?

    第一次发帖 感谢社区的厚爱 我在用AudioKit并尝试向麦克风输入添加频率加权滤波器 因此我尝试了解来自 AudioKit AKFFTTap 的值 目前我正在尝试打印转换为 dB 值的 FFT 缓冲区 for i in 0
  • MATLAB 中的 fft2 与 OpenCV C++ 中的 dft 速度比较

    我想知道为什么dftOpenCV C 中的函数比fft2对于二维矩阵 以下C 代码来自文档 http docs opencv org 2 4 doc tutorials core discrete fourier transform dis
  • 在 R 中执行时间序列的 fft

    我想使用 FFT 将波拟合到时间序列 目标是绘制具有不同谐波的图 并用它来预测 n 个数据点 我正在使用的代码基于此answer https stackoverflow com questions 41435777 perform four
  • 如何计算 DFT 中每个 bin 的能量?

    我正在测试我对离散傅里叶变换的了解 我现在测试的是如何使用DFT计算波的中心频率 为此 我使用以下代码创建正弦数据 create a 100 Hz wave with a sampling rate of 512 samples per s
  • 如何在不改变宽高比的情况下裁剪图像

    我需要crop不改变纵横比的图像 我正在拍照佳能1100D使用EDSDK 捕获的图像 宽度 1920和身高 1280长宽比为1 5 但我需要长宽比为多少的图片1 33 convert into processing resolution 1
  • 2D 循环卷积与卷积 FFT [Matlab/Octave/Python]

    我试图理解 FTT 和卷积 互相关 理论 因此我创建了以下代码来理解它 代码是 Matlab Octave 但我也可以用 Python 来完成 In 1D x 5 6 8 2 5 y 6 1 3 5 1 x1 x zeros 1 4 y1
  • Matlab fft 函数交换索引

    我编写了一个简单且非常小的 Matlab 代码 用于计算给定数组 或向量 的离散傅里叶变换 我手动计算出来并得到了答案 我的 Matlab 代码也给出了相同的答案 但fft通过交换索引给出了与此不同的答案 以下是我所做的手动计算 这是第二张
  • 如何在 FFTW 库中进行实数反演 FFT

    我正在尝试使用 FFT 进行一些过滤 我正在使用 r2r 1d 计划 但我不知道如何进行逆变换 void PerformFiltering double data int n FFT double spectrum new double n
  • 傅立叶空间中的滤波器的行为与预期不同

    这是我提出的已回答问题的后续内容 可以找到here https stackoverflow com questions 54022376 inverse fft returns negative values when it should
  • 什么是“无为”卷积核

    如果我尝试在频率空间中执行卷积核 什么是 不执行任何操作 的内核 换句话说 如果我在应用内核并在频率空间中对其进行归一化后查看图像 我只想查看原始傅里叶变换 是单位矩阵吗 我的内核是 3x3 Thanks 一个什么都不做的 3x3 内核将是
  • 高斯模糊和 FFT

    我正在尝试为学校项目实施高斯模糊 我需要同时实现 CPU 和 GPU 来比较性能 我不太确定我是否理解高斯模糊的工作原理 所以我的问题之一是 如果我理解正确的话 这就是我现在所做的 我使用维基百科中的方程http en wikipedia
  • 灰度图像到 NumPy 数组进行傅里叶变换

    目前我正在使用 PIL 和 NumPy 我有一个彩色的png图像 我想要 以灰度读取 转换为 NumPy 数组 对阵列执行 FFT 显示图像 这就是我正在尝试的 在 IPython w pylab flag In 1 import Imag
  • Python中基于FFT的2D卷积和相关

    scipy 或其他流行的库 中是否内置了基于 FFT 的 2D 互相关或卷积函数 有这样的函数 scipy signal correlate2d 直接方法由convolveND将 对于大数据来说很慢 scipy ndimage correl
  • 如何使用 opencv 从字节显示视频?

    我正在开展一个项目 其中我们使用无线电调制解调器将数据 视频和遥测 从无人机传输到地面站 我们需要做的是实时显示视频 并能够知道 C 中的每一块遥测数据对应哪一帧 数据被解封装为遥测和视频 mpeg4 字节 由于我对 OpenCV 有一些经
  • 如何使用Matlab提高PSD的分辨率

    我有音频信号 我用 Matlab 读取该信号 并使用 pwelch 获取其 PSD 这是我正在使用的代码 x Fs audioread audioFile wav x x 1 mono xPSD f pwelch x hamming 512
  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • 如何从傅里叶变换绘制频谱

    我想绘制音乐文件的频谱 就像他们在 Audacity 中所做的那样 因此 我希望 x 轴上以赫兹为单位的频率 y 轴上以振幅 或 desibel 为单位 我将歌曲 大约 2000 万个样本 分成一次 4096 个样本的块 这些块将产生 20
  • Azure 函数上的 Emgucv 版本 4.2

    我想在 Azure Function V3 中使用 EmguCv 版本 4 2 我创建了一个 Azure Function v3 Net Core 应用程序 从 Nuget 安装了 Emgu Cv 版本 4 2 0 3636 也从 Nuge
  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s

随机推荐