前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图像快速修复技术

图像快速修复技术

作者头像
天天P图攻城狮
修改于 2019-05-16 09:03:26
修改于 2019-05-16 09:03:26
3.4K0
举报
文章被收录于专栏:天天P图攻城狮天天P图攻城狮

1. 简介

图像修复(Image Inpainting)技术,又称为图像填充(Region Filling)或物体删除(Object Removal)技术,是一种通过背景填充、替换的方法,去除图像中指定区域的算法,最终目标是达到用户难以感知感知、效果自然的图像修复。

原始图片

指定删除区域(白色区域)

修复结果

2. 相关研究

目前经过调研,已知的部分图像修复算法及其效果如下

算法

原始图

效果图

纹理合成

半自动修复

搜索采样修复

深度学习

各算法优缺点分析

算法

代表算法

优缺点

纹理合成

Image Quilting

适合小区域修复大区域存在模糊问题

半自动修复

FMM InpaintOpenCV Inpaint

处理速度快,小区域效果很好适合老旧非数字图像修复大区域存在模糊问题

基于采样

Examplar Inpainting

适合大、小区域填充没有模糊问题适合简单背景的图像修复修复速度慢

深度学习

Generative inpainting

修复效果自然,并且可以进行人脸五官填充没有模糊问题需要大量数据集进行针对性训练不可解释性,难以调参运行速度慢,模型大

针对以上这些算法,结合实际移动端业务场景,本文选择基于采样的图像修复算法,并在此基础上进行优化。主要原因有如下几点

  • 纹理合成和半自动修复算法都存在图像模糊问题,不适合大区域图像修复。
  • 基于深度学习的算法,模型文件在20M左右,不适合打包到App端,显著增大安装包大小;其次,模型计算量较大,在PC端运行时(非GPU运行,Mac不开放GPU资源),正常iPhone X拍摄的图片模型算法需要处理约100s,移动端处理器难以支持;最后,模型使用了TensorFlow Lite不支持的OP运算,难以移植到客户端。

综上所述,最后本文采用Examplar Based Inpainting。

3. 算法原理

3.1 关键符号简介

原理比较复杂,需要先了解一些算法关键词语及数学符号,不感兴趣的同学可以跳过。

符号

含义

Ω

要修复的图像区域,Target region

δΩ

要修复的图像区域边界

Φ

已知的原始图像区域,Source region

p、Ψp

边界上要修复的某一点p,及其所确定的修复区域Ψp

q、Ψq

原始图片内潜在的匹配点q,及其所确定的匹配区域Ψq

通过边界上选取某一点,确定修复区域,在原始图像内寻找最匹配的采样区域,进行拷贝修复,之后更新图像边界。重复以上流程直到区域被修复完毕。

3.2 修复顺序

基于采样的修复算法,其核心思想是提出一种图像修复顺序的算法,主要是修复顺序会严重影响修复结果,传统基于Onion Peel,由外向内的修复顺序的容易导致图像边界模糊。

Criminisi等人提出了一种基于置信度(Confidence)和数据项(Data Term)的方法,计算边界点的修复优先级。

P(p) = C(p) * D(p)

其中P(p)表示一个point像素点的修复优先级,C(p)表示该点的Confidence,D(p)表示该点的Data Term。

C(p)的含义是,修复区域内有多少像素点是属于已修复图像区域。

D(p)的含义是,该点边界法线np方向与梯度方向的偏差。

图a:C(p),绿色区域表示高Confidence修复区域,红色区域表示低Confidence修复区域。

图b:D(p),绿色区域表示高Data Term修复区域。

可以看出,Confidence偏向优先修复“突出区域”,偏向于将Target region修成圆形,然后按照同心圆进行修复;而Data Term偏向优先修复“边界区域”,即优先修复高频、复杂纹理区域,保留边界信息,避免出现修复后的图像模糊。

3.3 最佳匹配区域

已经确定边界修复的优先级,如何在原始图像区域内寻找最佳匹配区域?Criminisi等人提出一种基于最小SSD(sum of squared differences)的方法。

通过计算修复区域Ψp和原始图像Ψq的像素值平方误差,在原始图像中寻找最小误差区域。像素误差可以用RGB的几何距离衡量,但原文中推荐使用CIE Lab Colour进行距离衡量。

3.4 算法流程

综上所述,该算法的主要流程是

  • 提取修复区域边界
  • 确定边界点的修复顺序
  • 寻找最佳匹配区域,进行修复
  • 更新边界,更新Confidence、Data Term
  • 重复步骤一,直到全部区域修复完成

4. 算法速度优化

测试环境:iMac 2017,4.2 GHz Intel Core i7,CPU环境单线程运行

测试图片:尺寸302x402

测试原图

mask

原始效果

时间

54秒

基于样本的图像修复算法,修复速度非常慢,无法满足移动端业务场景,App不能阻塞长达54秒。

Goyal等人在2010年对该算法提出了一些优化方向,参考该论文,并结合我们自身的业务场景(优先保证匹配速率,允许适当降低修复效果),尝试以下几种优化方案。

4.1 限制匹配区域半径

原文算法为全图寻找最佳匹配区域,现调整为仅在修复区域附近寻找最佳匹配区域。

附近区域半径

时间(秒)

效果

全图像检索

52.58

原始效果图,作为基准

200

47.81

150

37.04

4.2 调整匹配滑动窗口步长

原文算法在匹配时,不仅是全图检索,并且每次检索下一个待匹配区域时,仅在x、y方向移动一个像素(称为一个step),可以尝试一次移动多个像素。

步长Step

时间(秒)

效果

Step=1

52.95

基准,halfPatchWidth=4

Step=2

13.53

Step=3

6.26

4.3 大图裁剪

Criminisi和Goyal等人两篇论文的工作主要集中在300x400小尺寸图片的修复上,而在天天P图实际业务场景中,高端iOSAndroid设备拍摄的图片尺寸可达3000x4000,其图像尺寸是原始论文的100倍。原始算法直接在大分辨率图像上运行时,等待数分钟也无法得到处理结果,程序直接阻塞,因此需要进行裁剪、缩放等优化处理。

4.4 Patch区域误差度量

原始Criminisi提出的寻找最佳Patch区域,是基于L2欧氏距离(最小平方误差),而Qiang等人提出可以基于L1欧氏距离(最小绝对值误差)。采用L1欧氏距离,可以将寻找最佳匹配区域的计算量降低10%~20%,同时对效果的影响程度较小。

原图

mask

L2(16.3s)

L1(15.2s)

4.5 小结

本文通过借鉴Goyal等人的优化措施,并结合实际业务场景,提出自己的优化方案,提升修复速率。综合上述多种优化措施,现在对原始论文中的测试图片,其运行时间可以降到1s内(原始算法1/50时间),对业务场景中的超大尺寸图片(3000x4000)可以控制在2s左右,1000x2000可以控制在1s左右。

5. 算法效果优化

5.1 Patch融合

原始算法中,对于Patch的修补,每次仅对Patch内的未修补Target区域进行拷贝,而Patch内已知区域不做处理,而Jino等人提出了一种鲁棒性更高的算法,即对于Source区域内的点,也进行融合,融合之后可以解决部分拷贝边界线过于明显的Artifact(人工修补痕迹)问题。

原图

mask

非融合

融合

融合之后,可以发现修补区域的边界Artifact问题得到了一定程度减弱。

5.2 N Best Match

Criminisi原始算法存在一个问题,即每次仅选取一块最佳匹配区域进行复制,鲁棒性较低,容易寻找到局部次优解。一旦最佳匹配区域选择错误,则导致整个修复区域存在明显的人为修复痕迹。如下图所示,原始算法会导致左上角的黑色圆修复失败。

Alexander等人提出了一种算法,即每次选取多块最佳匹配区域(N Best Match),将多块最佳匹配区域进行融合,提升算法鲁棒性。

原图

mask

非融合

10次融合

使用N Best Match进行融合之后,复杂纹理复制错误的问题得到了一定程度上的解决。需要注意的是,如果N选择的过大,在进行融合的时候容易将纹理细节丢失,等效于N点加权均值平滑,所以N不能设置的过大。

6. 后期工作

目前还遗留的优化点有

  • 寻找最佳匹配区域可以采用多线程并行计算,提升计算速度
  • 针对小区域修复,主要是用户涂抹区域较狭窄、细长时,可采用FMM算法快速修复,提升计算速度

7. 参考文献

文献

引用次数

Criminisi A, Pérez P, Toyama K. Region filling and object removal by exemplar-based image inpainting[J]. IEEE Transactions on image processing, 2004, 13(9): 1200-1212.

2752

Telea A. An image inpainting technique based on the fast marching method[J]. Journal of graphics tools, 2004, 9(1): 23-34.

835

Wong A, Orchard J. A nonlocal-means approach to exemplar-based inpainting[C]//Image Processing, 2008. ICIP 2008. 15th IEEE International Conference on. IEEE, 2008: 2600-2603.

218

Cheng W H, Hsieh C W, Lin S K, et al. Robust algorithm for exemplar-based image inpainting[C]//Proceedings of International Conference on Computer Graphics, Imaging and Visualization. 2005: 64-69.

179

Liu Y, Caselles V. Exemplar-based image inpainting using multiscale graph cuts[J]. IEEE transactions on image processing, 2013, 22(5): 1699-1711.

107

Goyal P, Diwakar S. Fast and enhanced algorithm for exemplar based image inpainting[C]//Image and Video Technology (PSIVT), 2010 Fourth Pacific-Rim Symposium on. IEEE, 2010: 325-330.

75

Lee J, Lee D K, Park R H. Robust exemplar-based inpainting algorithm using region segmentation[J]. IEEE Transactions on Consumer Electronics, 2012, 58(2).

50

Chen Q, Zhang Y, Liu Y. Image inpainting with improved exemplar-based approach[M]//Multimedia Content Analysis and Mining. Springer, Berlin, Heidelberg, 2007: 242-251.

39

Patel P, Prajapati A, Mishra S. Review of different inpainting algorithms[J]. International Journal of Computer Applications, 2012, 59(18).

14

作者简介:daniel,天天P图 iOS 工程师


文章后记 天天P图是由腾讯公司开发的业内领先的图像处理,相机美拍的APP。欢迎扫码或搜索关注我们的微信公众号:“天天P图攻城狮”,那上面将陆续公开分享我们的技术实践,期待一起交流学习!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 天天P图攻城狮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TwoSampleMR:孟德尔随机化一站式分析
包如其名,TwoSampleMR主要是为两样本孟德尔随机化分析而准备的,在应用这个包以前,我们来看看它的核心函数及其功能:
生信菜鸟团
2023/08/23
6.7K0
TwoSampleMR:孟德尔随机化一站式分析
TwoSampleMR两样本孟德尔随机化:服务器拥堵502了怎么办
TwoSampleMR 这个包的代码很简单,以下这段是从MRbase数据库在线操作跑完复制下来的。总共四个函数,提取暴露,提取结局,整合数据,MR分析。直接跑的话很容易因为服务器拥堵而报错502。
用户11414625
2024/12/20
2320
TwoSampleMR两样本孟德尔随机化:服务器拥堵502了怎么办
TwoSampleMR包实战教程之去除连锁不平衡(LD)
在做MR研究时,我们有一步非常重要,那就是去除存在连锁不平衡的IV。连锁不平衡主要是使用两个参数r2和kb来衡量:
生信与临床
2022/08/21
5.2K1
“TwoSampleMR”包实战教程之简介与安装
在学习了充足的孟德尔随机化研究的理论知识后,我们接下来将进入实战教程阶段,首先要和大家讲解的就是TwoSampleMR这个包。这个R包拥有三大优势使之几乎可以满足所有的MR研究需求:
生信与临床
2022/08/21
6.1K0
“TwoSampleMR”包实战教程之简介与安装
如何获取完整的GWAS summary数据(1)------GWAS catalog数据库
在孟德尔随机化(Mendelian randomization,MR)研究中,对于暴露数据我们只需要那些显著的SNP信息,这样的信息在各种GWAS数据库中都是很容易获取的。但是,关于结局的数据,由于需要SNP和结局不相关,所以很多时候这种不显著的结果无法直接从文章或者数据库中查询到,这时候我们需要下载完整的GWAS summary数据了,这种数据一般包含上百万乃至上千万的SNP信息,所以数据量比较大(压缩后在200M左右),希望大家有所认识,有所准备。
生信与临床
2022/08/21
8.9K0
如何获取完整的GWAS summary数据(1)------GWAS catalog数据库
R语言实现孟德尔随机化研究
孟德尔随机化(Mendelian Randomization, MR)是近几年流行起来的用来进行因果推断的有效方法,它以遗传变异为工具变量来推导结局和暴露的因果关系,能有效避免传统流行病学研究的混杂偏
一粒沙
2020/11/16
11.5K0
R语言实现孟德尔随机化研究
R包“ieugwasr“教程---功能介绍与分析
在进行孟德尔随机化(Mendelian randomization, MR)研究时,我们最常使用的一个R包就是“TwoSampleMR”,这个包是由“MRCIEU”团队开发的。除此之外,该团队还开发了“PHESANT”这个使用非常广泛的R包以及“open GWAS”这个数据库。
生信与临床
2022/08/21
3.7K0
R包“ieugwasr“教程---功能介绍与分析
TwoSampleMR包实战教程之读取暴露文件
在上期内容中,我和大家简单介绍的TwoSampleMR这个R包的主要功能和安装方法,今天我将为大家讲解使用该包进行孟德尔随机化研究的第一步------读取暴露文件。
生信与临床
2022/08/21
7.5K0
TwoSampleMR包实战教程之读取暴露文件
TwoSampleMR:孟德尔分析(二)
至于F值和R^2值的计算,之前已经说过今天为了系统复现MR分析的所有步骤,再放一下下:
生信菜鸟团
2023/09/28
6.2K2
TwoSampleMR:孟德尔分析(二)
孟德尔分析:代谢疾病相关的GWAS数据库
继上周分享了血液中的蛋白组学相关网站后➡【孟德尔随机化】血液循环中的蛋白质组:常用网站一网打尽,今天我们继续扩充孟德尔随机化GWAS数据的来源吧~
生信菜鸟团
2023/09/09
2.8K0
孟德尔分析:代谢疾病相关的GWAS数据库
TwoSampleMR实战教程之提取IV在结局中的信息
在读取完暴露文件并去除掉存在连锁不平衡的SNP后,我们接下来要做的一件事就是提取IV在结局中的信息,完成这一步主要有两种方法:
生信与临床
2022/08/21
2.3K0
TwoSampleMR实战教程之提取IV在结局中的信息
Bioinfo01-孟德尔随机化
这是我之前关于孟德尔随机化相关课题的一个简单笔记。其中包括了关于孟德尔随机化的简单介绍,以及一些one-sample MR 的R 语言实战。
北野茶缸子
2022/05/19
3.9K0
Bioinfo01-孟德尔随机化
CAUSALdb:涵盖数千个GWAS研究和Fine-mapping结果的可视化数据库
现在 GWAS 研究越来越多。要查询以往的 GWAS 研究结果,可以使用 GWAS Catalog。GWAS Catalog 包含的信息非常多,不过有时可能满足不了需要。这里,推荐一个叫 CAUSALdb 的数据库。
实验盒
2021/09/22
1.3K0
CAUSALdb:涵盖数千个GWAS研究和Fine-mapping结果的可视化数据库
VannoPortal | SNP综合性查询数据库
在基因组的改变上。和基因突变比较类似的,同样也是核苷酸序列改变的一个类型就是单核苷酸多态 (SNP) 了。关于 SNP 的一些基本的介绍。我们在之前的 [[SNP是什么东西?]]当中已经做了简单的介绍。今天就给大家介绍一个综合性的 SNP 信息查询数据库。VannoPortal: http://www.mulinlab.org/vportal/index.html
医学数据库百科
2021/12/01
1.8K0
VannoPortal | SNP综合性查询数据库
R包”gwasrapidd”------快速获取GWAS Catalog数据库的信息
在往期内容中,米老鼠和大家简单介绍过做孟德尔随机化研究使用到的数据库,主要是OpenGWAS, GWAS Catalog 和Phenoscanner这三个。其中,Open GWAS库的数据可以使用“ieugwasr”包来快速获取,具体请参考往期内容。今天我和大家简单介绍一下可以快速获取GWAS Catalog数据库信息的“gwasrapidd”包,该包于近期加入CRAN集。
生信与临床
2022/08/21
11.6K0
R包”gwasrapidd”------快速获取GWAS Catalog数据库的信息
后GWAS时代的数据整合:RegulomeDB和HaploReg数据库
RegulomeDB和HaploReg数据库提供了将大量基因组学数据与非编码突变整合的思路。 1.背景 GWAS研究产生了大量的SNP,大部分在非编码基因组 这些SNP其实是Lead/Tag SNP,所以需要同时关注与这些SNP处于高LD(linkage disequilibrium)的其它SNP ENCODE产生的大量数据,可以用来注释这些SNP,为我们研究这些SNP的功能提供一些参考。 本篇介绍的两个数据库RegulomeDB和HaploReg的套路就是将ENCODE产生的注释数据与dbSNP和GWAS
企鹅号小编
2018/02/24
2.3K0
后GWAS时代的数据整合:RegulomeDB和HaploReg数据库
GEO数据库挖掘(2)--快速锁定目标数据
在上一期的推文 GEO数据库挖掘(1)--SCI文章速成 ,我们讲解了关于GEO数据库的背景知识,想必大家也了解了GEO是一个非常实用和权威的基因表达谱数据库。那么如何检索自己想要的数据呢?
用户6317549
2019/09/24
4.7K0
GEO数据库挖掘(2)--快速锁定目标数据
DisGeNet:疾病相关的基因与突变位点数据库
DisGeNet是一个专门收录人类疾病相关的基因与突变位点信息的数据库,对应的文章发表在Nucleic Acids Research上,链接如下
生信修炼手册
2019/12/20
6.6K0
DisGeNet:疾病相关的基因与突变位点数据库
Mendelian randomization(MR)
孟德尔随机化:根据孟德尔遗传规律,亲代的等位基因随机分配给子代,此过程相当于随机对照研究(RCT)的随机分组过程:不受混杂因素(社会地位、行为等)的影响;满足时间顺序合理性(遗传变异继承于父母,且保持不变)
用户10803254
2023/12/19
2K0
Cell | 健康与疾病中 53,026 名成人的血浆蛋白质组图谱 | 提供结果数据和源代码
生信菜鸟团
2025/01/16
4270
Cell | 健康与疾病中 53,026 名成人的血浆蛋白质组图谱 | 提供结果数据和源代码
推荐阅读
相关推荐
TwoSampleMR:孟德尔随机化一站式分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档