视频背景替换技术是指从视频序列中提取前景信息并将其融合到新背景中的过程,在图像处理和视频编辑领域占有重要地位,具有较高的研究价值和较广的应用空间。视频背景替换技术的核心算法分为视频抠图和图像融合两个部分,然而早期方法存在严重的限制和缺陷,其主要表现为:早期抠图算法限制背景和约束特定拍摄环境进行交互式绿幕抠图,极大限制了拍摄背景、增加了制作成本、锐减了抠图速度;早期图像融合算法对于前景信息丢失严重且缺少数据化评价标准,直接导致融合图像失真,人物颜色虚假。因此,如何减少视频抠图成本、改善视频抠图质量、提高图像融合效果是本课题的主要研究方向。
本文通过对现有图像分割和图像融合技术进行研究改进,提出并实现了改进Deeplabv3+算法和改进PoissonEditing算法,分别用于解决现有的视频抠图和图像融合问题,并联合视频风格迁移算法在终端设计实现了视频人物背景替换系统。


基于改进Deeplabv3+的视频人像背景替换系统(源码&教程)_哔哩哔哩_bilibili

在 Deeplabv2 提出可以调整感受视野和特征响应的工具空洞卷积后,为了解决多尺度的图像分割问题,谷歌提出了 Deeplabv3 网络[3]。该网络主要设计了空洞卷积并行架构操作,相比较之前的其他分割网络效果显著,并且在 voc2012 获得极佳的效果,为了解决图像分割网络存在的连续池化与下采样操作带来的像素点定位困难和多尺度目标等问题,Deeplabv3 提出了空洞卷积在网络层的有效运用和对 ASPP 模块的改进等。
a) 深层次的空洞卷积

b) 改进 ASPP

如上图Deeplabv3 重新改进了 Deeplabv2 中提出的 ASPP 空间金字塔池,其中在特征图的顶端采用了四个具有不同动态速率的平行空洞卷积。ASPP 空间金字塔池对不同尺度的特征进行重新采样以准确有效地对任意尺度的区域进行分类是有效的。与 Deeplabv2 不同,Deeplabv3 在 ASPP 中包括批量标准化。不同采样率的 ASPP 设计有效的捕捉了更多的采样信息和多核尺度特征,然而采样率和滤波器权重是反比关系,更多的采样率不可避免的导致了权重数量下降。如图所示,当处于极端情况时,若应用 3x3 卷积映射 65x65 特征将会导致捕捉特征失效,同时 3x3 卷积实际生效的只有中心滤波权重从而退化为 1x1卷积工作。
参考该博客提出的改进方法,首先由编码器与解码器并联,通过将 Deeplabv3 作为编码器,由 DCNN 生成多维度特征,遵从 ASPP 规则从而增加感受视野,并通过对输出特征反卷积操作。然后解码器与 Canny 边缘检测串联,利用边缘校正通道算法对深度学习模型分割的人体图像进行后处理。

参考该博客提出的改进 Deeplabv3+算法原理,编码层前端采用空洞卷积获取浅层低级特征,传输到解码器前端;编码层后端采用 vgg-16[7]获取深层高级特征信息,并且将 output_stride 为 16 的特征矩阵传输到解码器。解码器接收到高级特征信息,经过双线性上采样得到 output_stride 为 4 的256 通道特征 A;同时为了占比重相同,本文采用 1x1 卷积降通道,将浅层分辨率特征通道降低到 256,从而增强模型学习能力。随后解码器将特征 A 与特征 B做网络层连接(concat),再经过一个 3x3 的特征卷积细化。最后,在解码器后端经过再双线性 4 倍采样得到深度学习分割预测结果。为了方便后端 Canny 算法产生精准边缘,本文将接收到原图与深度学习分
割经过标签映射得到前景图,前景图计算由公式得到:

本节使用遮罩演示当前分割模型存。如下图,在前景图边缘处错误的保留了部分背景,由二值图边缘和前景图边缘融合得到的边缘图可以有效计算出人物分割边缘线蓝色)、前景分割边缘线(红色)和错误背景区域(绿色遮罩)。如何有效的去除遮罩区域将成为提高人体前景分割重叠率的关键。

为了有效去除人体分割中包含的错误背景,本文提出沿边缘线采用边缘矫正通道处理的方法,假设以像素点分布如图,计算图中人物分割边缘线(蓝色)与前景分割边缘线(红色)所围成的错误背景区域,计算公式如下:

在错误背景区域内边缘矫正通道的数值将被置零,其分布如图 :

参考博客《基于改进Deeplabv3+的视频人像背景替换系统(源码&教程)》
[1]陈淑環,韦玉科,徐乐,等.基于深度学习的图像风格迁移研究综述[J].计算机应用研究.2019,(8).DOI:10.19734/j.issn.1001-3695.2018.05.0270.
[2]李郑冬.数字图像处理技术发展探究[J].信息记录材料.2019,(2).
[3]胡越,罗东阳,花奎,等.关于深度学习的综述与讨论[J].智能系统学报.2019,(1).DOI:10.11992/tis.201808019.
[4]安文波.基于标准割(Normalized cut)算法图像分割方法[J].山东化工.2018,(15).
[5]杨红亚,赵景秀,徐冠华,等.彩色图像分割方法综述[J].软件导刊.2018,(4).DOI:10.11907/rjdk.172535.
[6]肖朝霞,陈胜.图像语义分割问题研究综述[J].软件导刊.2018,(8).DOI:10.11907/rjdk.173172.
[7]刘克平,李西卫,隋吉雷,等.基于改进Canny算法的工件边缘检测方法[J].广西大学学报(自然科学版).2017,(6).DOI:10.13624/j.cnki.issn.1001-7445.2017.2022.
[8]姚桂林,姚鸿勋.基于仿射方法的图像抠图算法综述[J].计算机辅助设计与图形学学报.2016,(4).DOI:10.3969/j.issn.1003-9775.2016.04.019.
[9]李彦冬,郝宗波,雷航.卷积神经网络研究综述[J].计算机应用.2016,(9).DOI:10.11772/j.issn.1001-9081.2016.09.2508.
[10]李彦.Contourlet变换在图像去噪及融合算法中的应用研究[J].西安文理学院学报(自然科学版).2016,(2).DOI:10.3969/j.issn.1008-5564.2016.02.010.
在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc