lsd:tracking

2024-08-24 09:32
文章标签 tracking lsd

本文主要是介绍lsd:tracking,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SE(3) Tracking new frame:
  新图像与模板图像在映射后的光度残差表达式:

rp(x,ξji)=Ii(x)Ij(ω(x,Di(x),ξji))

其中j是新图像帧,i是关键图像帧。forward additive的光度残差对迭代增量 Δξ 求导得:
JΔξ=I|ω(x,(T)πpTp.pTΔTTi.TΔTI.exp(Δξ^)Δξ0.

其中:
I|ω(x,T)=(ΔIuΔIv) :模板图像上像素坐标 x(u,v) 在T进行warp后得到的新图像 I 中像素坐标 x(u,v) 的梯度.
πpTp.=fx1z00fy1zfxxz2fyyz2 :针孔相机模型求导。
这里令 Ti=r11r21r310r12r22r320r13r23r330txtytz1 , p=Tip , 所以有:
pTΔTTi.TΔTI.exp(Δξ^)Δξ0.=x000x000xy000y000yz000z000z100010001=r1100r1200r1300tx000r1100r1200r1300tx000r1100r1200r1300txr2100r2200r2300ty000r2100r2200r2300ty000r2100r2200r2300tyr3100r3200r3300tz000r3100r3200r3300tz000r3100r3200r3300tz000000000100000000000010000000000001=000000000100000000000010000000000001000001010000001000100000010100000000

  注意上面的表达式中在迭代过程中, pTΔTTi. exp(Δξ^)Δξ0. 是始终不变的。但是 I|ω(x,T) πpTp. TΔTI. 每次迭代都是不一样的。由 Ti 的表达式可知:
x=r11x+r12y+r13z+txy=r21x+r22y+r23z+tyz=r31x+r32y+r33z+tz

所以:
pTΔTTi.TΔTI.= x000x000xy000y000yz000z000z100010001
exp(Δξ^)=(e[ω]×0Vv1)
其中:
[ω]×=0ω3ω2ω30ω1ω2ω10;v=v1v2v3
e[ω]×V=I+sin(||ω||)||ω||[ω]×+1cos(||ω||)||ω||2[ω]2×=I+1cos(||ω||)||ω||2[ω]×+||ω||sin(||ω||)||ω||3[ω]2×

上式在 ||ω||=0 附近,对 sin(||ω||) cos(||ω||) 进行一阶泰勒展开得:
e[ω]×VI+12[ω]×+16[ω]2×I+[ω]×+12[ω]2×

所以矩阵求导得:
这里写图片描述
其中 e1=[1,0,0]T , e2=[0,1,0]T , e1=[0,0,1]T .
JΔξ===(IuIv)Tfx1z00fy1zfxxz2fyyz2x000x000xy000y000yz000z000z10001000103×303×303×3I3×3[e1]×[e2]×[e2]×03×3(IuIv)fx1z00fy1zfxxz2fyyz21000100010zyz0xyx01z(IufxIvfy)T1001xzyzxyz(z+y2z)z+x2zxyzyx

  注意:forward additive的本质是将第一幅图像向第二幅图像warp后,比较warp得到的图像和第二幅图像之间的残差。在迭代过程中,warp后图像的像素坐标 (u,v) ,点坐标 (x,y,z) 需要每次都重新求。
  光度残差协方差的来源分别为:模板图像光度协方差、新图像光度协方差、逆深度估计引起的模板光度协方差。根据残差协方差传播的方程:
ΣIJΣDTJT ,\和函数: I(ω(x,DT(X),T))=I(π(Tπ1(x,1DT(x)))) ,所以光度对逆深度的求导为:
rp(T)DT=I|ω(x,Ti)πpTip.ppp.π1Z1DT(x).1xxDT(x).

其中:
这里写图片描述
因为 {ππ1:(u,v)=Kp:p=K1(u,v) ,所以有 x=z(ucx)fxy=z(ucy)fyz=z ,
因而:
这里写图片描述
该导数化简为:
rp(T)DT====I|ω(x,Ti)πpTip.ppp.π1Z1DT(x).1xxDT(x).(IuIv)fx1z00fy1zfxxz2fyyz2r11r21r31r12r22r32r13r23r33xyzDT(x)1DT(x)2(IuIv)Tfx1z00fy1zfxxz2fyyz2xtxytyztz1DT(x)1DT(x)z2(Iufx(txztzx)+Ivfy(tyztzy))

综上,光度残差的协方差计算公式是:
σ2rp(T)==σ2I+σ2J+(rp(T)DT)2σ2DT2σ2I+(rp(T)DT)2VDT

Sim(3) Tracking keyframe:
  当新选定一帧图像作为关键帧时,就会依据以前关键帧对新选择的关键帧上某些像素位置的深度给出估计。有了深度估计后,考虑tracking时会考虑两幅图像的光度匹配残差和新图像深度估计与warp后深度的深度残差。使用这两个残差去驱动求解、修正这两个关键帧之间的位姿变换。\
  首先看下残差代价函数:
E(T):=xΩDT[αx(T)σ2rp,x(T)r2p,x(T)+αx(T)σ2rd,x(T)r2d,x(T)]

其中:
rp,x(T)rd,x(T)αxσ2rp,x(T)σ2rd,x(T):=IT(x)II([x]1,2):=[x]3DI([x]1,2):=ρδ(r2p,x(T)σ2rp,x(T)+r2d,x(T)σ2rd,x(T)):=2σ2I+(rp,x(T)DT(x)DT(x).)2VDT(x):=(rd,x(T)DIDI([x]1,2).)2VI([x]1,2)+(rd,x(T)DT(x)DT(x).)2VDT(x)

其中 x=ωs(x,DT(x),T) 表示变换和映射过后的点,前两个坐标是其在新图像中的像素坐标,第三个是其深度值。 ρδ 是huber加权的权重函数。\
  下面来看下 光度残差函数对于变换增量的导数
Jp,x=I|ω(x,T)πpTp.pTΔTTi.TΔTI.exp(Δξ^)Δξ0.

上式与SE(3)中等式唯一的不同是 ξ 有7个变量,增加了变量s,其他表达式不变,但:
exp(Δξ^)Δξ0.=000000000100000000000010000000000001000001010000001000100000010100000000100010001000

与前面的计算过程一样,经过化简后得到:
Jp,x=1z(IufxIvfy)T1001xzyzxyz(z+y2z)z+x2zxyzyx00

   光度残差函数度对于逆深度的导数与SE(3)一样:
rp,x(T)DT=1DT(x)z2(Iufx(txztzx)+Ivfy(tyztzy))

   深度残差对于增量位姿变换的导数:
Jd,x=(πzpTp.D|ω(x,Ti)πpTp.)pTΔTTi.TΔTI.exp(Δξ^)Δξ0.

其中:\
πzpTp.=1zpTp.=(001z2) \
基于性能原因,我们忽略 D|ω(x,Ti)πpTp.
计算化简得:
Jd,x=(001z2yz2xz201z)

   深度残差对于新关键帧I逆深度的导数:
rd,x(T)DIDI([x]1,2).=1

   深度残差对于模板关键帧T逆深度的导数:
rd,x(T)DTDT(x)=πzpTip.ppp.π1Z1DT(x).1DDDT(x)=001z2Tr11r21r31r12r22r32r13r23r33xyzDT(x)1DT(x)2=(001z2)xtxytyztz1DT(x)=ztzDT(x)z2

Storage Jacobian Parameter:
  对于 sim(3) 的求解过程中的存储参数在这里介绍下,方便看懂作者的源代码。由于 Jp,x 在s上的导数始终为0,所以该雅可比仍然采用SE(3)的6参数格式。由于 Jd,x 只在4个位置上有数据,所以采用4参数存储格式。
  由上一部分可知:
   这里写图片描述
所以
Δξ=[(Jp,xJd,x)(Jp,xJd,x)]1(Jp,xJd,x)(rp,xrd,x)=[JTp,xJp,x+JTd,xJd,x]1[Jp,xrp,x+Jd,xrd,x]=[Ap,x+Ad,x]1[bp,x+bd,x]=A1b

其中
Ab=Ap,x+Ad,x=Ap,11Ap,21Ap,31Ap,41Ap,51Ap,610Ap,12Ap,22Ap,32Ap,42Ap,52Ap,620Ap,13Ap,23Ap,33Ap,43Ap,53Ap,630Ap,14Ap,24Ap,34Ap,44Ap,54Ap,640Ap,15Ap,25Ap,35Ap,45Ap,55Ap,650Ap,16Ap,26Ap,36Ap,46Ap,56Ap,6600000000+0000000000000000Ad,11Ad,21Ad,310Ad,4100Ad,12Ad,22Ad,320Ad,4200Ad,13Ad,23Ad,330Ad,43000000000Ad,14Ad,24Ad,340Ad,44=bp,x+bd,x=bp1bp2bp3bp4bp5bp60+00bd1bd2bd30bd4

简单起见,这里没有考虑权重,但代码里是加了权重的。
Huber Weight Function:
  huber函数的形式 αx:=ρδ(r2p,x(T)σ2rp,x(T)+r2d,x(T)σ2rd,x(T))
  虽然写成这样,但真正的变量是: x=|rp,x(T)σrp,x(T)|+|rd,x(T)σrd,x(T)| .
所以权重函数是:
αx=ω(x)=1k|x||x|<=k|x|>=k

Affine Lighting Correction:
  考虑光照变化的场景,建立了光照仿射模型:
rp,x(ξ)=aIT(x)+bII(x)

  这里a,b可以消除场景光照变化引起的共性光度残差,而 ξ 可以消除由于几何运动引起的异性光度残差。引入a,b消除共性残差后,会使 ξ 对异性残差更为敏感,在较少的迭代次数内就能求出 ξ 的真值。
  考虑a,b引起的共性残差的迭代最小化公式是:
Ea,b(a,b)=xΩDTρa,b(aIT(x)+bII(x))

其中 ρa,b(r)=min{δmax,r2} .
关于a,b的值作者给出的封闭解是这样的:
ab=xΩLIT(x)II(x)xΩLII(x)II(x)=1|ΩL|i(IT(x)aII(x))

ΩL:={xΩT|ρa,b(aIT(x)+bII(x))<δmax}
上面关于a,b应该是有错误的.
  下面给出两种可能正确的解:
  一、根据线性回归函数性质可知:
ab=xΩLIT(x)II(x)nIT(x¯¯¯¯¯¯¯)II(x¯¯¯¯¯¯¯xΩLIT(x)IT(x)nIT(x)¯¯¯¯¯¯¯¯¯2=1|ΩL|i(II(x)aIT(x))

  二、依据源代码,提出a,b封闭解的一种可能假设。(仍然存在不足,仅供参考。)
给定一组样本 xi 和每个样本的权重 pi ,做如下简记:
sxswsxx=xipi=pi=x2ipi

则这组样本的平均值是: E(x)=xipipi=sxsw
方差为:
D(x)=E[(xE(x))2]=(xiE(x))2pipi=x2ipi2E(x)xipi+E2(x)pisw=sxx2E(x)sx+E2(x)swsw=sxxsw2(sxsw)2+(sxsw)2=sxxsw(sxsw)2

理想情况下有:
II(x)=aIT(x)+b
根据上面的推导,令
D(II(x))D(IT(x))=syysw(sysw)2=sxxsw(sxsw)2

D(II(x))=a2D(IT(x)) 得:
ab=D(II(x))D(IT(x))=syysw(sysw)2sxxsw(sxsw)2=syy(sy)2swsxx(sx)2sw=syswasxsw=syasxsw

这篇关于lsd:tracking的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1102092

相关文章

TCNN:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking

TCNN:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking arXiv 16 Hyeonseob Nam∗ Mooyeol Baek∗ Bohyung Han 韩国POSTECH大学 Bohyung Han团队的论文,MDNet,BranchOut的作者。 Movtivation 本文的motiv

Learning Policies for Adaptive Tracking with Deep Feature Cascades

Learning Policies for Adaptive Tracking with Deep Feature Cascades ICCV17 shotlight 作者:Chen Huang, CMU postdoctor,导师 Deva Ramanan summary 文章主要贡献在于速度与精度的权衡(AUC 0.638,fps 23),通过强化学习策略,来控制网络的深度,使得精度和

5G Tracking Refernece Signal--简称为TRS追踪参考信号

Tracking Refernece Signal–简称为TRS ,追踪参考信号(注意不是PTRS额!),对PTRS感兴趣的可以参考如下文章: PTRS时间密度与频率密度 TRS在3GPP CSI-RS规范文本中以NZP CSI-RS的一个子类予以定义,虽然从本质上说它并不是CSI-RS的一员。笼统的说其主要用于跟踪并补偿由于振荡器缺陷所引起的误差,从而使UE能够正确接收下行的数据。在LTE中

Deep Sort目标跟踪论文梗概SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC

DeepSort是跟踪算法中非常好用的一个,速度快,准度高。 本文为CVPR2017的跟踪算法。 论文:https://arxiv.org/pdf/1703.07402.pdf 代码:https://github.com/nwojke/deep_sort 摘要 简单在线和实时跟踪Simple Online and Realtime Tracking (SORT)是一种注重简单、高效的多目标跟踪

[论文阅读笔记31] Object-Centric Multiple Object Tracking (ICCV2023)

最近Object centric learning比较火, 其借助了心理学的概念, 旨在将注意力集中在图像或视频中的独立对象(objects)上,而不是整个图像。这个方法与传统的基于像素或区域的方法有所不同,它试图通过识别和分离图像中的各个对象来进行学习和理解。 这个任务和跟踪有着异曲同工之处,跟踪也是需要在时序中定位感兴趣的目标。那么object centric learning能否用于无

multiple object tracking

最近正在work on 一些运动的项目,自己比较心仪和好奇这篇论文,希望有些技术能够借鉴到实际运用里 亮点 它所用的内容都是平易近人的,和日常套路一样,都是先检测再跟踪。 里面专门为体育项目考虑了。特别和之前的数据集相比,这次的数据集不论是在人的速度和人的动作等,都比较适合体育类的 这里定制了一个叫·MixSort`的部件用于帮助跟踪,其中借用了MixFormer 和 SORT的想法 训

观察 jvm 运行时数据区内存大小(native memory tracking)

jvm 运行时数据区 jvm 运行时数据区包括且不限于以下几个部分: 堆(heap): 用于存储对象实例和数组。堆内存的分配和释放由垃圾回收器进行管理。方法区(method area): 用于存储类的信息、静态变量、常量等。jdk 8 后方法区位于 metaspace。虚拟机栈(vm stack): 用于存储方法的局部变量、参数值等。本地方法栈(native method stack): 用于

深度学习tracking学习笔记(3):TLD(Tracking-Learning-Detection)学习与源码理解

reference:http://blog.csdn.net/zouxy09          TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生Zdenek Kalal在其攻读博士学位期间提出的一种新的单目标长时间(long term tracking)跟踪算法。该算法与传统跟踪算法的显著区别在于将传统的跟踪算法和传统的检测算法相结合来解决

基于图像特征的视觉跟踪系统(Feature-based visual tracking systems)--一篇Visual Tracking Benchmark (2013)综述

reference:http://blog.csdn.net/anshan1984/article/details/8866455 最近读到一篇关于视觉跟踪的综述性文章,“Evaluation of Interest Point Detectors and Feature Descriptors for Visual Tracking”,发表在2011年3月International Jour

深度学习tracking学习笔记(2):图像/视觉显著性检测技术发展情况梳理(Saliency Detection、Visual Attention)

reference: http://blog.csdn.net/anshan1984/article/details/8657176 http://blog.csdn.net/huangbo10/article/details/19788547?utm_source=tuicool&utm_medium=referral 关于显著度的研究是从生物研究发展而来,早期比较重要的工作是C.Ko