高斯模糊和 FFT

2024-03-11

我正在尝试为学校项目实施高斯模糊。 我需要同时实现 CPU 和 GPU 来比较性能。

我不太确定我是否理解高斯模糊的工作原理。所以我的问题之一是 如果我理解正确的话?

这就是我现在所做的: 我使用维基百科中的方程http://en.wikipedia.org/wiki/Gaussian_blur http://en.wikipedia.org/wiki/Gaussian_blur计算 过滤器。 对于 2d,我采用图像中每个像素的 RGB 并通过以下方式对其应用滤镜 将像素和周围像素的 RGB 与关联的滤镜位置相乘。 然后将这些值相加得到新的像素 RGB 值。 对于 1d,我首先水平应用过滤器,然后垂直应用过滤器,这应该给出 如果我理解正确的话,结果是一样的。 这个结果与应用 2d 滤波器时的结果完全相同吗?

我的另一个问题是如何优化算法。 我读到快速傅里叶变换适用于高斯模糊。 但我不知道如何将其联系起来。 有人能给我正确方向的提示吗?

Thanks.


是的,二维高斯核是可分离 http://blogs.mathworks.com/steve/2006/10/04/separable-convolution/所以你可以将它作为两个一维内核应用。请注意,您无法“就地”应用这些操作 - 您至少需要一个临时缓冲区来存储第一个一维传递的结果。

当您拥有大内核时,基于 FFT 的卷积是一种有用的优化 - 这适用于任何类型的滤波器,而不仅仅是高斯滤波器。 “大”到底有多大取决于您的架构,但您可能不想担心使用基于 FFT 的方法来处理小于 49x49 内核的任何东西。一般的做法是:

  • 对图像进行 FFT
  • FFT 内核,填充到图像的大小
  • 频域中两者相乘(相当于空间域中的卷积)
  • IFFT(逆FFT)结果

请注意,如果您将相同的过滤器应用于多个图像,则只需对填充内核进行 FFT 一次。不过,每个图像仍然至少要执行两次 FFT(一次正向和一次反向),这就是为什么该技术仅成为大型内核的计算优势。

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

高斯模糊和 FFT 的相关文章

  • 防止 ffmpeg 在降低视频分辨率的同时改变颜色强度

    我有一个用例 我需要缩小规模716x1280mp4 视频到358x640 原件的一半 我使用的命令是 ffmpeg i input mp4 vf scale 640 640 force original aspect ratio decre
  • 在Matlab中使用中心切片定理实现滤波反投影算法

    我正在研究一种使用中心切片定理的滤波反投影算法作为家庭作业 虽然我理解纸上的理论 但在 Matlab 中实现它时遇到了问题 我得到了一个可以遵循的框架 但我认为我可能误解了一个步骤 这是我所拥有的 function img sampleFB
  • 如何使用PIL读取原始图像?

    我有一个原始图像 其中每个像素对应一个 16 位无符号整数 我正在尝试使用 PIL Image fromstring 函数进行读取 如以下代码所示 if name main if len sys argv 4 print Error mis
  • 从 GIF 提取帧到 PNG 时丢失数据?

    当我尝试使用 fraxel 的答案时 http stackoverflow com questions 10269099 pil convert gif frames to jpg 在图像上http 24 media tumblr com
  • 增加图像亮度而不溢出

    我在尝试增加图像亮度时遇到问题 这是原始图像 我想要得到的图像是这样的 现在使用以下代码增加亮度 image cv2 imread home wni vbshare tmp a4 index2 png 0 if sum image 0 le
  • 二维高斯函数不能产生正确的结果

    我想写一个返回一个的函数np array尺寸的nx x ny包含具有均值的中心高斯分布mu and sd sig 下面的代码在某些情况下有效 但在许多情况下无效 有什么问题或者我还应该写什么来获得我需要的东西 import matplotl
  • Fabric JS ClipPath:裁剪后如何使图像适合画布?

    我使用 FabricJS 和 ClipPath 属性实现了图像裁剪 问题是如何使裁剪后的图像适合画布 我希望裁剪后的图像填充画布区域 但不知道是否可以使用 Fabric js 来完成 因此 我希望用户单击 裁剪 按钮后图像的选定部分适合画布
  • 如何使用 OpenCV 检测图像帧中的对象?

    我正在使用 Raspberry Pi 开发一个漫游器 它将清扫房间并捡起掉落在地上的物体 为了检测物体 我使用了在流动站操作开始时拍摄的参考图像 以及每 10 秒单击一次的图像 新图像 为了确定图像帧是否发生变化 我在参考图像和新图像之间进
  • 在 C、C++ 中实现腐蚀、膨胀

    我对二值图像的膨胀是如何完成的有理论上的了解 AFAIK 如果我的 SE 结构元素 是这样的 0 1 1 1 在哪里 代表中心 我的图像 二进制是这样的 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0
  • 如何读取 10 位原始图像?其中包含 RGB-IR 数据

    我想知道如何从我的 10 位原始 它有 rgb ir 图像数据 数据中提取 RGB 图像 如何使用 Python 或 MATLAB 进行阅读 拍摄时的相机分辨率为 1280x720 室内照片图片下载 https drive google c
  • 在 RGB 图像上绘制多类语义分割透明叠加

    我有语义分割掩码的结果 值在 0 1 之间 需要大津阈值来确定什么是积极的 我想直接在 RGB 图像上绘制 在 RGB 图像上每个预测类具有不同的随机颜色 我使用以下内容绘制了具有单一颜色的单个蒙版 是否有一个包或简单的策略可以为多类别做到
  • CUDA、NPP 滤波器

    CUDA NPP 库支持使用 nppiFilter 8u C1R 命令过滤图像 但不断出现错误 我可以毫无问题地启动并运行 boxFilterNPP 示例代码 eStatusNPP nppiFilterBox 8u C1R oDeviceS
  • opencv形态扩张滤波器作为最大滤波器

    就像中值滤波器的定义一样 我可以将 最大滤波器 定义为局部窗口 例如dst x y max 3x3 局部窗口像素 但我在opencv中找不到这样的过滤器 最接近的是 dilate 函数 然后我使用 dilate 函数的默认配置 但结果不正确
  • 在我们的 Rails3/Heroku 应用程序中设置 Paperclip + AWS S3 用于图像存储时遇到问题

    我们已经构建了一个 Rails 应用程序 它有多个用户和每个用户的图像 在我们的本地主机上完成所有开发工作 我们为用户和照片提供了工作种子 但现在我们尝试使用 S3 进行图像存储 我们在 总是在 种子 期间遇到错误执行此操作时迁移的步骤 耙
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • 在discord.py中访问成员的横幅

    我正在制作图像配置文件命令 我想为此访问会员的横幅 我们有什么办法可以在discord py 中做到这一点吗 如果不清楚我所说的横幅是什么意思 那么蓝色背景的图像就是横幅 我想访问它 在discord py v2 0中你可以使用 You m
  • 使用 ffmpeg 或 OpenCV 处理原始图像

    看完之后维基百科页面 http en wikipedia org wiki Raw image format原始图像格式 是任何图像的数字负片 为了查看或打印 相机图像传感器的输出具有 进行处理 即转换为照片渲染 场景 然后以标准光栅图形格
  • 归一化互相关的基础知识

    我正在尝试使用范数校正2 归一化互相关 http en wikipedia org wiki Cross correlation Normalized cross correlation 来自 MATLAB 用于计算发育中胚胎中移动形状的速
  • Matlab颜色检测

    我试图一致地检测同一场景的图像之间的某种颜色 这个想法是根据颜色配置文件识别一组对象 因此 例如 如果给我一个带有绿色球的场景 并且我选择绿色作为我的调色板的一部分 我想要一个具有反映它检测到球的矩阵的函数 任何人都可以为这个项目推荐一些
  • setImageCompressionQuality 与 setCompressionQuality 之间有什么区别 - Imagick

    我在Imagick中找到了两种设置图像压缩质量的方法 A 设置图像压缩质量 B 设置压缩质量 所以我想知道哪一个是最好的以及为什么在以下条件下 我读到了setCompressionQuality方法仅适用于新图像 我正在尝试压缩文件 jpe

随机推荐

  • 如何在 SLIME 的 REPL 中获得 Common Lisp 的语法高亮显示?

    我想学习 Common Lisp 并通过 emacs 包管理器安装了 emacs 24 3 和 slime 在 slime REPL 语法高亮中不起作用 另一方面 当我启动 Lisp Mode 在 slime REPL 中 时 表达式的值不
  • 有没有办法在 nextjs 中保持页面刷新时的路由器查询

    我有一个带有动态网址的动态页面 一切都是客户端渲染的 这是link链接到第二页 dashboard orderdetail query id orderID as dashboard orderDetails orderNo 这可以很好地将
  • C# 读取字节数组

    好的 我正在构建服务器 客户端应用程序 基本上服务器接收一个包含 header 2bytes cryptokeys 2bytes 和数据的数据包 我正在考虑构建类以将整个数据包 字节 加载到其中 然后使用内部类方法处理数据包 现在回答问题
  • 在 C# 中将本地时区转换为 PST 时区

    假设我现在系统中的时区是 5 GMT 现在在我的机器上01 14 2012 05 52PM我想将其转换为 PST 时区 例如 1 14 12 4 52 50 AM PST 反之亦然 太平洋标准时间 PST 至格林尼治标准时间 GMT Tim
  • 如何从列表列表中删除 nan? [复制]

    这个问题在这里已经有答案了 我试图从列表列表中删除所有 nan 我的数据如下 1 2 3 nan nan nan 4 5 nan 9 8 7 6 5 4 3 nan nan nan nan nan 我尝试从这里的答案中做到这一点 如何从列表
  • 将最后一个有效索引掩码应用于数据帧以获取最后一个有效值

    我有一个如下所示的数据框 s1 s2 s3 s4 0 v1 v2 v3 v4 0 v5 v6 v7 np nan 0 v8 np nan v9 np nan 0 v10 np nan np nan np nan 本质上从上到下有数值 并且跨
  • 视图在呈现后被 UITransitionView 阻止[重复]

    这个问题在这里已经有答案了 我有一个侧面导航控制器并通过 UIButton 呈现它 当我直接将此 NC 设为根视图控制器时 self presentviewcontroller NC animated YES completion nil
  • 值中每第 n 个字符添加逗号

    我的问题很简单 我从 sql select 中获取一个值 如下所示 ARAMAUBEBABRBGCNDKDEEEFOFIFRGEGRIEISITJPYUCAKZKG 我需要这样的 AR AM AU BE BA BR BG CN DK DE
  • 带有 PIL 的 Pyinstaller。导入错误:无法导入名称 _imaging

    我在运行包含枕头的已编译可执行文件时遇到问题 我使用了 pyinstaller 它似乎编译得很好 但是运行 exe 后 会抛出错误 似乎与引用 imaging 而不是 Image 存在冲突 首先 我觉得很奇怪pillow如何安装到PIL目录
  • 使用 PHP/JavaScript 链接获取有关网站访问者的信息

    有人试图对我进行网络钓鱼 他们假装是我的亲密朋友之一来羞辱我们俩 此人创建了一个虚假的电子邮件帐户 冒充此人 并试图从我这里获取个人信息 我和我的朋友确认这不是他 现在我们正在努力找出他是谁 我想向他们发送一个指向某种 PHP 或 JS 页
  • 如何将 OpenAPI 2.0 转换为 OpenAPI 3.0? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何工具 库可以将 OpenAPI 2 0 定义转换为 OpenAPI 3 0 而无需每行一个
  • RDF 读取/解析错误

    我有一些 RDF 文件 我想将其导入到 tripplestore AllegroGraph 中 但在第一个文件中 我收到 SAX 解析器错误 指出存在无法识别的字符 删除有问题的行后 一切都很好 然后我尝试使用 W3C RDF 验证器和带有
  • ES6代理类,访问私有属性(无法从类未声明的对象中读取私有成员#hidden)

    我正在研究代理对象 类和私有属性 并遇到了这个错误消息 home marc projects playground pipeline clsss js 14 this hidden this hidden TypeError Cannot
  • jQuery - 动态创建的选项卡元素不会触发事件

    我在用jQuery UI 选项卡 http docs jquery com UI Tabs div ul li a href fragment 1 span One span a li ul div 我有一个添加新选项卡的按钮 我使用以下代
  • 承诺进展情况

    Theory 我在开始时做出了大约 100 个承诺 然后使用Promise all 这 100 个 Promise 中的每一个都会依次进行一些异步 REST 调用 其响应可能主要有所不同 例如由于网络连接 解决所有 100 个承诺的过程大约
  • 用鼻子重复进行单次或多次测试

    如同这个问题 https stackoverflow com questions 4088354 is it possible to use nose to run one test multiple times concurrently
  • 在 Go 中,我可以返回满足接口的结构而不访问该接口吗?

    我认为解释这一点的最好方法是通过例子 所以这里是 package main import fmt Greeter greets with a Greeting type Greeter interface Greet Greeting A
  • 如何防止弹性框随内容增长

    在下面的代码和 jsfiddle 中 flexbox 比例随内容而变化 我感觉我不明白 flexbox 的真正目的 如果我们给予flex grow我们想要的比例的属性 为什么盒子会随着内容而增长 通知何时dataDiv其中有新的跨度内容 比
  • Django - 默认字段值取决于其他字段值

    我在设置默认字段值时遇到问题 我想做的事 我希望 Packages 类中的价格成为 Bill 类中 PriceNoTax 的默认值 正如你所看到的 所有三个类都是 逻辑上有联系的 示例 账户 1 有一个 id 为 1 的包裹 该包裹的价格为
  • 高斯模糊和 FFT

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