您的位置:首页 > 编程语言 > MATLAB

Matlab图像处理笔记--图像修复

2020-04-01 18:44 851 查看

大多数的修图软件都是通过借用相邻像素内容来对照片进行处理,这其中比较有代表性的就要数Adobe的修图软件了,但这这种方式也有一定的缺陷,就是当你的图像变成这个样子时,那么这张照片就彻底没救了,如下图所示。

不过最近Nvidia推出了一种新的解决方案,他们开发了一个深度学习系统,可以通过确定空白处损坏内容来填补恢复照片,而不是简单的从旁边来复制像素内容,虽然AI也会出现识别错误的情况,但是他可以拯救修复那些毫无希望的图像,但是比较遗憾的是该项技术还没有被公布开放。

传统的图像修复

如果是一个人要怎样修复一幅图像那,首先指定待修复的区域,然后确定结构,接着为区域内不同的部分添加一些细节。
Specify regions->Determine structures->Adding textures
图像修复就是要确定结构和纹理和图像的其他部分要一致。
传统的图像修复算法分为两种:

  • Diffusion-based methods
    主要思想就是基于边缘的像素,利用微分方程计算出应该填补的像素,但是这种方法比较适用于比较狭小和细小的缺失区域。
    大家可以试一下scikit-Image这个library里面的inpainting函数来体验以下效果。
  • Patch-based methods
    从边缘开始确定一个patch,然后在图像的其他区域去搜索相似的patch,复制到缺失区域,通过迭代的过程来填补缺失的区域,这种方法相比于前一种方法比较适用于比较大的缺失区域,并且纹理比较清晰,缺点是某些复杂情况下,没有办法生成比较合理的结构。
    opencv中inpainting方法的核心思想就是基于patch的。

传统的修复算法存在一定的局限性,比如:

  • Semantic filling
  • complex scenes
  • large holes

接下来介绍用于图像修复的深度深层模型(deep generative models)
网络结构的设计
网络如何去提取缺失区域内外的关系,建立关系。
Context Encoder

训练过程中mask的生成
整体框架的设计

  • 点赞
  • 收藏
  • 分享
  • 文章举报
菜渣已上线 发布了3 篇原创文章 · 获赞 0 · 访问量 197 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: