【问题标题】:How can I implement a complex sinusoidal function?如何实现复杂的正弦函数?
【发布时间】:2017-01-25 17:08:49
【问题描述】:

以下是二维复正弦函数,

u0 和 v0 分别代表 X 和 Y 方向的基频。

我需要以目前的形式实现该正弦函数,以便我可以绘制它并将其保存在位图图像文件中。

如何表示 j(虚数)?

我应该分别为 u0 和 v0 分配什么值来绘制该正弦函数?

谁能给我任何提示?

编辑:

这是我的用例: ... ...我需要使用空间和频域方程来实现 Gabor 滤波器。在链接...http://www.cs.utah.edu/~arul/report/node13.html...,你可以看到有几个方程。 (14) 是空间域的 Gabor 滤波器方程。 (15)是频域Gabor滤波器的方程。因此,我的问题。

【问题讨论】:

  • 你为什么要强调在这个现在的形式??在sin 形式中,在 c# 中实现会简单得多..
  • @TaW,这是我的用例: ... ...我需要使用空间和频域方程来实现 Gabor 滤波器。在链接...cs.utah.edu/~arul/report/node13.html...,你可以看到有几个方程。 (14) 是空间域的 Gabor 滤波器方程。 (15)是频域Gabor滤波器的方程。因此,我的问题。

标签: c# image-processing bitmap complex-numbers trigonometry


【解决方案1】:
  1. 你需要用真正的数学来实际计算复数值

    为此,您可以利用这个常用公式(通常用于 DFT/DFFT):

    e^(j*x) = cos(x) + j*sin(x)
    

    现在由于您没有复数,因此您需要将复数处理为 2 元素向量 cplx = re + j*im 所以:

    e^(-j*2*pi*(u0*x+v0*y)) = cos(-2*pi*(u0*x+v0*y)) + j*sin(-2*pi*(u0*x+v0*y))
    ---------------------------------------------------------------------------
    re(x,y) = cos(-2*pi*(u0*x+v0*y))
    im(x,y) = sin(-2*pi*(u0*x+v0*y))
    
  2. 绘制值

    复杂域有 2 个部分 (re,im),您的函数是 2D,因此您可以看到 4D 图。您需要将其转换为人类可以理解的东西,我可以通过多种方式获取 3D 图表,其中:

    • x,y 是位置(与输入变量相同)
    • z 是实部 re
    • color 是虚部 im 编码为色标(类似于 IR 图像)或灰度

    不要忘记旋转投影图,以便从稍微倾斜的一侧看到它而不隐藏重要特征。此处查看带有颜色编码的 3D 图形示例:

    粗略的输出风格取决于您的任务,您需要查看/强调什么是重要的,什么不是。例如,您可以绘制 2D 功率图:

    • x,y 是位置(与输入变量相同)
    • colorsqrt(re*re+im*im) 编码为色阶或灰度

    或者您可以创建 2 个单独的图,一个用于 re,一个用于 im,请参见此处的一些示例:

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 2017-12-28
    • 1970-01-01
    • 2018-02-09
    • 2017-04-10
    • 1970-01-01
    • 2019-12-08
    • 2022-11-25
    • 1970-01-01
    相关资源
    最近更新 更多