点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

有人认为恢复模糊的图像是不可能的,因为会丢失信息。但我对这个问题进行了很多思考,并认为如果输出图像的大小与输入图像的大小相同,那实际上是可能的!这样,输出就有足够的像素/信息来恢复原始像素/信息。

首先,解释一下什么是卷积以及如何使用卷积来模糊图像,以及它如何使用模糊的图像。卷积是一种数学运算,当应用于图像时,可以将其视为应用于它的过滤器。

在这个动画中,我们可以看到一个图像与过滤器/内核卷积的例子。原始图像是蓝色矩阵,内核是滑动的深蓝色矩阵,输出是蓝绿色矩阵。

卷积是通过将重叠的内核和图像相乘,然后对乘积求和来获得的。以下等式可能会有所帮助:给定图像x和内核k,卷积的结果将为y。

如果我们已经知道图像上的卷积是如何工作的,也许这个方程组并不太可怕;如果我们不知道,别担心,我们不必记住它,这就是程序的工作!一个有用的表示形式是将卷积解释为矩阵乘法,从上面的等式中可以很容易的写出来:

等价于矩阵方程

通过这种表示,似乎知道A和y,那么x可以通过求解上面的方程来计算。但是,由于A 的列数多于行数,因此该系统尚未确定,这意味着我们不能只获得一个解。

首先说,为了能够反转卷积,输入和输出大小必须相同。在矩阵形式中,这将对应于 A 是正方形(行和列的书面相同),从而我们可以将其求逆并将x计算为:

现在,我们的输入是 4x4,输出是 2x2。我们如何获得与输入相同大小的输出?一种方法是向输入图像中添加填充,例如 0 填充:

这样,输出将像原始输入一样是 4x4。详细地说,对于这种带有填充的卷积的简单情况,输出尺寸可以计算为:

如果我们希望输入和输出具有相同的大小,那么填充必须是:

这产生了一个重要条件:内核大小必须是奇数,因为填充是一个整数值。

这种卷积也可以表示为上述矩阵的乘积,但是我不会不厌其烦地阅读它,因为尺寸会大得多。可以写出与 y 的每个项相关联的卷积方程,然后将其构造为如上所述矩阵乘法。

请注意,尽管填充的输入是 6x6,对应于 36 个元素,但这些元素中只有 4x4 是唯一且未知的变量。因此,方程中的 x 只能是 16x1,而不是 36x1。

要求解 x 并反转卷积,只需知道 A 和 y 。要构造 A ,需要知道用于卷积的内核和所使用的填充类型。

现在,如何使用?可以通过卷积来模糊图像。例如,高斯模糊是通过将图像与内核/滤波器卷积来获得的,该内核/滤波器的中心具有高斯分布,最大值在中心,其值总和为 1。

我首先使用高斯模糊对图像进行模糊处理。我用高斯核对原始图像进行了卷积,并使用了复制填充(原始图像之外的值设置为最接近的边界值,而不是 0)。

左边是原图,右边是模糊图像。

因为我们知道使用的内核,所以我们能够构造矩阵 A 然后求解 x 。结果如预期:重建的图像与原始图像完全相同。

左边是模糊的图像,右边是重建的图像。

现在,这种 100% 重建是可能的,因为使用的内核和填充是已知的。如果我们使用的内核与用于模糊原始图像的内核不完全相同,会发生什么?

不使用精确内核时,左侧图像模糊,右侧重建图像。

如果假设使用复制填充时填充为 0 ,该怎么办呢?

在不假设精确填充的情况下,左侧图像模糊,右侧重建图像。

正如我们所见,如果我们不知道使用的内核和填充,那么我们就无法重建原始图像。从这个意义上说,它几乎可以看作是一个加密问题:如果我们知道“密钥”,那么我们便能够重建原始消息而不回造成任何损失或额外的噪音。

重建原始图像也是一项非常艰巨的任务,因为矩阵 A 会根据原始图像的大小增长非常快。如果原始图像是 4x4,那么 A 将是 16x16 ——元素数量以 N² 缩放。

希望小伙伴们喜欢这个简短的解释并发现它很有趣。我确实做到了,这是了解更多关于 Julia、卷积、图像处理和线性代数的好方法。

我认为我们现在不必担心人们不会恢复模糊的图像了。

左边是模糊的图像,右边是重建的图像。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

你可以恢复模糊的图像吗?相关推荐

  1. 如何用技术恢复模糊的图像?在线教学…

    作者 |小白 来源 |小白学视觉 有人认为恢复模糊的图像是不可能的,因为会丢失信息.但我对这个问题进行了很多思考,并认为如果输出图像的大小与输入图像的大小相同,那实际上是可能的!这样,输出就有足够的像 ...

  2. 恢复模糊的图像 SmartDeblur

    SmartDeblur 是一个用 C++ 编写的用来恢复模糊图像的工具,基于 QT 4.8 开发. SmartDeblur 使用 FFTW 库来实现快速傅立叶算法. Y-Vladimir / Smar ...

  3. 运动模糊的图像修复调研

    前言 1.什么是运动模糊 在用摄像机获取景物图像时,如果在相机曝光期间景物和摄像机之间存在相对运动,例如用照相机拍摄快速运动的物体,或者从行驶中的汽车上拍摄外面静止不动的景物时,拍得的照片都可能存在模 ...

  4. 仅模糊背景图像而不是前面的文本

    正如标题所说. 如何模糊容器的背景图像而不模糊前面的文本? <div class="card"> <div class="head"> ...

  5. linux wget 命令_我如何使用wget Linux命令恢复丢失的图像

    linux wget 命令 2004年,开放剪贴画库(OCAL)成为免费插图的来源,任何人都可以出于任何目的使用它们,而无需注明出处或提供任何回报. 这个站点是开放源代码世界对1990年代每个家庭办公 ...

  6. python裁剪图片边缘模糊_用cv2模糊部分图像后的锐利边缘

    要在该图像上使用python和hsm来检测图像,请执行以下操作:# "org" is the original image, i convert it to HSV color a ...

  7. 模糊聚类 图像 matlab,matlab模糊聚类算法进行图像分割的源程序

    <MATLABGUI程序设计>代码 目录 第一部分MATLAB基础 第1章MATLAB概述 1.1MATLAB软件介绍 1.1.1MATLAB语言 1.1.2MATLAB绘图功能 1.1. ...

  8. OpenCV图像处理——修复失焦模糊的图像

    前言 这是一个图像去模糊的小demo,用OpenCV实现. 代码: #include <iostream> #include "opencv2/imgproc.hpp" ...

  9. 低照度图像 颜色恢复 matlab,低照度图像修复方法总结

    在遇到图像曝光不足时,先前主要分为两种主流思路:基于直方图均衡和基于retinex算法(在之前的总结里分别有介绍). 这两类算法大都存在的缺点:或多或少存在图像过增强现象,使得颜色失真.所以,图像曝光 ...

最新文章

  1. 基于Coravel定时任务之计算总页数
  2. 2016计算机课程设计,2016年计算机组成原理课程设计-硬布线控制器的设计.doc
  3. why my employee binding does not work - important MVC debug
  4. 一个在线编写前端代码的好玩的工具
  5. Oracle在Linux平台安装时涉及的/etc/security/limits.conf
  6. ARM汇编杂项伪指令
  7. go 输入输出流(bufio)
  8. 表单中的日期 字符串和Javabean中的日期类型的属性自动转换
  9. Mac和windows哪个好
  10. P2 邹博机器学习logistic回归
  11. 计算机三级网络技术备考复习资料zhuan
  12. nodejs 截断字符串_JS对于字符串的切割截取
  13. 主页 被 2345 篡改怎么办
  14. 18位身份证的正则表达式并说明
  15. Winfrom+Devexpress 之GridControl ConvertTo TileView 制作精美的卡片式看板
  16. c语言double ave,[编程入门]结构体之成绩统计2-题解(C语言代码)
  17. oracle的视图如何使用,Oracle 视图讲解及使用实例
  18. 小程序源码:实用的智力测试智商提升
  19. U9系统报错:Enterprise[9999] 不存在
  20. 黑色 仿Windows 8 Metro界面 网站css3+html5模板

热门文章

  1. 5大典型模型测试单机训练速度超对标框架,飞桨如何做到?
  2. 你是个成熟的C位检测器了,应该可以自动找C位了
  3. 这份“插件英雄榜Top20”才是Chrome的正确打开方式!
  4. 科大讯飞市值腰斩背后,AI产业集体思考如何落地?
  5. 聊一个不常见的面试题:为什么数据库连接池不采用 IO 多路复用?
  6. 让SpringBoot不再需要Controller、Service、Mapper,这款开源工具绝了!!!
  7. Lombok经常用,但是你知道它的原理是什么吗?
  8. 面试季:如何在面试中介绍自己的项目经验
  9. 深入理解Eureka之源码解析
  10. 盘点深度学习中的各种数据增强技巧