在下面部分,将介绍3D-Equalizer的自动追踪部分。我们还是使用上章所用的图片序列。一些自动追踪方面的详情,比如自动追踪的范围,错误追踪点的消除以及matte的绘制等等将在下面提及。
l 打开3D-Equalizer并创建新的工程。
首先,我们将加载工程。
l 在Main Windows的环境菜单里选择Motiontracking环境。
l 点击Frames Window里的Add按钮。
将会弹出一个对话框问你是否创建一个序列或者一个参考帧。
l 点击Add Sequence按钮来创建一个新的序列工程。
打开创建序列对话框。
l 点击Sequence Settings::Browse and go to the directory选择教程目录下的/ball_bluebox1/双击第一个图片文件。
3D-Equalizer导入序列帧。然后,Identifier,Pattern,Start和End文本输入框自动填写完毕。
这个序列是用PAL视频拍摄,25FPS。
l 在Rate Fps文本输入框内输入25.0,Imagetype选择Interlace-Odd First并点击OK按钮来创建新的序列对象。
现在来修改下有效视图区域(FOV)。
l 到80帧,然后在3DE的Zoom Window里面修改FOV线。
最后我们需要创建一个新的点组对象,用于分类保存3DEqualizer的自动追踪出来的点。
l 选择菜单Pointgroups Window::Pointgroup::Add Pointgroup,弹出的Create Pointgroup对话框,点击OK机壳。
一个新的摄影机点组对象被创建:pgroup #1。然后我们可以在Pointgroup Window里面看到这个新的条目。
自动追踪的基本概念
在我们开始追踪之前,先来看下3DE的自动追踪的界面函数。
l 选择Autotracking环境。
Timeline,Frames,Pointgroups,Zoom以及Autotracking Regions窗口将会被打开。另外,3DEqualizer的Zoom Window的Autotracking Controls也被激活。

开启Autotracking Controls后的Zoom Window
由于3DEqualizer的Autotracking Regions Window提供的函数,我们可以配置自动追踪引擎。这个窗口包含了一个追踪区域对象的列表,可以关联当前的序列帧。在自动追踪处理时,自动追踪区域定义了FOV的二维区域,来替代3DEqualizer手动追踪的追踪点。二维区域可以通过matte序列、其他matte方式或者整个FOV来定义。每一个自动追踪区域都有它自己的一组参数,因此它们可以分开被处理。
在Autotracking Region Window里已经有一个默认的自动追踪区域对象。因此,我们来看下它的参数设置。
l 选择自动追踪区域region #1,选择Autotracking Region Window::Modify。
Modify Autotracking Region的对话框打开。在这个窗口里的所有设置都可以修改。
Tracking Mode菜单,可以让你选择追踪引擎的模式(marker或者pattern)。
根据自动追踪区域创建的点被保存在一个pointgroup对象里面。你可以通过点击Pointgroup按钮连接一个自动追踪区域来指定点组。
为了加速在高分辨率情况下的自动追踪速度,你可以通过修改Image Scale参数来减小图片的尺寸。
3DEqualizer的自动追踪可以被分层三个阶段。在A阶段,3DE自动搜索清晰的特征部分,然后在这些特征上创建点来追踪特征。B阶段,在A阶段创建的每一个点,将会逐帧追踪。 C阶段,最后3DE判断其中那些点不需要被追踪。B和C阶段是每一帧都执行。不过,为了提高工作性能阶段A一般会在每15帧执行一次。你可以通过修改参数Search Interval参数来调节这个数值(15帧),3DE会尝试找到60个可用的点(包括已经存在的点)。如果它只找到少于30个点可用,3DE一般会强行执行阶段A来填补这些点。你可以通过修改参数# Points(min/max)。最后,追踪长度少于10帧的点会被自动删除,因为少于10帧的追踪点,在3DE里一般用处不大。这个值(10帧)可以在参数Min. Track Length。
Tracking Sensitivity(追踪敏感度)参数可以让我们定义特征点是否符合要求的阀值。值1将会强迫3DE去除大部分的特征点,但是生成的点将会拥有相当高的可信度,但是一般追踪的曲线都会相当的短(帧数比较少)。值0产生的点的质量相对来说很低,但是追踪的曲线会相当的长(帧数比较多)。
每一个自动追踪区域在自动追踪期间都有他自己的FOV二维信息。每一个追踪区域的特征都可以通过菜单Matte Mode来配置。一般来说,一个追踪区域可以被定义为图片序列,matte(画的mask),或者整个FOV。
自动追踪的region #1的默认设置已经可以,所以我们就直接开始追踪。
l 点击OK按钮,关闭Modify Autotracking Region对话框。

修改自动追踪区域对话框
l 点击按钮Zoom Window::Auto。
3DEqualizer的开始自动追踪处理,然后按钮的标签变成了Stop。几个红色的点会出现在FOV上。继续逐帧追踪,一些红色的点会转为黄色,表示他们追踪的曲线(帧数)已经达到了最低要求(10帧)。FOV会被新的红点布满。为了不看花眼(白话,哈哈),让我们来设置下显示。
l 去除选项Zoom Window::View::Show Point Names。
现在每一个点都变成一个小红或黄点,这样我们就不会因为名称而看花眼了。最后3DEqualizer追踪完毕,按钮又从Stop变为Auto。Pointgroups窗口内出现101个自动追踪的点。让我们来看下。
l 点击按钮Main Window::Begin in order to go to the first frame。使用Main Window的帧滑块来查看下序列。
我们可以看到几个错误的追踪点,主要是集中在蓝球上。不过,我们先试着计算下看看。首先,我们来设置下摄影机参数。
l 打开Camera Adjustment窗口。
根据前面所讲的调节摄影机参数。
l 设置Horizontal Angle(水平视角)为45.0,Pixel Aspect(像素比)为1.0926,Lens Distortion(镜头畸变)为0.4.
l 选择Main Window::Calc::Calc All Objects From Scrach。
3DEqualizer开始计算3D摄影机的运动路径以及所有追踪点的3D位置。一段时间后,计算停止,出现一些错误。显然,由于错误的追踪点引起的,因此我们来去掉它们。我们可以一帧一帧的来查看这些错误的追踪点,然后手动删除它们,但是这里有更简洁的方法。
l 选择Main Window::Calc::Determine Badly Tracked Points。
弹出一个小的对话框(对照下面的图)。正如它的名称所示,这个函数是用于搜索那些看起来错误的点。
l 设置Action to Select Baddly Tracked Points,增加Detection Sensitivity参数的值到1,然后点击OK按钮。

确定错误的追踪点
在一段时间后,3DEqualizer完成了确定错误点的步骤,一些点就变成了被选中状态。让我们来看下结果。
l 切换到Motiontracking环境模式。
l 点击Main Window::Begin in order to go to the first frame来查看序列帧。
如我们所看到的,大部分被选中的点是在蓝球上或者在它周围的位置。我们来删除它们。
l 点击Pointgroups Window::Delete,然后在弹出的的对话框内点击Delete Seleted Points。
Pointgroups Window显示了大约有80个点有效。现在让我们再来计算下3D结果。
l 选择Main Window::Calc::Calc All Objects From Scratch。
这时候,3DEqualizer就可以计算出3D摄影机的路径以及3D点的位置。
注意事项:
在某种情况下,Determine Badly Tracked Points函数会发生没有找全或者找到过多的错误的点。这种情况下,就修改下Detection Sensitivity的值,然后再多执行几次这个函数,知道我们找到一个比较满意的结果。
让我们来仔细看下计算结果。
l 选择Status环境模式,然后检查av值。
我们可以看到平均值大概是0.95像素,大约是我们上个课程获得的结果的4倍。

显示平均偏差曲线的状态窗口
l 激活Status Window::View::Show Point Deviations::All
这样,所有点的偏差曲线都被显示出来。如我们所看到的,少部分点的偏差曲线的波动非常大。这些点看上去是错误的,所以我们可以删除它们。

显示所有点的偏差曲线的状态窗口
l 按住ALT按钮,然后按住左键框选。确保在没有框选中3s以下的点。
如你所看到的,你已经选择了这些偏差很大的曲线。
l 选择Main Window::Begin in order to go to the first frame来浏览序列帧。
每一个被选中的点并没有按照序列帧中所显示的运动轨迹进行捕捉。要么被蓝色的球所干扰,要么就是追踪过程中,在不同的特征点间跳动。所以我们就直接删除这些点。
l 点击Pointgroup Window::Delete,然后点击对话跨的Delete Selected Points。
Pointgroups Window显示了大约有70个点有效。然后我们再来检查下计算的结果。
l 选择菜单Main Window::Calc::Calc All Objects Frome Scrach,在Status Window里面查看平均偏差值。
我们可以看到平均偏差值已经变成0.39像素,是个可以接受的计算结果。
提高自动追踪质量的技巧
在上节中,我们讨论了3DEqualizer的自动追踪的基本概念。现在我们来学下如何在提高我们的追踪质量。
l 切换到Orientation环境。
l 关闭选项Orientation Window::View::Show Point Names,启用Orientation Window::View::Show Camera Path选项,然后查看下3D摄影机的追踪路径。
总得来说,3D解算结果看上去不错,不过摄影机的运动轨迹看上去有点颠簸不平,而在图片中,我们看起来摄影机看上去并没有这么颠簸。这是因为所有由3DEqualizer生成的点或多或少放在蓝色摄影棚的背景。前景只有少量的marker,但是他们看上去跟地板的对比很弱。我们将学下追踪前景中的点,这样可以较大的提高追踪的质量。

颠簸的摄影机路径
现在,让我们手动添加一些追踪点来稳固摄影机的追踪路径。
l 切换到Motiontracking环境模式。
l 点击Pointgroups Window:Add to create a new point,名称为01。
弹出Create Point对话框。
l 设置Trackingmode为Marker点击OK。
为了对摄影机产生最大的影响,我们追踪离摄影机距离最近的marker。
l 选择新建的点01,然后切换到第一帧,点击最近的marker。然后点击Zoom Window::Center M几次,确保3DE能够清晰的辨认Marker,然后再勾选Zoom Window::Options::Auto Center,最后点击Track按钮。

手动追踪marker
如你所看到的,3DEqualizer完美的从头到尾的追踪这个marker。让我们来查看下增加了这个点后,追踪结果受到多少影响。
l 请选择Main Window::Calc::Calc All Object From Scratch。然后切换到Status模式,检查偏差的平均值。
我们可以看到,平均值还是0.39,并没有提高多少。
l 切换到Orientation模式,然后重新检查下摄影机的运动路径。
摄影机的运动路径看起来要光滑很多(看下图)。我们手动追踪的用于稳定摄影机路径的点很明显的提高了追踪的质量。
注意事项:
以上步骤是一个对于处理运动轨迹颠簸的典型的非常好的流程例子。我们不需要明白3DEqualizer的自动追踪引擎。它是一个能够在短时间内创建大量追踪点的工具,但是并不意味着它可以替代你来解决这类需要具有创造性思维的方法的问题。

光滑的摄影机路径
l 切换到Status环境,然后启用Status Window::Show Point Deviations::All。
有一些点的偏差曲线相对平均偏差曲线还是有点高,,然我们看看如果删除了这些点后,会发生什么情况。
l 按住Alt,然后框选3s以上的点。
所有的被选中的偏差曲线变成橘红色,相对应的点对象也被选中。
l 选择Pointgroups Window::Delete,点击弹出的对话框Delete Selected Points按钮。
Pointgroups Window显示了大约有60个点是有效的,最后,让我们来检查下现在的计算结果。

显示所有点的偏差曲线的状态窗口
l 选择Main Window::Calc::Calc All Objects From Scratch,然后检查平均值。
我们可以看到偏差平均值提高到了0.30像素,看上去不错。
