Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【手撕算法】Criminisi图像修复算法
该算法主要思路是利用图片的已知区域对待修复区域进行填充。而填充的顺序是根据计算优先级确定的,填充的基本单位是自定义大小的像素块。
周旋
2022/08/07
1.1K0
【手撕算法】Criminisi图像修复算法
【手撕算法】图像修复算法整理
通过图像分割和显著性检测这两个系列,我认为在开始写算法之前先放一篇综述整理会更好一些。
周旋
2022/08/07
3.9K0
【手撕算法】图像修复算法整理
基于微软开源深度学习算法,用 Python 实现图像和视频修复
‍‍ 作者 | 李秋键 编辑 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 图像修复是计算机视觉领域的一个重要任务,在数字艺术品修复、公安刑侦面部修复等种种实际场景中被广泛应用。图像修复的核心挑战在于为缺失区域合成视觉逼真和语义合理的像素,要求合成的像素与原像素具有一致性。 传统的图像修复技术有基于结构和纹理两种方法。基于结构的图像修复算法具有代表性的是 Bertalmio 等提出的BSCB模型和 Shen 等提出的基于曲率扩散的修复模型 CDD。基于纹理的修复算法中具有代表性的有
AI科技大本营
2023/05/08
5900
基于微软开源深度学习算法,用 Python 实现图像和视频修复
CVPR2023 | 通过示例绘制:基于示例的图像编辑与扩散模型
由于社交媒体平台的进步,照片的创意编辑成为了普遍需求。基于人工智能的技术极大地降低了炫酷图像编辑的门槛,不再需要专业软件和耗时的手动操作。深度神经网络通过学习丰富的配对数据,可以产生令人印象深刻的结果,如图像修复、构图、上色和美化。然而,语义图像编辑仍然具有挑战性,它旨在操纵图像内容的高级语义并保持图像的真实性。目前,大规模语言图像模型能够以文本提示为指导实现图像操作,但是详细的文本描述常常不够准确,很难描述细粒度的物体外观。因此,需要开发一种更直观的方法来方便新手和非母语使用者进行精细的图像编辑。
用户1324186
2023/10/28
1K0
CVPR2023 | 通过示例绘制:基于示例的图像编辑与扩散模型
【手撕算法】FMM图像修复算法
opencv的inpaint函数就是采用了Telea的基于FMM的图像修复算法,本文基于opencv的inpaint函数,该函数源码位于(我的):
周旋
2022/08/07
1.3K0
【手撕算法】FMM图像修复算法
揭秘2021抖音和快手APP图像修复背后的核心技术,毫无ps痕迹
由于CNN、GAN、Transformer等模型在CV与NLP领域都实现了很好的跨界,最近非常火热的Prompt也开始在多模态领域中有所应用了,因此我们有必要借鉴一些CV领域中Paper的idea,以拓宽自己的视野,那么今天就给大家分享一下图像修复(Image Inpainting)领域中值得一读的六篇顶会论文,希望能给大家带来一些不一样的灵感。
对白
2022/04/01
7820
揭秘2021抖音和快手APP图像修复背后的核心技术,毫无ps痕迹
【每周CV论文】初学深度学习图像修复应该要读的文章
欢迎来到《每周CV论文》。在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的。
用户1508658
2020/08/20
4470
【每周CV论文】初学深度学习图像修复应该要读的文章
Github项目推荐 | Awesome-Image-Inpainting 图像补全相关资源大列表
[1] Bertalmio, M., Sapiro, G., Caselles, V., & Ballester, C. (2000, July). Image inpainting. In SIGGRAPH (pp. 417-424). [paper]
AI研习社
2019/07/04
2.9K0
Github项目推荐 | Awesome-Image-Inpainting 图像补全相关资源大列表
【手撕算法】PatchMatch图像修复算法
PatchMatch 算法就是一个找近似最近邻(Approximate Nearest neigbhor)的方法,要比其他ANN算法快上10倍+。
AI算法与图像处理
2021/04/21
2.9K0
【手撕算法】PatchMatch图像修复算法
AI靠什么超越人类修图师?万字长文看懂「美图云修」AI修图解决方案
机器之心报道 机器之心编辑部 近日,美图推出了全新的人工智能修图解决方案——美图云修,本文将从技术角度深入解读该方案,目前用户也可通过美图 AI 开放平台进行体验。 商业摄影的工作流程中非常重要的一项是「后期修图」,它工作量大、周期长,同时,培养一名「下笔如有神」的修图师往往需要付出高昂的人力和物力成本,即便是熟练的修图师也需要 1-3 个月的时间熟悉和适应不同影楼的修图风格和手法。除此之外,修图师的专业水平不同,审美差异、工作状态好坏等因素都会造成修图质量波动。 针对以上痛点,基于美图成立 12 年来在
机器之心
2023/03/29
9170
AI靠什么超越人类修图师?万字长文看懂「美图云修」AI修图解决方案
【计算机视觉——RCNN目标检测系列】一、选择性搜索详解
在刚刚过去的一个学期里,基本水逆了一整个学期,这学期基本没干什么活,就跟RCNN杠上了。首先是看论文,然后是网上找tensorflow写好的源码。但是,可惜的是网上给出的源码基本上是RCNN的主要作者Ross Girshick大神的代码,不同数据集换了下。因此为了理解源码,RCNN的处理过程,费劲去装了个ubuntu和win10的双系统并在Ubuntu上安装caffe,这就花费了近2周的时间。快速研究完RCNN的caffe源码之后,才转过来手写Fast RCNN的tensorflow版本的代码,这也花费了大量的时间,从踩坑到填坑再到踩坑。RCNN不是很好实现,SVM至今还没怎么看懂。接下来将会陆续更新RCNN->Fast RCNN->Faster RCNN系列的文章。在这篇文章中,主要讲解RCNN与Fast RCNN中获取图片中物体真实目标检测框的算法——选择性搜索算法。
AI那点小事
2020/04/15
1.3K0
【计算机视觉——RCNN目标检测系列】一、选择性搜索详解
ECCV 2020 Oral | 重新思考图像修复(Image Inpainting)
https://github.com/KumapowerLIU/Rethinking-Inpainting-MEDFE
Amusi
2020/07/17
2.3K0
ECCV 2020 Oral | 重新思考图像修复(Image Inpainting)
简单盘点 CVPR2020 的图像合成论文
本文将简单盘点在 CVPR2020 上的图像合成方面的论文,然后给出下载地址以及开源代码 github(如果有开源)。
kbsc13
2020/08/06
9270
快手质臻影音:视频智能修复及增强技术
  //   编者按:快手平台上视频类型繁多,且视频源的画面质量存在较大差异。“面对种类多且质量差异较大的视频,如何让用户获得更清晰的观看体验?”对于这一问题,快手音视频技术团队深入研究智能音视频修复及增强处理等相关技术,打造“快手质臻影音”,为用户提供极致视频体验。本次LiveVideoStackCon 2022上海站大会,我们邀请到了快手音视频高级算法工程师何刚老师,为我们分享了快手平台视频多样性和处理挑战;针对这些挑战提出的智能修复和增强算法;以及质臻影音的落地方案。 文/何刚 整理/LiveVide
LiveVideoStack
2022/10/11
1.5K0
快手质臻影音:视频智能修复及增强技术
图像修复简介
在实际应用中,图像经常被噪声腐蚀。这些噪音是镜头上的灰尘或水滴,或者是旧照片的刮擦,或者是人为绘制的图像,或者图像的一部分已损坏。文献中有两种主要的图像恢复方法:
小白学视觉
2021/01/06
9190
图像修复简介
林青霞旧照换新颜,AI图像修复术神助攻
网友们纷纷感叹好美好有气质,甚至还有人起哄说道:“赶紧把7080年代的时候的港台男女明星都修复一下,那时候颜值基本上个个都赏心悦目。”
新智元
2019/05/14
1.1K0
基于深度学习的图像匹配技术一览
来源丨https://mp.weixin.qq.com/s/8ilO_X_uEfMMQDNwzLSaUQ
3D视觉工坊
2021/01/13
2.8K0
基于深度学习的图像匹配技术一览
告别灰白和朦胧,老照片也能玩转3D,新SOTA效果惊艳
来自弗吉尼亚理工大学、台湾清华大学和 Facebook 的研究者提出了一种将单个 RGB-D 输入图像转换为 3D 照片的方法,利用多层表示合成新视图,且新视图包含原始视图中遮挡区域的 hallucinated 颜色和深度结构。
机器之心
2020/04/14
1K0
告别灰白和朦胧,老照片也能玩转3D,新SOTA效果惊艳
Human vs AI,人类和机器的学习究竟谁更胜一筹?
随着 AI 的不断研究和发展,各类 AI 算法在不同场景中的应用层出不穷,关于 AI 及其在日常任务中支持甚至取代人类工作的能力的讨论无处不在。例如,在自动驾驶领域,尽管在目前的条件下自动汽车还不能完全替代人类,但关于何时能够完全取代人类驾驶员的问题仍然受到了高度关注。从长远来看,使用 AI 替代人类并非不可能,但是这种替代是否能在所有工作场景中实现?
机器之心
2021/01/20
4240
89. 三维重建24-立体匹配20,端到端立体匹配深度学习网络之置信度计算的几种思路
在上一篇文章88. 三维重建23-立体匹配19,端到端立体匹配深度学习网络之怎样估计立体匹配结果的置信度?中,我介绍了在立体匹配网络中引入置信度的好处,以及几篇典型的方法。我们看到了传统算法中的多种置信度的计算判据,也看到了深度学习时代我们学习置信度图的典型方案,另外我们还看到基于置信度如何优化得到更好的视差图的方案,以及把置信度的预测,与视差的生成,整合到同一个网络流程中,以循环神经网络的形式迭代式的得到最佳结果。
HawkWang
2024/04/19
2560
89. 三维重建24-立体匹配20,端到端立体匹配深度学习网络之置信度计算的几种思路
推荐阅读
相关推荐
【手撕算法】Criminisi图像修复算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档