Multi-scale Image Harmonization

文章目录

  • Multi-scale Image Harmonization
    • Overview
    • Smooth Histogram Matching
    • Structure and Noise Matching
    • Pyramid compositing

在图像合成、拼接、纹理合成等图像处理应用场景中,不仅仅是需要实现背景图像内容间的无缝融合,还需要保证合成图像真实性,前面提到的 泊松融合仅考虑到了图像在融合区域梯度场的约束,能很好的融合背景图像和前景图像的图像内容,但由于前景图像与背景图像本身还存在图像风格、纹理、噪声等方面的差异,得到的融合图像会缺乏真实感,如下图中b所示,在融合区域缺乏背景图像本身的纹理信息,人工合成的痕迹明显,基于此,这篇问题提出了一个多尺度图像融合算法,使得融合后的图像与背景图像在图像风格、纹理、噪声等方面也保持一致,已增加融合结果的真实性。

Overview

记想要协调图像风格的源图像为IsI^{s}Is,需要将其融合进去的目标图像为ItI^{t}It,原图像即为前景目标图像,目标图像即为背景图像,由于光线、噪声、后期图像处理等诸多影响图像视觉感知的因素的差异,即使通过无缝的alpha融合或者泊松融合,都难以达到合成后的图像与目标图像在图像风格上的一致,受1995年发表于siggraph的论文《Pyramid-Based Texture Analysis/Synthesis》的影响,试图通过建立图像金字塔来进一步对齐源图像与目标图像的图像风格。
分别建立源图像、目标图像、均匀噪声图像的金字塔,然后通过匹配源图像和噪声图像与目标图像间金字塔对应层级间的直方图,这一步的目的就是协调源图像与目标图像风格,最后从直方图匹配过后的金字塔子带中重建完成图像风格协调的源图像,并用Alpha Matting或者泊松融合,完成对源图像和目标图像的融合。

本文协调算法框架

首先是图像金字塔的分解,本文采用Harr小波分解来构造源图像、目标图像、噪声图像的金字塔,记对应的Harr滤波器为f1、f2、f3、f4f_{1}、f_{2}、f_{3}、f_{4}f1​、f2​、f3​、f4​,源图像、目标图像的子带系数为:
Bis=fi⋆ISBit=fi⋆It(1)\begin{aligned} B_{i}^{s} &=f_{i} \star I^{S} \\ B_{i}^{t} &=f_{i} \star I^{t} \end{aligned}\tag{1} Bis​Bit​​=fi​⋆IS=fi​⋆It​(1)
金字塔层数为nnn的话,每个金字塔共有3n+13n+13n+1幅子带图像,有3n3n3n层高频层,1层低频层,在《Pyramid-Based Texture Analysis/Synthesis》一文中已经重点讨论了金字塔内每层子带图像的统计信息与图像外观件的密切关系,因此参照此纹理合成的方法,通过将源图像金字塔子带图像与目标图像做直方图匹配来协调源图像与目标图像存在的风格差异,协调后源图像的子带系数做如下表示:
Bih=histmatch(Bis,Bit)(2)B^h_i = histmatch(B^s_i,B^t_i)\tag{2} Bih​=histmatch(Bis​,Bit​)(2)
上图所示的协调算法框架,输入图像不仅有源图像和目标图像,还有一个噪声图像也需要与目标图像做直方图匹配,这是因为目标图像与源图像之间可能还存在噪声、纹理等细节信息的差异,需要通过匹配噪声图像与目标图像间的直方图来进一步模拟目标图像的噪声、纹理信息,即协调后的子带图像为:
Tih=Bih+Nih(3)T^h_i=B^h_i + N^h_i\tag{3} Tih​=Bih​+Nih​(3)
其中NihN^h_iNih​为直方图匹配后的噪声子带,用于表示目标图像的噪声、纹理信息,最终有TihT^h_iTih​重建协调后的图像:
FIh=Th−c(4)\mathbf F I^h=T^h-c\tag{4} FIh=Th−c(4)
其中F\mathbf FF为构造金字塔使用到的Harr滤波器,ccc为边界约束

合成示意图

Smooth Histogram Matching

如上图所示,原始的直方图匹配容易造成Halo、对比度过度拉伸等问题,为了避免此问题对图像合成的影响,用增益控制的方式对直方图匹配算法进行优化,先用原始的直方图匹配的方式计算匹配后的子带图像BisB^s_iBis​,为确保使用增益进一步修正子带系数的大小而不是改变子带系数的正负,用直方图匹配后子带系数的绝对值计算增益系数:
gi(∣BiS∣)=log⁡(∣Bihist∣)−log⁡(∣BiS∣)(5)g_{i}\left(\left|B_{i}^{S}\right|\right)=\log \left(\left|B_{i}^{h i s t}\right|\right)-\log \left(\left|B_{i}^{S}\right|\right)\tag{5} gi​(∣∣​BiS​∣∣​)=log(∣∣​Bihist​∣∣​)−log(∣∣​BiS​∣∣​)(5)
当ggg大于0时,说明直方图匹配增强源图像的子带系数,当ggg小于0时,说明直方图匹配降低源图像的子带系数,基于此,将源图像的子带系数乘以此增益系数的指数次方来实现更平滑的直方图匹配。以上方式相对简单,但未免会带来梯度信息的符号反转,也未能保证增益在空间上的平滑性,因此将各子带内部分别计算增益系数的方式转换为用各尺度下局部领域内总的高频系数计算Activity Map:
Aks=N(σ)⋆∑i∈lev⁡(k)∣Bis∣Akt=N(σ)⋆∑i∈lev⁡(k)∣Bit∣(10)\begin{aligned} A_{k}^{s} &=N(\sigma) \star \sum_{i \in \operatorname{lev}(k)}\left|B_{i}^{s}\right| \\ A_{k}^{t} &=N(\sigma) \star \sum_{i \in \operatorname{lev}(k)}\left|B_{i}^{t}\right| \end{aligned}\tag{10} Aks​Akt​​=N(σ)⋆i∈lev(k)∑​∣Bis​∣=N(σ)⋆i∈lev(k)∑​∣∣​Bit​∣∣​​(10)
其中Aks、SktA^s_k、S^t_kAks​、Skt​分别表示被尺度为σ\sigmaσ的高斯核模糊后的Activity Map,这时再用式(6)计算增益系数,得到较为平滑的直方图匹配结果:
Bih=miG^(Aks)×BiS(11)B_{i}^{h}=m_{i} \hat{G}\left(A_{k}^{s}\right) \times B_{i}^{S}\tag{11} Bih​=mi​G^(Aks​)×BiS​(11)
其中mim_imi​为与金字塔尺度相关的尺度因子,与尺度数nnn相关,线性的从最小尺度到最大尺度由1至0.45递减。为进一步保证直方图匹配后的结果不出现伪影,再统计全部尺度下的Activity Map:
Aags=∑k=1nAks(12)A^s_{ag} = \sum_{k=1}^{n}A^s_k\tag{12} Aags​=k=1∑n​Aks​(12)
将AagsA^s_{ag}Aags​中前85%85\%85%较小的值置0,后5%5\%5%的较大值置1,位于85%95%85\%~95\%85% 95%之间的值线性缩放至0-1之间,并以此作为权重图对协调后的图像BhB^hBh和源图像进行加权融合,用于消除强边缘处可能存在的伪影,效果如下图所示:

Structure and Noise Matching

如果源图像与目标图像将的纹理形态、噪声形态、噪声强度、模糊程度、局部对比度等影响图像视觉外观的细节信息不匹配,合成的图像看上去依旧是不真实的,我将以上几种细节信息统称为图像的风格信息,为了更好的协调源图像与目标图像间的风格信息,如上图的算法框架所示,在源图像与目标图像的多尺度协调之外,还需要加入噪声图像与目标图像间的协调,用于模拟目标图像的风格信息,首先需要从目标图像中提取处图像的噪声信息:
Ω=Aagt<percentile (Aagt,β)(13)\Omega=A_{a g}^{t}<\text { percentile }\left(A_{a g}^{t}, \beta\right)\tag{13} Ω=Aagt​< percentile (Aagt​,β)(13)
其中AagtA^t_{ag}Aagt​同AagsA^s_{ag}Aags​的计算方式相同,β\betaβ为用于区分图像结构信息和噪声信息的超参数,记Ω\OmegaΩ为Low Activity Region,将目标图像Ω\OmegaΩ区域的高频信息当中所示目标图像的噪声信息,统计其在各个尺度下的直方图,用对噪声图像在对应子带上做直方图匹配,与式(8)相同,也需要计算噪声图像等价于与Ω\OmegaΩ区域做直方图匹配的增益G^n\hat G_nG^n​,最后分别得到源图像与目标图像的子带直方图匹配结果BihB^h_iBih​,噪声图像与目标图像的子带直方图匹配结果NihN^h_iNih​:
Bih=G^b(AiS)BiSNih=G^n(∣Nis∣)Nis(14)\begin{aligned} B_{i}^{h} &=\hat{G}_{b}\left(A_{i}^{S}\right) B_{i}^{S} \\ N_{i}^{h} &=\hat{G}_{n}\left(\left|N_{i}^{s}\right|\right) N_{i}^{s} \end{aligned}\tag{14} Bih​Nih​​=G^b​(AiS​)BiS​=G^n​(∣Nis​∣)Nis​​(14)
最后如式(3),最终的协调图像为协调后的源图像与协调后的噪声图像之和:
Tih=Bih+Nih(3)T^h_i=B^h_i + N^h_i\tag{3} Tih​=Bih​+Nih​(3)
其中NihN^h_iNih​表示图像的风格信息,BihB^h_iBih​表示图像的结构信息。最后需要注意的是以上协调过程往往需要迭代循环几次。

Pyramid compositing

在每一其他约束条件的情况下,由金字塔重建图像的过程可以做如下表示:
[f1f2⋮fn]Ih=[T1hT2h⋮Tnh]\left[\begin{array}{c} f_{1} \\ f_{2} \\ \vdots \\ f_{n} \end{array}\right] I^{h}=\left[\begin{array}{c} T_{1}^{h} \\ T_{2}^{h} \\ \vdots \\ T_{n}^{h} \end{array}\right] ⎣⎢⎢⎢⎡​f1​f2​⋮fn​​⎦⎥⎥⎥⎤​Ih=⎣⎢⎢⎢⎡​T1h​T2h​⋮Tnh​​⎦⎥⎥⎥⎤​
其他fff为重建金字塔的Harr滤波器,IhI^hIh为最终的合成图像,ThT^hTh为协调后的各子带图像,此时我们还需要将目标图像ItI^tIt与协调后的合成图像IhI^hIh进行无缝融合,常用的融合方式用Alpha Matting和泊松融合,绝大部分情况下我们的融合需求都是将用户给定的物体融合进进目标图像的指定区域,如下图所示:

图像融合应用场景示意图:红框内为源图像中要用于图像融合的区域,绿框内为目标图像中的目标区域

图像合成:Multi-scale Image Harmonization相关推荐

  1. 《MA‑CRNN: a multi‑scale attention CRNN for Chinese text line recognition in natural scenes》论文阅读

    参考博文: CRNN的一个变种,可以读一读,看看相对于CRNN来说有什么变化?以及为什么? 文章目录 make decision step1:读摘要 step2:读Introduction step3 ...

  2. 毕设日志——增加多尺度对应的不一样scale的RPN网络

    4.25 错误 4.27 修改anchor不同的RPN,即conv5-3和conv4-3融合 本来想运行一个epoch,结果运行成下面的没有指定epoch个数的: CUDA_VISIBLE_DEVIC ...

  3. SNIP-An Analysis of Scale Invariance in Object Detection

    论文名称 : An Analysis of Scale Invariance in Object Detection – SNIP 论文作者:Bharat Singh & Larry S.Da ...

  4. (二十八:2021.01.10)MICCAI 2019 追踪之论文纲要(中)

    讲在前面 这部分是PART III和PART IV. 论文目录 PART III Neuroimage Reconstruction and Synthesis(神经图像重建与合成) 概要 1.Iso ...

  5. 【AI视野·今日CV 计算机视觉论文速览 第152期】Fri, 9 Aug 2019

    AI视野·今日CS.CV 计算机视觉论文速览 Fri, 9 Aug 2019 Totally 31 papers ?上期速览✈更多精彩请移步主页 Interesting: ?***VOMonodept ...

  6. 【今日CV 计算机视觉论文速览 第148期】Mon, 29 Jul 2019

    今日CS.CV 计算机视觉论文速览 Mon, 29 Jul 2019 Totally 42 papers ?上期速览✈更多精彩请移步主页 Interesting: ?****TOM-Net学习透明物体 ...

  7. 【今日CV 计算机视觉论文速览 第129期】Wed, 12 Jun 2019

    今日CS.CV 计算机视觉论文速览 Wed, 12 Jun 2019 Totally 52 papers ?上期速览✈更多精彩请移步主页 Interesting: ?Shapes and Contex ...

  8. 图像分析用 OpenCV 与 Skimage,哪一个更好?

    作者 | 小白 来源 | 小白学视觉 这两种算法在它们可以检测到的和不能检测到的方面都有其起伏. OpenCV 是用 C++ 在后端进行编程的,并作为一个机器学习包,来分析 Python 中的图像模式 ...

  9. 从0梳理1场CV缺陷检测赛事!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:江保祥,厦门大学 一.布匹缺陷检测比赛分析 1. 赛题背景 去年的 ...

最新文章

  1. ios 贝塞尔曲线 颜色填充_PS的3D颜色深度映射到球体模拟天线
  2. window.location.reload() 刷新页面时,如何不弹出提示框
  3. mysql percona server_MySQL Study之--Percona Server版本
  4. Java实现仿百度文库文档在线阅读
  5. Kali Linux2018 上安装open-vm-tools实现虚拟机交互
  6. 深度学习-Tensorflow1.x之Softmax函数代码实现对比在Tensorflow1.x与 Numpy
  7. python defaultdict 类属性_Python collections.defaultdict模块用法详解
  8. “无法找到Internet Explorer”的解决方法
  9. java 静态成员 实例成员变量_java对象实例化时的顺序(静态成员变量、静态代码块、成员变量、方法块加载、构造函数加载)...
  10. 【vn.py】开发环境搭建
  11. 美丽汤的请求 - 小甜饼豆瓣爬虫
  12. bin文件夹和lib文件夹
  13. 104 自定义大头针
  14. TCP协议的RST标志位
  15. 第 16 章 string类和标准模板库
  16. golang常用加签验签 - 2.hmac
  17. 用html5制作一个2d沙发,沙发诞生记——一套沙发的制作工艺及流程
  18. MP2451使用注意事项
  19. 基于Keras实现鸢尾花分类
  20. 批处理bat文件连接SQL Server数据库并执行相关sql代码

热门文章

  1. 码云(Gitee)创建SSH KEY以及查看用户名密码
  2. 拍好人像的六个好招数
  3. 后端框架的学习----mybatis框架(7、使用注解开发)
  4. 微信小程序本地图片处理--按屏幕尺寸插入图片
  5. c++ 简易人员信息管理系统
  6. 新造车杀入15万,燃油车慌了?
  7. 阿里云服务器搭建视频
  8. python快速排名seo代码_seo评价机制图(python快速排名seo)
  9. 烤鱼界头牌半天妖发文致歉,背后暴露了哪些问题?
  10. 生活小妙方记录:治疗缠腰蛇