C 中的二维傅里叶变换

2024-04-07

我使用该网站的方程实现了 2D DFT 和 IDFThttp://homepages.inf.ed.ac.uk/rbf/HIPR2/fourier.htm http://homepages.inf.ed.ac.uk/rbf/HIPR2/fourier.htm我认为这些都是正确的并且解释得很好。 实现看起来像这样:

    for(int i=0;i<inImage.width;i++)
    {
     for(int j=0;j<inImage.height;j++)
     {
      float ak=0; 
      float bk=0;
          for(int ii=0;ii<inImage.width;ii++)
           {
             for(int jj=0;jj<inImage.height;jj++)
              {

               float x=-2.0*PI*i*ii/(float)inImage.width;
               float y=-2.0*PI*j*jj/(float)inImage.height;
            // ak+=inImage.pixels[i][j]*(cos(x)*cos(y)-sin(x)*sin(y));
           //  bk+=inImage.pixels[i][j]*(sin(x)*cos(y)+sin(y)*cos(x));
               ak+=inImage.pixels[i][j]*cos(x+y);
               bk+=inImage.pixels[i][j]*1.0*sin(x+y);
             }
           }
     DFTImageRE.pixels[i][j]=ak;
     DFTImageIM.pixels[i][j]=bk;
       }
     }

频域 (sqrt(ak * ak+bk * bk)) 看起来并不像它应该的那样,并且图像重建(忽略虚部)不会使任何东西接近原始图像。更重要的是,[0][0]处的像素具有极高的值,并且没有像素范围为原始像素的0到255。我究竟做错了什么?

额外的信息:

  • inImage 和 DFTImages 只是构造普通 *.pgm 图像的结构,可以保存和加载图像,
  • 我不能使用任何类(如虚数),因为这个实现将在 GPU 端,

Thanks


我找到了解决我的问题的方法。这只是索引问题。使用 ii 和 jj 求和求傅里叶变换

   for(int i=0;i<inImage.width;i++)
{
 for(int j=0;j<inImage.height;j++)
 {
  float ak=0; 
  float bk=0;
      for(int ii=0;ii<inImage.width;ii++)
       {
         for(int jj=0;jj<inImage.height;jj++)
          {

           float x=-2.0*PI*i*ii/(float)inImage.width;
           float y=-2.0*PI*j*jj/(float)inImage.height;
           ak+=inImage.pixels[ii][jj]*cos(x+y);
           bk+=inImage.pixels[ii][jj]*1.0*sin(x+y);
         }
       }
 DFTImageRE.pixels[i][j]=ak;
 DFTImageIM.pixels[i][j]=bk;
   }
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中的二维傅里叶变换 的相关文章

随机推荐

  • 使用 setInterval 时,如果我在 Chrome 中切换选项卡并返回,滑块会疯狂追赶

    我的网站上有一个 jQuery 滑块 转到下一张幻灯片的代码位于名为 nextImage 的函数中 我使用 setInterval 在计时器上运行我的函数 它完全符合我的要求 它在计时器上运行我的幻灯片 但是 如果我在 Chrome 中访问
  • 如何将 JavaScript 代码嵌入到 Google 协作平台页面中?

    我有一个 Google 协作平台页面 如何在其中嵌入 JavaScript 代码 而不实现小工具并在其中添加 JavaScript 代码 您可以运行一些 JavaScript 代码 但是在页面编辑期间 它将自动包装到一个简单的小工具中 并且
  • 阻止 Rails 表单标签修改文本

    我的一个视图中有下面的代码 但它始终呈现为主页 url 我怎样才能阻止它改变情况 br br 愚蠢 我知道 但这样就可以了 f label 之后的第一个参数实际上应该是正在编辑的对象的方法 所以您可能弄错了 我假设方法 字段名称 实际上是我
  • 通过拼凑对齐多个图例

    In 这个小插曲 https patchwork data imaginist com articles guides layout html controlling guides of 拼凑而成 https cran r project
  • 将 Json 响应解释为纯文本 [重复]

    这个问题在这里已经有答案了 我有以下代码 我需要解析响应 根据我的理解 该响应实际上保存在变量 transferFlag 中 但是 transferFlag 会提醒整个ajax代码 我需要 ajax 调用的响应 它实际上返回方法的值 get
  • 警告:找不到指定操作的配置:

    我遇到以下异常 请帮助解决这个问题 Jul 16 2013 11 18 40 AM org apache struts2 components Form evaluateExtraParamsServletRequest WARNING N
  • 如何将更新部署到在客户站点上运行的服务工作人员?

    假设我提供不同网站使用的推送通知服务 此服务需要在我的客户站点上安装 Service Worker 我希望该架构具有一些属性 完全静态资源 安装 Service Worker 文件 配置 JS 片段等过程只需完成一次 随时更新 Servic
  • 在通知区域切换中收听“深色主题”并收到更改通知

    我可以得到UI MODE NIGHT MASK通过致电resources configuration uiMode and Configuration UI MODE NIGHT MASK 我需要监听这个变量并在接收新值时更改我的主题 我想
  • uwsgi 选项 --wsgi-file 和 --module 无法识别

    我正在尝试使用 uwsgi 运行 Django 应用程序 我发现的大多数指令都引用 wsgi file 和 module 来指定应用程序 但 uwsgi 没有提及这些选项 当我尝试使用它们时 uwsgi s tmp uwsgi sock m
  • 在 Eclipse 的 Crashlytics 安装中找不到存储库

    我尝试将 Crashlytics SDK 安装到 Eclipse 中 但收到以下错误 安装软件 遇到问题 收集要安装的项目时发生错误 An error occurred while collecting items to be instal
  • 使用 JCo 从 SAP 系统读取表

    我试图从 SAP 系统读取表 但总是收到此错误 Exception in thread main com sap conn jco JCoRuntimeException 127 JCO ERROR FIELD NOT FOUND Fiel
  • 以与轴的纵横比一致的物理单位重新缩放箭袋箭头

    过去几个小时我一直在尝试定制matplotlib quiver没有太多运气 该文档非常混乱 我无法解析如何设置每个参数 在我的坐标轴中 一个垂直像素的物理距离比一个水平像素的物理距离小得多 并且我希望 quiver 将箭头自动缩放到此纵横比
  • 从逻辑角度来看,JavaScript 执行上下文和 JavaScript 对象是同一件事吗?

    我对 JavaScript 的理解是 在脚本执行时会创建一个全局执行上下文 我理解为保留内存空间中的一系列键 值对 很像常规的 JavaScript 对象 在函数执行时 将创建一个新的执行上下文 并可以访问 父 执行上下文 对我来说 这至少
  • 比较两个日期列并验证日期是否早于日期

    我有两列日期 月 日 年 我需要验证 DateColumn A 是否出现在 DateColumn B 之前 我使用了以下代码 但收到此错误 TypeError 必须是字符串 而不是系列 请帮助初学者 Code Column A dateti
  • 如何禁用从/到 EditText 的复制/粘贴

    在我的应用程序中 有一个注册屏幕 我不希望用户能够将文本复制 粘贴到EditText场地 我已经设置了一个onLongClickListener在各个EditText这样显示复制 粘贴 输入法和其他选项的上下文菜单就不会显示 因此用户将无法
  • 捕获视频而不预览

    我想捕获视频而不显示预览 这里的 android 文档说这是可能的 但没有解释如何 http developer android com guide topics media camera html capture video http d
  • 通过账户管理器添加账户

    我是 Android 开发新手 很抱歉 如果我问一个非常明显的问题 对于我的应用程序 我想使用帐户管理器自动添加一个谷歌帐户 我想使用 addAccount 或 addAccountExplicitly 吗 假设帐户名是 platinum
  • 何时使用 RabbitMQ 而不是 Kafka? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我被要求评估 RabbitMQ 而不是 Kafka 但发现很难找到消息队列比 Kafka 更合适的情况 有谁知道消息队列在吞吐量 耐用性 延迟或
  • 服务正在启动,但 OnCreate 或 OnStart 未被调用

    我目前正在开发一个 android 项目 我正在尝试启动一个服务 当该服务开始运行一些代码来初始化一些东西时 以下是我用于该服务的代码 Context context PowerManager WakeLock wakeLock publi
  • C 中的二维傅里叶变换

    我使用该网站的方程实现了 2D DFT 和 IDFThttp homepages inf ed ac uk rbf HIPR2 fourier htm http homepages inf ed ac uk rbf HIPR2 fourie