如何实现复杂的正弦函数?

时间:2016-09-17 16:13:18

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

以下是2d复数正弦函数,

enter image description here

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

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

我如何表示j(虚数)?

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

任何人都可以给我任何暗示吗?

修改:

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

1 个答案:

答案 0 :(得分: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是位置(与输入变量相同)
    • color sqrt(re*re+im*im)编码为色阶或灰度

    或者,您可以为re创建一个单独的图表,为im创建一个图表: