摘要
我们提出DoubleFusion,一个新的实时系统,其中结合立体动态重建使用数据驱动模板同时重建细致的几何,非刚性运动和内部人体形状从一个深度相机中。一个关键的贡献这个方法是双层的展示组成一个完整参数人体形状内部和一个外表面逐渐融合的外表面层。一个提前定义的节点图在身体表面参数的非刚体形变靠近身体,以及一个自由形式动态改变图
实时重建结果

更多《计算机视觉与图形学》知识,可关注下方公众号:

墨衍会员
·
AI 创作全网分发
墨衍智能分发
本文由作者通过墨衍一键同步至各平台
1分发平台
700+累计阅读
768平均单平台
已同步平台
优快云
微信公众号
微博
知乎
掘金
百家号
博客园
抖音
小红书
你的文章也可以这样分发
墨衍会员 ¥399起/年,写一次发全网
我也要 →
码龄10年
摘要
我们提出DoubleFusion,一个新的实时系统,其中结合立体动态重建使用数据驱动模板同时重建细致的几何,非刚性运动和内部人体形状从一个深度相机中。一个关键的贡献这个方法是双层的展示组成一个完整参数人体形状内部和一个外表面逐渐融合的外表面层。一个提前定义的节点图在身体表面参数的非刚体形变靠近身体,以及一个自由形式动态改变图
实时重建结果

更多《计算机视觉与图形学》知识,可关注下方公众号:

基于非参数化模型的三维人体重建-RGBD Fusion类
场景均为相机固定人体转动,也就是算法的输入为多视角下的人体RGBD图,核心在于配准算法。无任何先验,将重建问题看作是一个纯纯的配准问题,也可适用于一般物体。扫描多视角无需多说,而在单视角情况下,论文利用了kinect v1的马达采集了多张RGBD图,为的是覆盖更多的人体区域,因此也就多了下面单视角融合一步。单视角融合与分割1)对单个视角下的多帧点云进行刚性ICP配准,然后进行泊松重建得到单视角下的完整人体点云。
DoubleFusion实现的关键要点
ShapePoseOptimizer是一切的基石 也即一个好的NodeGraph,不重叠,好的NodeGraph可以生成好的KNN。实际中可以采取顶点数从1000到击200个点都可以用于表达人体的局部旋转场,比如下图是由998个点, NodeGraph构成HesssianReg,并且会决定最终系统矩阵的条件数 NodeGraph 节点图在腿部不是很...
【VINS-Fusion入门之二】基于优化的多传感器融合
简介 VINS-Fusion is an optimization-based multi-sensor state estimator, which achieves accurate self-localization for autonomous applications (drones, cars, and AR/VR). VINS-Fusion is an extension of VI...
深搜8:【SSL】1702.邻差数——2021-05-02第二更
深搜8:【SSL】1702.邻差数 题目: 题目描述 小Y上课摸鱼的时候无聊,就在纸上数数,从1写到999999999,显然这样他的纸是不够用的,而且一节课肯定也不够用,所以他决定只写下那些长度为 N 的,而且相邻两个数码的差值为 K 的非负整数。 特别提示的是,数字0本身算长度为1的数字,但是前导零要忽略,比如070算长度为2。 输入 两个数字N,K。 其中: 1<= N <= 15 0<= K <= 9 输出 以从小到大的顺序输出所有满足条件的数字在一行里,数字之间用一个空格隔开
RK3506开发板实战:5分钟搞定开源鸿蒙OpenHarmony5.1+星闪功能配置
本文提供了一份基于RK3506开发板快速配置开源鸿蒙OpenHarmony 5.1并启用星闪功能的实战指南。文章详细介绍了从开发环境搭建、系统镜像编译烧录,到星闪驱动加载验证、应用开发及性能调优的全流程,帮助开发者高效上手,将新一代短距无线通信技术应用于物联网项目。
从真题到策略:浙江工业大学计算机转专业机试全解析与备考指南
本文全面解析浙江工业大学计算机转专业机试的考试概况、典型真题和高频考点,提供详细的备考策略和面试准备建议。从机试题目类型到解题技巧,帮助考生高效备考,顺利通过这一竞争激烈的转专业关卡。
RGBD VIO-RGBD相机预积分紧耦合
今年抽空研究了一下VIO,惯导和视觉融合分松耦合和紧耦合,目前主要用紧耦合,主要原因就是因为准,紧耦合一共有二种方式,基于滤波和基于优化的方法,基于滤波的有msckf,基于优化的开源代码主要有okvis,orbslam2+imu(VIORB),vins。通过相关论文发现,其实就算法而言开山之作是OKVIS, Foster,orbslam2,等相关论文。其中Foster的论文适合学习,非常...
嵌入式接口通识知识之PCIe接口
PCIe x1接口是最常见的一种,插槽的长度是最短的,仅有25mm。PCIe x4接口有四个数据通道,提供比x1接口更高的带宽,插槽的长度为39mm,分为前后两组,一组22根针脚用于供电,剩下的42根针脚是数据针脚。插槽全长89mm,有164根针脚,分为前后两组,较短的插槽有22根针脚,主要用于供电,较长的插槽142根,主要用于数据传输,具有16通道所带来的高带宽。PCIe x8接口有八个数据通道,插槽全长56mm,有98跟针脚,分为前后两组,较短的22根针脚用于供电,剩下的76根针脚是数据针脚。
汇总|三维重建算法
三维重建是指获取真实物体的三维外观形貌,并建立可复用模型的一种技术。它是当下计算机视觉的一个研究热点,主要有三方面的用途: 1)相比于二维图像,可以获取更全面的几何信息; 2)在VR/AR中,建立真实和虚拟之间的纽带; 3)辅助机器人更好的感知世界。 KinectFusion 1、深度数据获取---去躁; 2、生成点云---计算摄像机坐标系的深度信息,进而变换到全局坐标系,计算法向...
在STM32上运行小波变换及神经网络算法——(一)单片机中小波算法编写
在单片机上实现离散小波变换的C代码,通过确定信号长度、小波分解层数、小波基名称后进行编写,并改写成了方便调用的结构体格式。
涨薪技术|Kubernetes(k8s)环境部署实战
这两者都是在/etc/docker/daemon.json里修改的,所以我们一起配置了就好了,首先执行下述命令编辑daemon.json:。安装完成后,可以使用以下命令来查看dashboard访问的端口号。网络插件CNI也是以容器的方式进行启动。安装完成后可以检查是否拉取了对应的容器。再使用以下命令进行安装:。打开后输入以下内容:。安装1.19.0版本。修改IP地址:。
图像三维重建专题第二期-DynamicFusion详讲
论文链接 摘要
ARM CoreLink 系列 5.1.1 -- CI-700 System Address Map 】
所有的CHI 命令都包含一个 Source ID 和 Target ID, 其中 Source ID 可以来自于 RN Node, Target ID 可以来自于HN node或者其他 SN node. 其中 Target ID 是通过 SAM解析传入的地址得到的。对于 CI-700中的所有 RN Node 中的 SAM 多会进行配置,因为RN Node 访问的是整个地址空间,不同的地址空间会有不同的属性(I/O, DRAM),所以会对RN SAM 配置多个不同属性的区域。
基于3D视觉的三维人体重建方法漫谈
为了让计算机更能理解人类行为,参与人类的生活,与人类交互,获取人体3D姿态和形状就显得尤为重要。目前3D人体重建的方法按照使用的方法不同可以归纳为2类:其一利用已有的人体数据模型,直接从单张RGB图片或视频中恢复人体三维模型(模型匹配);二是用深度传感器直接采集深度信息,再用拼接的方式构建完整模型(Fusion 方式)。
RK3399外设驱动之MIPI
RK3399外设驱动之MIPI 文章目录RK3399外设驱动之MIPIMIPI命令解析入口代码mipi显示配置实例rk3399mipi驱动rk mipi驱动注册过程rk32_mipi_dsi.c解析 内核版本 Linux4.4 平台 rk3399 作者 nineyole MIPI命令解析入口代码 MIPI的入口代码如下:kernel\drivers\video\rockchip\screen\lcd_mipi.c static int __init rk_mipi_screen_in
TI Sitara系列AM64x开发板(双核ARM Cortex-A53)软硬件规格书
创龙科技TL64x-EVM是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F多核处理器设计的高性能评估板,由核心板和评估底板组成。评估板接口资源丰富,引出5x Ethernet(两路支持TSN)、2x CAN-FD、多路UART、多路DI/DO、GPMC、PCIe、USB等接口,板载WIFI模块,支持4G/5G模块、NVME硬盘,可选配外壳直接应用于工业现场,方便用户快速进行产品方案评估与技术预研。
3D人体重建方法漫谈
1 概述 为了让计算机更能理解人类行为,参与人类的生活,与人类交互,获取人体3D姿态和形状就显得尤为重要。目前3D人体重建的方法按照使用的方法不同可以归纳为2类:其一利用已有的人体数据模型,直接从单张RGB图片中恢复人体三维模型(模型匹配);二是用深度传感器直接采集深度信息,再用拼接的方式构建完整模型(Fusion 方式)。下面回顾这两种方法的研究现状。 2 模型匹配的方法 直接从RGB图片或者视...
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
VINS-Fusion的IMU+GNSS+视觉导航调研报告
VINS-Fusion 是继 VINS-Mono 和 VINS-Mobile(单目视觉惯导 SLAM 方案)后,香港科技大学开源的双目视觉惯导 SLAM 方案,VINS-Fusion 是一种基于优化的多传感器状态估计器,可实现自主应用(无人机,汽车和 AR / VR)的精确自定位。VINS-Fusion 是 VINS-Mono 的扩展,支持多种视觉惯性传感器类型(单目摄像机+ IMU,双目摄像机+ IMU,甚至仅限双目摄像机)。开源项目组还展示了将 VINS 与 GPS 融合的模组示例。
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
三维重建:基于RGB-D相机的三维重建总览(静态&动态)
点击上方“3D视觉工坊”,选择“星标”干货第一时间送达来源丨三维匠心编辑丨3D视觉开发者社区✦导读✦本文作者对基于RGB-D相机的三维重建做了系统性的总结与分析,对各类算法都有简要的介绍,逻辑清晰,讲解全面细致,可以说是一篇干货满满的文章,不仅如此还配以生动的GIF图,让其趣味十足,非常推荐想要了解这方面知识的开发者阅读!✦目录0 “基于RGB-D相机的三维重建"和传统...
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
0.1秒极速重建!CVPR‘25开源Omni-Scene:以自车为中心的3D场景重建大模型
基于网络末端输出的多个视角的像素特征,可以预测每个视角的像素深度和对应的3D高斯球参数,其映射到3D空间后可实现细粒度的3D场景重建,用于为体积表示所重建的粗粒度场景补充外观细节。此外,通过与自动驾驶domain的2D图像生成方法MagicDrive结合(即:先生成多视角2D图像,再重建3D场景),本文还可以实现如图4所示的基于语义地图、3D目标框、文本的多模态可控的3D场景生成,初步探索了场景级的前馈式(feed-forward)3D生成的可能性,拓宽了本文方法的应用场景。以下是每个分支的具体方法介绍。
三维重建6:绑架问题/SensorFusion/IMU+CV-小尺度SLAM
前言 机器人的“绑架”问题是指在缺少它之前的位置信息情况下,去确定机器人的当前位姿,例如当机器人被安置在一个已经构建好地图的环境中,但是并不知道它在地图中的相对位置,或者在移动过程中,由于传感器的暂时性功能故障或相机的快速移动,都导致机器人先前的位置信息的丢失,就像人质的眼睛被蒙上黑布条,拉上集装箱被运送到了未知的地方,此时,人质就无法给自己定位了。 "绑架问...
基于RGB-D相机的三维重建总览 包括静态与动态三维重建
点击上方“3D视觉工坊”,选择“星标”干货第一时间送达编辑丨三维匠心近年来,随着AR,VR,虚拟试衣,自动驾驶等领域的兴起,三维重建技术得到了广泛的应用。三维匠自接触三维重建以来,一直为基...
梳理谷歌45篇入选CVPR论文,后附GAN主题演讲PPT下载!
来源:新智元整理:肖琴本文约6400字,建议阅读10+分钟。谷歌在今年的CVPR上表现强势,有超过200名谷歌员工将在大会上展示论文或被邀请演讲,45篇论文被接收。在计算...
图像三维重建专题第三期-单张图中得到3D手、脸、身体-Expressive Body Capture: 3D Hands, Face, and Body from a Single Image
论文链接 摘要 为利用及分析人体动作、交互、情绪,我们计算一个3D模型人体姿态、手势姿态、面目表情从一个单张图像。为完成这个,我们使用上千张3D扫描去训练一个新的,统一的,3D模型人体,SMPL-X,延伸SMPL使用手全部关节和一个面部表达。学习去回归参数SMPL-X直接的从图像是具有挑战的没有配对的图像和3D真值。最终,我们根据SMPLify方法,评估2D特征以及优化模型参数...
3D Human相关研究总结:人体、姿态估计、人体重建等
©PaperWeekly 原创 ·作者|张莹单位|腾讯本文简要介绍与 3D 数字人相关的研究,包括常用 3D 表示、常用 3D 人体模型、3D 人体姿态估计,带衣服 3D 人体重建,3D...
1010
2303
2526

被折叠的 条评论
为什么被折叠?



