Overview

这是一篇比较经典的exemplar-based的inpainting算法,算法思路比较简单,是一种贪心算法,主要分为以下几步:

1、在需要填充区域的轮廓上计算权重,选择权重最大的轮廓点作为待填充点

2、在该点周围领域取一个一定大小的patch块,在图像其他区域内找该patch快的最近邻patch

3、将最近邻patch块对应到需要填充区域的部分复制到等待填充的区域,再重复上述步骤,直至所有点都填充完毕。

从上述算法流程来看,算法比较简单,是一个基于填充区域轮廓优先级的算法,算法是一个贪心算法。存在的一个明显弊端就是无法保证最终整体填充效果。

Impletion Detail

1. filling order

paper中着重讲述了填充顺序的关键性,也是本片paper的主要创新点,轮廓点上的优先级由两部分组成,其中C(p)是confidence term, D§是data term.
P(p)=C(p)D(p)P(p) = C(p)D(p) P(p)=C(p)D(p)
1、confidence term: 表明该点的可靠度

2、data term: 根据patch周围数据进行计算的项

1.1 confidence term

condidence 项可视为围绕在点ppp周围点的可信度,目的是优先填充那些周围有更多已知点的patch快。

其计算公式如下,Ψp\Psi_pΨp​表示以ppp点为中心的patch快,其中∣Ψp∣|\Psi_p|∣Ψp​∣ 是整个patch的面积,
C(p)=∑q∈ΨpC(q)∣Ψp∣C(p) = \frac{\sum_{q \in \Psi_p}C(q)}{|\Psi_p|} C(p)=∣Ψp​∣∑q∈Ψp​​C(q)​

1.2 data term

数据项的目的是优先填充有较强纹路结构的点,其计算方式如下
D(p)=∣▽Ip⊥⋅np∣αD(p) = \frac{|\triangledown I^{\bot}_p \cdot n_p|}{\alpha} D(p)=α∣▽Ip⊥​⋅np​∣​
其意义如下图,在点ppp处获得待填充轮廓的法线方向npn_pnp​, ▽Ip⊥\triangledown I^{\bot}_p▽Ip⊥​ 则表示其梯度方向旋转90度,从而可以找到具有比较强结构特征的点。从该项可以看出那些梯度方向和轮廓垂直,且梯度比较大的点,拥有更高的优先级。

propagate texture and structure information

在找到优先级最高的点后,以ppp为中心的patch块Ψp\Psi_pΨp​, 在已知图像区域中寻找一个相似的最高的patch块Ψq^\Psi_{\hat{q}}Ψq^​​。

Updating confidence values

使用Ψq^\Psi_{\hat{q}}Ψq^​​ 填充Ψp^\Psi_{\hat{p}}Ψp^​​后,confidence的值也需要进行更新,对于新填充的点,统一使用点p^\hat{p}p^​处的confidence值进行填充。
C(q)=C(p^),C(q) = C(\hat{p}), C(q)=C(p^​),
更新confidence从而可以动态的评估边界上各个patch块的相对优先级,而不需要和图像相关的参数。随着填充的进行,confidence值会不断减少,表明我们对于目标中心区域的像素点更不确定。

review of the algorithm

下表为整个算法的流程,正如先前所说,该算法是一个贪心算法,每次寻找边界上的一个最优点进行patch块的生长,直到所有点都被填充。

缺点

  1. 基于样例算法的共有缺陷:无法应对没有合适填充样例的图片
  2. 无法保证最终填充图像整体的consistence.

some improvement method

filling order

填充次序对于该算法来说至关重要,是该算法能work的重要条件.也有一些对于填充顺序进行改良的算法,如下一个是基于样例稀疏性的。

本算法中data term 是利用轮廓的法线方向和梯度垂直向量的点积作为其数据项,[1]的算法则使用了patch块的稀疏性作为度量,提出优先填充稀疏性更高的patch块,从而改善一些情况下填充的效果。

Result

其算法实际运行图例如下面gif所示,对于需要填充的建筑物,沿着其轮廓线寻找优先级高的点,依次不断填充,最终获得了不错的一个效果。

对于图像中有较多可以copy的patch块的场景,修复效果都还不错,但是无法保证最终整体填充效果,容易出现到最后怎么找patch块都会出现不连续的问题,所以后来大牛们又提出了很多基于全局优化的inpainting/Image completion算法。

图像修复:Object Removal by Exemplar-Based Inpainting 学习笔记相关推荐

  1. matlab图片修复原理,图像修复 Region filling and object removal by exemplar-based image inpainting matlab实现...

    介绍 本代码是对Region filling and object removal by exemplar-based image inpainting的MATLAB实现,用来对图像进行区域填充.物体 ...

  2. matlab偏微分图像修复,图像修复 Region filling and object removal by exemplar-based image inpainting matlab实现...

    介绍 本代码是对Region filling and object removal by exemplar-based image inpainting的MATLAB实现,用来对图像进行区域填充.物体 ...

  3. 复现《Region Filling and Object Removal by Exemplar-Based Image Inpainting》

    论文内容 这篇论文是图片补全传统算法中的经典之作,主要的思路还是使用被扣图片剩余部分的冗余信息对孔洞进行填充.作者提出了一种确定区域填充顺序的方法,使得原有图片的结构信息得以更好的传播.论文的主要流程 ...

  4. 结合深度学习的图像修复怎么实现?

    作者:QZhang 链接:https://www.zhihu.com/question/56801298/answer/155891603 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非 ...

  5. 【图像修复】基于criminis算法实现图像修复附matlab代码

    1 内容介绍 该算法出自Criminisi的论文 Region Filling and Object Removal by Exemplar-Based Image Inpainting 该算法只要思 ...

  6. 图像修复系列-图像修复概述

    图像修复的最初是为了去除遮挡或对破损的图像就行修复,但是,修复图像是一个ill-pose(病态)问题,所示,图像修复需要一些前提假设(也就是之前提到过的正则约束),通过在一定约束条件下,建立最优化准则 ...

  7. 图像修复序列——混合稀疏表示(Hybrid Sparse Representations)模型

    1. 参考文献 2. Hybrid Sparse Representations模型 % demo_Hybrid_Sparse_Representation.m % Author: HSW % Dat ...

  8. opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  9. Object Removal by Exemplar-Based Inpainting 翻译

    Object Removal by Exemplar-Based Inpainting 通过基于样本块的图像修复来实现遮挡物移除 Abstract: A new algorithm is propos ...

最新文章

  1. 项目松弛时期 团队如何休养生息?
  2. 改变HTML中超链接的显示样式
  3. yum安装本地rpm包_在 Fedora 中安装替代版本的 RPM 包
  4. 【原创】请避免GO语言中的携程空跑(CPU突然激增)
  5. springboot下整合各种配置文件
  6. django runserver开启服务(开启外网访问与ipv6访问)
  7. 【★★★★★】提高PHP代码质量的36个技巧
  8. 使用Sakura查看字符十六进制编码(附带ASCII编码表)
  9. 明明是数字“1000”转换成整形时却报错---BOM 非法字符 /65279(FEFF) big endian(FEFF)和little endian(FFFE) 模式
  10. [JLOI 2016]成绩比较
  11. 7-6 逆序的三位数 (10 分)
  12. 如何不用密钥破解tableau
  13. 转载收集的云计算网络技术
  14. 如何将cad导成jpg图片格式?
  15. Adobe Photoshop 2021 22.4.3 中英文+Neural Filters 含神经滤镜 下载
  16. composer global require “fxp/composer-asset-plugin:~1.3“ 错误 1407742e
  17. 如何基于已有的 REST API 实现 GraphQL API
  18. linux端防火墙指定端口的开和关
  19. java开发入门实验报告_Java实验二实验报告 20135108 李泽源
  20. JVM性能调优5_编写高效优雅Java程序__享学课堂

热门文章

  1. [多校联考-初级]徒步旅行
  2. Redis基础笔记(下)
  3. android studio查看源码
  4. 桌面一直出现计算机符号,电脑桌面图标有箭头怎么办 电脑桌面图片箭头去掉方法【图文】...
  5. 星速配资:新能源获QFII机构青睐 隆基股份成第一重仓股
  6. 运营笔记:SEO快排那些事儿!
  7. perp系列之一:关于perp
  8. 【codeforces 718E】E. Matvey's Birthday
  9. python和c语言哪个效率高_Python运行效率优于C语言的功能简介
  10. js ... es6中三个点是什么意思 真名叫扩展运算符