O_Solver
O_Solver插件定义输入图像中两个视图之间的几何关系(即摄像机关系或求解)。如果要在树下使用DisparityGenerator,VectorGenerator或VerticalAligner,则这是必需的。
输入和控制
连接类型 |
连接名称 |
功能 |
输入值
|
相机 |
预先追踪Nuke立体相机,描述用于拍摄Source图片。这可以是您已通过CameraTracker节点跟踪或导入到的摄像机Nuke从第三方相机跟踪应用程序。此输入是可选的。 |
忽视 |
指定在特征检测和分析期间要忽略的区域的蒙版。如果在Source图像产生不正确匹配的特征。此输入是可选的。 |
|
资源 |
一对立体声图像。这些可以是您要处理的图像,也可以是使用相同相机设置拍摄的另一对图像。 |
Control (UI) |
Knob (Scripting) |
Default Value |
功能 |
O_Solver Tab |
|||
Views to Use |
viewPair |
Dependent on source |
设置要用于计算功能和摄像机关系的两个视图。这些视图被映射为左眼和右眼。 |
Analysis |
|||
Analysis Key |
analysisKeyframe |
0 |
显示设置的关键帧,O_Solver通过这些关键帧进行特征匹配和分析。通过在任一侧关键帧上的结果之间进行插值来创建所有其他帧的解。 |
Add Key |
addAnalysisKey |
N/A |
单击以在当前帧处添加分析关键帧。 |
Delete Key |
deleteAnalysisKey |
N/A |
单击以删除当前帧处的分析关键帧。 |
Delete All |
deleteAnalysisKeys |
N/A |
单击以删除所有分析关键帧。 |
Single Solve From All Keys |
singleSolve |
disabled |
启用后,O_Solver会使用您设置的所有关键帧来计算一个求解。与不使用单个关键帧时,将其用于不会随时间变化的装备以获得更准确的结果。 |
Features |
|||
Mask |
ignore |
None |
设置遮罩类型以排除序列的区域: • None -所有素材都不会被忽略。 • Source Alpha -使用源剪辑的Alpha通道定义要忽略的区域。 • Source Inverted Alpha -使用源片段的反向Alpha通道定义要忽略的区域。 • Mask Luminance -使用遮罩输入的亮度来定义要忽略的区域。 • Mask Inverted Luminance -使用“遮罩”输入的反转亮度定义要忽略的区域。 • Mask Alpha -使用遮罩输入Alpha通道定义要忽略的区域。 • Mask Inverted Alpha -使用反转的遮罩输入Alpha通道定义要忽略的区域。 |
Number |
numberFeatures |
1000 |
设置要在每个图像中检测并在视图之间匹配的特征数量。 |
Threshold |
featureThreshold |
0 |
设置阈值以选择图像中的特征。使用较高的值选择突出的点。使用较低的值将特征散布到整个图像中。 |
Separation |
featureSeparation |
2 |
设置所需的特征间隔以强制检测到的特征覆盖图像。 重要的是,功能不要聚集在一起。如果您设定Display至Keyframe Matches并确认是这种情况,请尝试增加此值。 |
Display |
|||
Display |
displayType |
Nothing |
设置显示模式: • Nothing -仅显示Source图片。 • Keyframe Matches -在查看器叠加层中显示用于相机关系计算的功能和匹配项。 • Preview Alignment -预览计算出的特征匹配如何描述立体相机的对准。 |
Alignment Method |
alignmentMethod |
Vertical Skew |
设置用于在以下情况下对齐视图的对齐方式Display设定为Preview Alignment: • Vertical Skew -使用偏斜沿y轴对齐要素。这不会沿x轴移动要素。 • Perspective Warp -对图像进行四角扭曲以使其在y轴上对齐。这可能会使特征沿x轴稍微移动。 • Rotation -通过围绕一个点旋转整个图像来垂直对齐要素。旋转的中心由算法确定。 • Scale -通过缩放图像垂直对齐要素。 • Simple Shift -通过上下移动整个图像垂直对齐功能。 • Scale Rotate -通过同时缩放和围绕一个点旋转整个图像来垂直对齐要素。旋转的中心由算法确定。 • Camera Rotation -首先对两个摄像机进行3D旋转,以使它们具有完全相同的方向和平行的观察轴,然后再对视图进行聚合以提供原始融合,从而对齐要素。为了获得最佳效果,请使用Camera输入以提供有关摄影机的信息。 |
Match Offset |
offset |
100 |
设置应用于对齐的要素匹配的偏移量(以像素为单位)。您可以: • 增加此值可人为地增加视差,因此更容易查看要素匹配的水平。任何非水平的匹配都可以视为较差的匹配,可以手动删除。 • 减小此值可将特定匹配的视差设置为零,并检查每个特征的垂直偏移。火柴应该坐在彼此之上。如果它们是垂直偏移的,则说明它们很差,可以手动将其删除。 注意: 的Match Offset控制仅在以下情况下可用Display设定为Preview Alignment。 |
Error Threshold |
alignmentError |
10 |
设置垂直对齐误差的阈值(以像素为单位)。什么时候Display设定为Preview Alignment,则在查看器中选择垂直误差大于阈值的任何匹配项。这样,您可以在关键帧上预览对齐时轻松删除具有大错误的不匹配项。 |
Current Frame |
|||
Re-analyse Frame |
resetFrame |
N/A |
单击以清除当前帧中的自动要素匹配并重新计算它们。如果O_Solver上游的节点树中发生了更改,您删除了太多的自动功能匹配项,或者您要基于已创建的任何用户匹配项来计算自动匹配项,这将非常有用。 |
Delete User Matches |
deleteUserMatches |
N/A |
单击以删除您已手动添加到当前框架的所有功能匹配。 |
影片教学


欢迎使用来自Foundry的Ocula,我叫Jon,在本教程中,我们将研究Ocula 3.0中Solver节点的QCing(质量检查)。求解器节点位于Ocula树的顶部,它计算输入板的立体几何体,以供其他Ocula节点使用。
因此,这是一个进行重新定时的脚本。在顶部,我有一个Solver节点。它正在计算这些平板的立体几何形状,并将其作为隐藏的元数据向下游传递给我在这里使用的其他Ocula节点。因此,我正在做一些印版准备工作,正在做一些颜色匹配,垂直对齐,计算视差,将其烘烤以及计算运动矢量以进行重新计时。平板的比对数据由Solver计算,并向下游传递以供DisparityGenerator用于计算该比对的视差矢量。而且这还交付给Aligner,以更新板的对齐方式,使其水平对齐。您会注意到,许多Ocula节点有一个单独的节点解算器输入,因此您可以通过不同的流将元数据向下传递。
如果我们查看此脚本中的Solver节点,我们将看到在时间轴上已经创建了一些分析键。求解器在这些关键帧处计算立体几何,然后在它们之间进行插值。它通过在特征点匹配输入的左右图像来实现。因此,如果我切换到这些外观,它将计算左眼的特征并将其与右眼匹配。并且它在内部使用该数据来计算内部相机装置和向下游输送的印版的对齐数据。因此,让我们看一下设置分析键和设置求解器节点的过程。在规划求解节点中,您可以定义用于左右视图的视图,可以定义分析键,可以定义在键处检测和匹配特征的方式,还可以定义用于对特征进行匹配的QC的显示已创建,您也可以重新分析或删除匹配项。首先要做的是向您的镜头添加一个分析密钥。如果装置固定,则会聚度,轴间焦距没有变化,则可以使用单个分析键。我的工作方式是,我寻找一个框架,其中图像中有很多漂亮的纹理用于特征匹配。因此,第一帧具有很多空白的蓝屏,并且很难选择其功能。最后一帧有一些更有趣的东西,这里有更多纹理可以拾取特征并进行匹配。因此,让我们在此处添加一个分析键。如果我按中号并切换显示至关键帧匹配,它显示的是它在左图和右图上拾取并在两者之间匹配的功能。因此,这些特征匹配用于计算立体几何和下游传递的路线数据。我可以通过点击来对这些功能匹配进行质量控制P切换显示至预览对齐。现在,它已将计算出的路线数据应用于这些要素匹配,因此在原始匹配中,您可以看到左右眼之间的一些垂直偏移。现在,我们应用该对齐数据,因此偏移量现在为水平。如果有任何要素匹配不是水平的,则可能是不好的匹配。有个阈在这里您可以调整以自动选择那些不良匹配项,因此,如果我将其设置为合理的值并查看其中一些匹配项,则突出显示该内容,如果我在左右眼之间滑动,则可以看到它们上下切换。我可以打删除键以自动删除所有这些不匹配项。另外,您实际上可以查看所有单个匹配项并进行检查,看看哪些匹配项不好,选择并删除。您可以调整一些参数。您可以使用面具在节点上输入以忽略特定区域。您可以定义要检测的功能数量,然后尝试在左眼和右眼之间进行匹配。我倾向于将其保留为1000,但是如果您需要很多功能,则可以将其切换为3000。或者,如果您使用大量用户匹配项,则可以将其拒绝。的阈和分离通常不需要调优,但如果需要,可以与他们一起玩。
现在,您可以使用用户定义的匹配项来锁定板的对齐方式,因此在这里让我们删除此自动匹配项。我可以进去,也可以添加用户定义的匹配项(新增功能),睁开眼睛,将其放在正确的位置,然后进行检查。在立体几何的计算中,此用户定义的特征匹配具有更多的权重。因此,如果我预览路线,则现在完全是水平的,并且在预览路线时会突出显示周围任何不好的自动匹配项。因此,例如,如果我担心这里的所有这些自动匹配项,并且想检查它们是否正常,我可以加入,然后可以添加用户定义的匹配项并将其放置在正确的位置-您应该非常对此要小心。然后,您可以切换回预览路线并查看哪些自动匹配已被踢出位置。现在,我可以删除那些自动不匹配项。它重新计算了比对,因此有一组新的匹配项超出了我的阈值,我可以再次删除以将其删除。因此,如果要添加用户匹配项,则可以添加它们,并且它们在立体几何形状的对齐计算中会提供额外的权重。
实际上,我使用了三个关键帧来拾取时间轴上立体声装备的任何变化,因此让我们在另外两个帧处添加关键帧。新键,这些是匹配项,我按P预览对齐方式,然后按删除键以自动删除不匹配项,然后我要添加一个最终的关键帧。现在添加一下,预览匹配项,查看对齐方式,设置阈,然后删除超出该阈值的自动匹配项。到这里,我有3个匹配项,并且预览了路线,因此我已经质量检查了直接在Solver节点中向下游传递的路线数据。
好的,让我们看一下设置规划求解节点的一些技巧。在这张照片中,摄影机装备实际上是随着时间变化的。如果您有关于轴间会聚的任何元数据,则可以查看该数据以查看立体几何形状的变化以及在规划求解中需要设置新分析键以拾取新立体几何形状的位置。但是,如果您没有该元数据,则仍然可以使用预览对齐在规划求解中进行测试,以测试立体对齐方式何时更改。因此,让我们看看如何为这张照片做到这一点。我要添加一个分析键在这里的第一帧。预览路线,并删除不匹配项。然后我要离开显示上预览对齐并切换到新框架以检查我在关键帧上计算的对齐数据在新框架上如何工作。您会发现所有要素匹配的对齐方式现在都不正确。立体几何形状已随着时间而改变,因此我将继续工作以查找相机装备的变化位置。因此,这里的对齐方式非常一致,有一些不好的匹配,但是我将保留该框架并继续进行工作。让我们在新框架上检查一下。看起来很合理。让我们再往前走一点。还是合理的。让我们检查第100帧。好的,几何形状已经改变。我要去新增金钥。我已更正对齐数据。让我们回头看看这是否适用于中间帧。几何形状在这之间发生了变化。我们需要添加一个新密钥来更正该行数据。让我们看看它之间是否有所改变。看起来不错让我们继续前进。几何形状已更改,因此我需要添加一个新关键点。让我们在之间检查一下。看起来似乎还可以,但是实际上所有功能匹配在特定方向上都发生了总体变化。您会看到它们都在垂直方向上略微向上移动,因此我认为此处的几何形状变化很小,我将添加“添加关键点”以确保已锁定该对齐数据。现在,我们又有了很好的一致性,您可以在时间轴上向前移动以定义所需的所有键。
您可以将输入调整为O_Solver,以帮助其进行功能匹配。在这张照片中,图像的暗区很难拾取和匹配。因此,如果我们在此框架上添加了一个关键点,则可以看到它在中央,明亮且纹理良好的区域中拾取的特征匹配项。因此,我刚刚将颜色空间更改为对数空间-您可以使用Cineon或类似的东西来拉起那些深色区域。如果我们重新匹配该框架,我将重新分析框架。您现在可以看到它在相对较暗的区域中进行了功能匹配。这很好,因为它已将匹配的特征散布在整个图像上。因此,只要您不更改拾取特征的位置,就可以随意调整输入以获得良好的特征匹配,因此也无需更改其计算的路线数据。
您还可以根据单独的镜头来计算解算。在这里,我们有一个固定的摄影机,并拍摄了一个光线充足,纹理很好的区域的单独镜头。这里的特征点将得到很好的定义,因此我们可以很好地解决立体几何。由于相机是固定的,我在这里拉了几个分析键,然后选择了从所有键一次解决。它会将所有关键帧组合在一起,以提供更好的立体几何计算,您可以将其通过管道传输到解算器其他Ocula节点的输入。因此,在这里,如果我想计算该镜头的视差,可以将解算器放入解算器 DisparityGenerator的输入。
最后,如果您要进行拍摄,则可以将该摄影机数据拖到“求解器”节点中。O_Solver有一个相机输入,您可以将其连接到火柴移动的摄像机。现在,当您计算关键帧时,它将提取精确的立体几何并将其用于特征匹配中。它还会将下游的立体几何体传递到树中的其他Ocula节点。
这样就构成了本教程。我们介绍了设置和质量检查分析密钥。我们还研究了一些技巧,以测试立体几何形状的变化,调整输入素材以充分利用特征匹配,并为解决方案使用单独的素材,最后使用匹配移动的相机。