我对图像处理一直很感兴趣,曾经写过好几篇博客。

前几天读到一篇文章,它提到图像其实是一种波,可以用波的算法处理图像。我顿时有一种醍醐灌顶的感觉,从没想到这两个领域是相关的,图像还可以这样玩!下面我就来详细介绍这篇文章。


一、为什么图像是波?

我们知道,图像由像素组成。下图是一张 400 x 400 的图片,一共包含了 16 万个像素点。

每个像素的颜色,可以用红、绿、蓝、透明度四个值描述,大小范围都是0 ~ 255,比如黑色是[0, 0, 0, 255],白色是[255, 255, 255, 255]。通过 Canvas API 就可以拿到这些值。

如果把每一行所有像素(上例是400个)的红、绿、蓝的值,依次画成三条曲线,就得到了下面的图形。

可以看到,每条曲线都在不停的上下波动。有些区域的波动比较小,有些区域突然出现了大幅波动(比如 54 和 324 这两点)。

对比一下图像就能发现,曲线波动较大的地方,也是图像出现突变的地方。

这说明波动与图像是紧密关联的。图像本质上就是各种色彩波的叠加。

二、频率

综上所述,图像就是色彩的波动:波动大,就是色彩急剧变化;波动小,就是色彩平滑过渡。因此,波的各种指标可以用来描述图像。

频率(frequency)是波动快慢的指标,单位时间内波动次数越多,频率越高,反之越低。

上图是函数sin(Θ)的图形,在2π的周期内完成了一次波动,频率就是1。

上图是函数sin(2Θ)的图形,在2π的周期内完成了两次波动,频率就是2。

所以,色彩剧烈变化的地方,就是图像的高频区域;色彩稳定平滑的地方,就是低频区域。

三、滤波器

物理学对波的研究已经非常深入,提出了很多处理波的方法,其中就有滤波器(filter):过滤掉某些波,保留另一些波。

下面是两种常见的滤波器 。

低通滤波器(lowpass):减弱或阻隔高频信号,保留低频信号

高通滤波器(highpass):减弱或阻隔低频信号,保留高频信号

下面是低通滤波的例子。

上图中,蓝线是原始的波形,绿线是低通滤波lowpass后的波形。可以看到,绿线的波动比蓝线小很多,非常平滑。

下面是高通滤波的例子。

上图中,黄线是原始的波形,蓝线是高通滤波highpass后的波形。可以看到,黄线的三个波峰和两个波谷(低频波动),在蓝线上都消失了,而黄线上那些密集的小幅波动(高频波动),则是全部被蓝线保留。

再看一个例子。

上图有三根曲线,黄线是高频波动,红线是低频波动。它们可以合成为一根曲线,就是绿线。

上图中,绿线进行低通滤波和高通滤波后,得到两根黑色的曲线,它们的波形跟原始的黄线和红线是完全一致的。


四、图像的滤波

浏览器实际上包含了滤波器的实现,因为 Web Audio API 里面定义了声波的滤波。这意味着可以通过浏览器,将lowpass和highpass运用于图像。

lowpass使得图像的高频区域变成低频,即色彩变化剧烈的区域变得平滑,也就是出现模糊效果。

上图中,红线是原始的色彩曲线,蓝线是低通滤波后的曲线。

highpass正好相反,过滤了低频,只保留那些变化最快速最剧烈的区域,也就是图像里面的物体边缘,所以常用于边缘识别。

上图中,红线是原始的色彩曲线,蓝线是高通滤波后的曲线。

下面这个网址,可以将滤波器拖到图像上,产生过滤后的效果。

http://fellipe.com/demos/lena-js/

浏览器实现滤波的范例代码,可以看这个仓库(https://github.com/rssilva/web-audio-image-filtering)。

来源:阮一峰的网络日志

图像还可以这样玩!如何用波的算法处理图像相关推荐

  1. 图像还可以这样玩!如何用OpenCV处理图像?

    全世界只有3.14 % 的人关注了 青少年数学之旅 人工智能近年来呈现爆发式发展,计算机视觉和深度学习作为人工智能的两大支柱学科,近年来得到迅速发展. 今天小天将带着大家走进计算机视觉!所谓计算机视觉 ...

  2. 【图像加密】基于小波变换结合混沌算法实现图像加密解密含Matlab源码

    ​1 简介 混沌系统被誉为一种天然的密码系统,因其具有对初值的极端敏感性,遍历性,确定性等特性,将混沌与现有加密算法有机结合的混沌加密技术被认为是很有前途的加密新算法.而混沌在二维相平面上表现出的不规 ...

  3. 参数反演 计算机,基于Radon变换的波场参数反演算法及图像重构

    摘要: 计算机层析成像(Computer Tomography)技术自提出以来应用越来越广泛.因此,计算机层析成像是一个有意义的研究方向.当前计算机成像技术的发展的目标是不断提高的速度和图像重构的质量 ...

  4. 【图像加密】基于matlab行列像素置乱+DWT图像加密【含Matlab源码 675期】

    ⛄一.DWT简介 数字技术.多媒体技术和网络技术的发展,为信息的存储提供了极大的方便.随着计算机网络通信技术的深入应用,数据的交换和传输已经得到广泛的应用.因此,通过网络传输的数字产品如:图象.声音. ...

  5. 【专家有话说】如何用TI-ONE与Angel框架玩转腾讯广告算法大赛?

    2020腾讯广告算法大赛除了在赛题.奖金池.评委阵容上实现了全面升级之外,更是拥有腾讯云智能钛机器学习平台(TI-ONE).腾讯大数据 Angel 深度学习引擎两大机器学习平台强势加持. 为了让选手们 ...

  6. linux小波识别算法,人脸识别相关技术之小波变换

    一.图像/矩阵进行Haar小波的基本原理 小波分析的基本思想是用一族函数表示或逼近信号或函数.这一函数族称为小波函数系(小波基),它是通过一个基本小波函数的不同尺度伸缩和平移而形成的.小波变换的实质是 ...

  7. 神经网络提取图片特征,神经网络算法识别图像

    如何用Python和深度神经网络寻找相似图像 代码首先,读入TuriCreate软件包import turicreate as tc我们指定图像所在的文件夹image,让TuriCreate读取所有的 ...

  8. 【图像融合】基于matlab主成分结合小波离散变换PCA-DWT图像融合【含Matlab源码 2199期】

    一.小波变换彩色图像融合简介 1 基于小波的图像融合 1.1 小波的分解和重构 小波变换是一种能够用来检测信号局部特征的数学工具.当然也可以将二维信号分解成不同分辨率的子带信号.由于图像为二维信号, ...

  9. 【显著性检测】基于HC算法实现图像显著性检测附MATLAB代码

    1 简介 图像融合是一种重要的增强图像信息的技术方法,如何对同一目标的多源遥感图像数据进行有效的融合,最大限度地利用多源遥感数据中的有用信息,提高系统的正确识别.判断和决策能力,这是遥感数据融合研究的 ...

最新文章

  1. R语言使用dplyr将特定的数据列移动到最前面、使用dplyr将特定数据列移动到另一指定数据列的后面、使用dplyr将特定数据列移动到另一指定数据列的前面
  2. 内核ioread,iowrite volatie 的正确使用
  3. 魅族建立基于M8的Android开源项目
  4. 从 Vuex 0.6.x 迁移到 1.0
  5. Tomcat应用部署:打war包、在Tomcat中注册用户角色、创建虚拟目录和域名
  6. POST请求传入中文参数,接收端乱码
  7. C++对象模型 笔记1
  8. 基于 Linux 的文件操作 网络编程的最后一环
  9. Linux下配置Hadoop全分布式环境
  10. 游戏的发动机——数值设计
  11. 触动精灵 PLIST 文件读取 详解
  12. mysql float数据类型和decimal数据类型
  13. 戴德金--连续性和无理数--我自己做的中文翻译第4页
  14. Express中间件body-parser
  15. usb驱动开发21——驱动生命线
  16. 让老板虎躯一震的前端技术,KPI杀手
  17. 张钹院士:清华大学AI研究院要孵化人工智能界的BAT
  18. 解决IDEA中使用git插件提交代码乱码问题
  19. 1、HotSpot And OpenJDK And OracleJDK And JER区别
  20. 《卷积网络》深度卷积网络实例

热门文章

  1. (四)开源C# WPF控件库《AduSkin – UI》
  2. 错误使用.Net Redis客户端CSRedisCore,自己挖坑自己填
  3. .NET Core开发的iNeuOS工业互联网平台,发布 iNeuDA 数据分析展示组件,快捷开发图形报表和数据大屏...
  4. ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记
  5. ASP.NET Core快速入门(第3章:依赖注入)--学习笔记
  6. ASP.NET Core on K8S学习初探(1)
  7. .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了
  8. 手把手教你写DI_2_小白徒手撸构造函数注入
  9. IdentityServer4 实现自定义 GrantType 授权模式
  10. 实现BUG自动检测 - ASP.NET Core依赖注入