阅读笔记(BMSB 2018)Video Stitching Based on Optical Flow
参考文献
Xie C, Zhang X, Yang H, et al. Video Stitching Based on Optical Flow[C]//2018 IEEE International Symposium on Broadband Multimedia Systems and Broadcasting (BMSB). IEEE, 2018: 1-5.
摘要
视频拼接在计算机视觉中仍然是一个具有挑战性的问题,特别是对于移动物体周围广泛存在的伪像,包括视差,鬼影等。传统方法通常依赖于单个投影模型,这可能导致重叠区域中移动物体的不准确对应。 在本文中,我们利用重叠区域中的光流场,提供像素密集投影,从而可以大大减少伪影。 然而,由于非重叠区域的投影是根据重叠区域的投影计算的,因此我们建议自动选择左框架或右框架作为参考,以避免当物体在重叠区域和非重叠区域之间的边界上移动时的不一致变换。 实验结果证明了我们的方法优于移动物体周围的最先进的方法。
简介
视频拼接是将包括重叠区域在内的多个视频合并为全景视频的过程[1]。视频拼接的神圣目标是获取尽可能自然的大视图视频。由于在安全监控,虚拟现实和医疗问题分析中的广泛应用,视频拼接已成为近年来的热门话题。
在过去几年中,图像拼接已经成为一个相对成熟的领域。有许多方法可以消除视差[2] [3],削弱曝光差异并减少重影[4]。但与图像拼接相比,视频拼接的工作到目前为止非常有限。马里乌斯等人 [5]提出了一种从阵列摄像机生成实时全景视频的系统。有些方法对视频序列中的所有帧使用一个公共对齐[6]。虽然它可以保持全景视频稳定并节省大量时间,但通常会导致无法消除重影。这种缺点通过APAP方法[2]得到缓解,该方法提出了一种移动直接线性变换来弱化或微调投影扭曲以减少重影。
大多数先前的视频拼接方法在合成阶段[6] [7]中使用缝合切割,当移动物体穿过接缝时,这会导致重影效应。为了克服这个问题,许多方法每帧都会改变接缝的位置,以避免尽可能多地移动通过接缝的物体。此外,提出了一种快速稳定的焊缝选择算法[8],以减少由连续视频帧之间的显着缝隙移动引起的伪影。在[9]中已经提出了在重叠的空间时间体积上使用3D图形切割的缝合缝。如图1所示,即使这些方法做出了一些贡献,它们仍然无法消除严重的鬼影,特别是在移动物体周围。
最终全景视频具有鬼影的原因可以分为两个方面:
- 1)左右帧之间的单个无变形投影模型是不够的。
- 一方面,传统方法总是使用单变换单应法将一帧映射到另一帧。左右帧之间的像素无法获得非常准确的对应关系。
- 另一方面,许多方法对视频序列中的所有帧使用不变的变换单应性,而不考虑视频内容的变化。
- 2)切缝对移动物体有巨大影响。
- 当移动物体穿过接缝时,它们的结构将很容易破裂,或者移动物体周围会出现鬼影。为了解决这些问题,本文提出了一种基于光流的视频拼接方法。光流[10]可以估计两帧之间的位移场。它是2D矢量场,其中每个矢量是位移矢量,表示从第一帧到第二帧的点的移动。
- 为了克服单个投射模型导致相应不准确的缺点,使用光学流场在左右帧之间的重叠区域中实现像素密集投影。换句话说,重叠区域中的每个像素都拥有其典型的投影模型。因此,可以在所提出的方法中获得更准确的对准。此外,在合成阶段,仅需要对相应的像素进行加权以获得最终的全景帧。也就是说,在所提出的方法中不需要缝合切割。我们不需要考虑由连续视频帧之间的戏剧性接缝移位引起的伪影。总而言之,移动物体可以更好地匹配。
本文的其余部分安排如下。所提出的算法在第2节中给出。第3节显示了我们为检验所提出的方法而进行的实验。最后,第4节给出了结论。
算法流程:
实验结果:
由于没有公开的视频拼接基准数据,我们在我们捕获的两组视频上评估所提出的方法。视频数据集由两个具有不同视图的固定摄像机捕获,这些摄像机是同步的。为了证明我们方法的稳健性,我们选择两个不同的场景来涵盖一系列具有挑战性的案例:室内场景和室外场景。室外场景总是宽阔明亮,但室内场景相对狭窄,黑暗。三组视频均由相同类型的相机拍摄,并且在30fps时为720p(1280×720)。由于参考帧可以交替更改,因此全景图有两个视图。我们将具有右视图的帧映射到左视图[14]。在我们的实验中使用了密集的光流场,这是通过重复使用Liuce的代码来计算的。比较方法包括具有固定接缝的OpenCV中的Autostitch基线[14],商业软件VideoStitch Studio [15]和每帧APAP [2]。在我们的实验中,我们使用论文作者提供的代码来获得比较结果。
对于主观性能比较,图4,图5和图6示出了几个对象在重叠区域中移动并且背景保持静止的帧。在图4中,AutoStitch在汽车后部有严重的重影。视差出现在VideoStitch Studio和APAP方法中。在提出的方法中,运动物体的边界非常清楚。在图5中,女孩的腿在AutoStitch方法中被破坏,VideoStitch Studio导致明显的鬼影。在APAP方法中,女孩的腿周围也有很多鬼影。在图6中,女孩的头部在AutoStitch方法中扭曲,VideoStitch Studio中的裙子和鞋子周围有明显的鬼影。在APAP的女孩身上也可以找到鬼影。
很明显,大多数视差和鬼影都在移动物体周围,因为移动物体正在经过缝隙切割或单个投射模型无法非常精确地匹配像素。但是,我们的方法没有这些工件。移动物体的边界相对清晰,不存在视差,这些视差受益于重叠区域之间的精确对应。
结论:
在本文中,我们提出了一种基于光流的新型视频拼接方法,可以进行像素投影。 我们的方法可以使像素的对应性比传统方法更准确。 实验结果表明,我们的方法比最先进的视频实现了更好的全景视频。 我们的算法进一步减少了移动物体周围的重影和视差。 通过我们的方法获得的全景视频也非常自然。将来,我们想加快算法速度。
相关文章:
阅读笔记(BMSB 2018)Video Stitching Based on Optical Flow
参考文献 Xie C, Zhang X, Yang H, et al. Video Stitching Based on Optical Flow[C]//2018 IEEE International Symposium on Broadband Multimedia Systems and Broadcasting (BMSB). IEEE, 2018: 1-5. 摘要 视频拼接在计算机视觉中仍然是一个具有挑战性的问题࿰…...
Ubuntu学习笔记-Ubuntu搭建禅道开源版及基本使用
文章目录 概述一、Ubuntu中安装1.1 复制下载安装包路径1.2 将安装包解压到ubuntu中1.3 启动服务1.4 设置开机自启动 二、禅道服务基本操作2.1 启动,停止,重启,查看服务状态2.2 开放端口2.3 访问和登录禅道 卜相机关 卜三命、相万生࿰…...
《苍穹外卖》知识梳理6-缓存商品,购物车功能
苍穹外卖实操笔记六—缓存商品,购物车功能 一.缓存菜品 可以使用redis进行缓存;另外,在实现缓存套餐时可以使用spring cache提高开发效率; 通过缓存数据,降低访问数据库的次数; 使用的缓存逻辑&#…...
[NSSCTF]-Web:[SWPUCTF 2021 新生赛]easy_sql解析
查看网页 有提示,参数是wllm,并且要我们输入点东西 所以,我们尝试以get方式传入 有回显,但似乎没啥用 从上图看应该是字符型漏洞,单引号字符注入 先查看字段数 /?wllm2order by 3-- 没回显 报错了,说明…...
vue3 codemirror yaml文件编辑器插件
需求:前端编写yaml配置文件 ,检查yaml语法 提供语法高亮 。 默认内容从后端接口获取 显示在前端 , 前端在codemirror 插件中修改文件内容 ,并提交修改 后端将提交的内容写入服务器配置文件中 。 codemirror 通过ref 后期编辑器…...
力扣经典题:环形链表的检测与返回
1.值得背的题 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode *detectCycle(struct ListNode *head) {struct ListNode*fasthead;struct ListNode*slowhead;while(fast!NULL&&fast->…...
【web | CTF】BUUCTF [BJDCTF2020]Easy MD5
天命:好像也挺实用的题目,也是比较经典吧 天命:把php的MD5漏洞都玩了一遍 第一关:MD5绕过 先声明一下:这题的MD5是php,不是mysql的MD5,把我搞迷糊了 一进来题目啥也没有,那么就要看…...
spring boot Mybatis Plus分页
文章目录 Mybatis Plus自带分页和PageHelper有什么区别?Mybatis Plus整合PageHelper分页 springboot自定义拦截器获取分页参数spring boot下配置mybatis-plus分页插件单表分页查询自定义sql分页查询PageHelper 参考 Mybatis Plus自带分页和PageHelper有什么区别&…...
elementui 中 el-date-picker 控制选择当前年之前或者之后的年份
文章目录 需求分析 需求 对 el-date-picker控件做出判断控制 分析 给 el-date-picker 组件添加 picker-options 属性,并绑定对应数据 pickerOptions html <el-form-item label"雨量年份:" prop"date"><el-date-picker …...
GlusterFS:开源分布式文件系统的深度解析与应用场景实践
引言 在当今大数据时代背景下,企业对存储系统的容量、性能和可靠性提出了前所未有的挑战。GlusterFS作为一款开源的、高度可扩展的分布式文件系统,以其独特的无中心元数据设计和灵活的卷管理机制,在众多场景中脱颖而出,为解决大规…...
第6个-滚动动画
Day 6 - Scroll Animation 1. 演示效果 2. 分析思路 布局 所有的内容进行水平垂直居中,可以使用**margin:0 auto;,也可以使用flex**布局: body {background-color: #efedd6;display: flex;flex-direction: column;justify-content: center…...
配置oracle连接管理器(cman)
Oracle Connection Manager是一个软件组件,可以在oracle客户端上指定安装这个组件,Oracle连接管理器代理发送给数据库服务器的请求,在连接管理器中,我们可以通过配置各种规则来控制会话访问。 简而言之,不同于专用连接…...
[N-142]基于springboot,vue停车场管理系统
开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本项目分为普通用户和管理员…...
DAY53:动态规划(买股票的最佳时机)
Leetcode: 121 买卖股票的最佳时机 代码随想录 1、确定下标和含义 dp[i][0]表示当天持有股票所得的最多现金 do[i][1]表示当天不持有股票的最多现金 2、递推公式 (1)如果第i天持有股票即dp[i][0], 那么可以由两个状态推出来 第i-1天就…...
快速实现用户认证:使用Python和Flask配合PyJWT生成与解密Token的教程及示例代码
生成token 与解密 token 和 拦截器 #学习交流 访问 # https://v.iiar.cnimport jwt import datetime from models import XUser from flask import request, jsonify from functools import wrapsSECRET_KEY XPay# 创建token def generate_token(user_id):try:payload {exp:…...
外汇110:外汇做空是什么意思?如何运作?一文读懂
外汇市场允许卖空,就像众多金融市场一样。但什么是卖空呢?如何外汇做空?在本文中,我们将讨论如何做空货币。什么是外汇做空? 外汇做空(Short Selling)是外汇市场上的一种投资方式。它指的是投资…...
【记录】个人博客或笔记中的数学符号设定
note 这里记录个人博客中常用的数学符号数学格式和对应含义 文章目录 note数与数组索引集合线性代数微积分概率和信息论数据与概率分布函数深度学习中的常用数学表达方式 数与数组 α 标量 α 向量 A 矩阵 A 张量 I n n 行 n 列单位矩阵 v w 单词 w 的分布式向量表示 …...
Redis Sentinel工作原理
Redis Sentinel是Redis的高可用性解决方案。它主要用来监控Redis master和slave服务器的运行状态,并在master宕机时自动进行故障转移,即从slave节点中选举出新的master节点,并让其余的slave节点指向新的master节点。 Redis Sentinel工作原理…...
GEE入门篇|遥感专业术语:理论介绍
本章的目的是介绍遥感图像的一些主要特征,以及如何在Earth Engine中检查它们。我们将讨论空间分辨率、时间分辨率和光谱分辨率,以及如何访问重要的图像元数据。将了解到来自不同卫星平台上的几个传感器的图像数据。在本章的学习完成后,您将能…...
react中如何做到中断diff过程和恢复
workLoop是 实现时间切片 和 可中断渲染的核心,简要说明如下: // 并发任务的入口function workLoopConcurrent() {// Perform work until Scheduler asks us to yield// 有任务 & 是否需要中断while (workInProgress ! null && !shouldYiel…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
