O_ColourMatcher
O_ColourMatcher插件使您可以将一个视图的颜色与另一个视图的颜色进行匹配。它是专门为处理细微问题而设计的立体视图之间有时会出现颜色差异。
输入和控制
连接类型 |
连接名称 |
功能 |
输入值 |
面具 |
一个可选的遮罩,用于确定从中获取颜色分布的位置。例如,如果您有一个剪辑在绿色屏幕前显示一个人,则可能要使用遮罩来排除绿色区域,以便插件专注于与该人匹配。 |
资源 |
一对立体声图像。 如果图像中未嵌入视差通道和遮罩,则您正在使用3D LUT要么Local Matching模式下,应在图像序列之后使用O_Solver,O_DisparityGenerator和O_OcclusionDetector节点。 |
Control (UI) |
Knob (Scripting) |
Default Value |
功能 |
O_ColourMatcher Tab |
|||
Views to Use |
viewPair |
Dependent on source |
设置要匹配其颜色的两个视图。这些视图将被映射为左眼和右眼。 |
Match |
matchWhat |
Left to Right |
设置如何在视图之间匹配颜色: • Left to Right -调整左视图的颜色以匹配右视图的颜色。 • Right to Left -调整右视图的颜色以匹配左视图的颜色。 |
Mode |
matchingMode |
Basic |
设置用于颜色匹配的算法: • Basic -此模式采用一个完整视图的颜色分布,并对其进行修改以匹配另一视图的颜色分布。 • 3D LUT -此模式根据未遮挡像素处的局部匹配生成全局查找表(LUT)。 注意: 此模式要求在输入数据流中存在视差字段和遮挡遮罩。如果还不存在,则可以使用O_Solver,O_DisparityGenerator和OcclusionDetector插件创建它们。 • Local Matching -此模式首先根据Block Size控制。然后,它匹配两个视图中相应块之间的颜色分布。如果视图之间存在局部颜色差异,例如在一个视图中比另一个视图亮的高光,这将很有用。注意,此模式要求输入数据流中存在视差字段。如果没有,则可以使用O_Solver和O_DisparityGenerator插件创建一个。 注意: 如果Occlusion Compensate启用后,此模式还需要上游遮挡遮罩。如果不存在,则可以使用O_OcclusionDetector创建一个。 |
Export 3D LUT |
exportLUT |
N/A |
单击以将为当前帧计算的颜色更改导出为3D查找表(LUT), .vf格式。 这使您可以使用以下方法分别应用LUT: Nuke的Vectorfield(Color > 3D LUT > Vectorfield)节点。此控件仅在3D LUT模式。 |
Local Matching Options |
|||
Block Size |
blockSize |
20 |
定义在计算颜色匹配时将图像划分为的正方形块的宽度和高度(以像素为单位)。 注意: 此控件仅在Local Matching模式。 |
Occlusion Compensate |
occlusionCompensate |
enabled |
什么时候Occlusion Compensate启用后,O_ColourMatcher会在附近已经能够匹配的无遮挡区域中寻找相似的颜色,并使用找到的最接近的颜色。 注意: 这需要在上游使用遮挡蒙版(您可以使用O_OcclusionDetector创建一个遮罩),并且仅在Local Matching模式。 |
Edge Occlusion |
edgeOcclusion |
0.40000001 |
设置将图像边缘视为遮挡的阈值,以减少光晕和边缘闪烁。 值越高,即使在上游遮挡蒙版中未将图像边缘标记为更多,图像边缘也被视为遮挡。 注意: 此控件仅在以下情况下可用Occlusion Compensate已启用。 |
Colour Sigma |
colourSigma |
2 |
设置遮挡区域中颜色匹配中边缘的模糊量。 减小此值可将遮挡区域中的颜色校正限制为相似的颜色。增加该值以模糊颜色校正。 注意: 此控件仅在以下情况下可用Occlusion Compensate已启用。 |
Region Size |
regionSize |
25 |
设置用于计算遮挡像素处颜色校正的非遮挡像素区域的大小(以像素为单位)。 小费: 什么时候Occlusion Compensate启用后,O_ColourMatcher首先找到最接近的未遮挡像素,然后将该距离扩展此像素数以拾取要使用的未遮挡像素。 |
Multi-scale Options |
|||
Number of Samples |
samples |
5 |
设置样本数量Local Matching模式。 使用大于1的值可计算多个块大小的校正- Block Size和Max Block Size -然后将结果混合在一起。这可以帮助减少错误。 |
Max Block Size |
maxBlockSize |
100 |
设置在“本地匹配”模式下使用多个样本时要达到的最大块大小的大小(以像素为单位)。 注意: 仅当您已设置Mode至Local Matching和Number of Samples大于1的值 |
Sample Spacing |
intervalType |
Uniform |
设置在间隔中使用多个样本时要使用的采样间隔类型Local Matching模式: • Uniform -采样间隔保持恒定。样品均匀分布。 • Favour Small Block Sizes -采样间隔随着块大小的增加而增加。这使校正的权重朝着较小的块尺寸进行,以保留更多的细节,同时仍包括一些较大的块尺寸,从而更能避免视差错误。 |
Colour Correction Type |
correctionType |
Best Guess |
确定O_ColourMatcher如何将两个视图分成正方形块并匹配相应块之间的颜色分布: 小费: 如果您设定Number of Samples大于1的值Colour Correction Type对多个块大小执行此操作,然后将不同块大小的结果合并在一起。 • Minimum Correction -从结果中,这会在每个点(即最接近原始图像)处选择最小的校正。如果视差图非常差,则此选项很有用。 • Best Guess -从结果中,在每个点上选择最接近目标图像的校正。通过使用视差字段将其他视图扭曲到您要校正的图像上来创建目标图像。如果您有很好的视差图,则此选项很有用。 • Average Correction -在每个点上使用色彩校正的平均值。此选项是默认选项。 注意: 仅当您已设置Mode至Local Matching。 |
Mask Options |
|||
Mask Components |
maskWith |
None |
设置在计算颜色转换时用作遮罩的通道: • None -使用整个图像区域。 • Source Alpha -使用的Alpha通道Source剪辑作为面具。 • Source Inverted Alpha -使用反向的Alpha通道Source剪辑作为面具。 • Mask Luminance -使用的亮度Mask输入作为掩码。 • Mask Inverted Luminance -使用反向亮度Mask输入作为掩码。 • Mask Alpha -使用的Alpha通道Mask输入作为掩码。 • Mask Inverted Alpha -使用反向的Alpha通道Mask输入为mask.s |
影片教学


欢迎从铸造厂来到Ocula。我的名字叫Jon,在本教程中,我们将看一下在Ocula 3.0中设置和检查ColourMatcher节点的过程。我们将研究校正此素材的颜色。如果我在左右眼之间切换,则可以看到地板上反射的变化很大。我们希望将这些反射与图像匹配,以简化立体观看体验。在我的脚本中,我正在设置并检查差异。我们将其渲染出来以供使用,我使用Ocula中的ColourMatcher节点将其拉入此处以进行颜色校正,稍后我们将研究质量检查。
因此,首先让我们看一下设置和审查。我已经在Solver节点中设置了分析键,并且在DisparityGenerator节点中使用了默认参数。关于如何设置求解器和DisparityGenerator节点,有一些可用的教程。在这里,我还有一个OcclusionDetector节点,并且在Nuke中添加了一个新的遮挡蒙版通道。这定义了在左右视图之间不匹配的像素,在视图之间被遮盖或显示的像素。当ColourMatcher将颜色从一个视图拉到另一个视图时,它将忽略那些被遮挡的像素。因此,如果我们查看OcclusionDetector,则可以调整遮挡的定义方式,稍后将看到如何执行此操作。在这里,您可以看到图像边框被定义为左右视图之间的遮挡。我将渲染视差和遮挡,然后将其拉回以与ColourMatcher节点一起使用。
在ColourMatcher中,您可以定义左视图和右视图,是将左视图匹配到右视图,还是将右视图更新为匹配左视图。有三种计算颜色的方法:更新颜色基本的提升和获取,更加复杂3D LUT,然后可以将其导出以在Ocula或Nuke之外使用,并且还可以选择进行本地色彩校正(本地匹配)。这与左右图像之间的小块匹配,因此将与视图之间的细微变化匹配,这就是我们在此处看到的反射。您可以选择是否分别处理由遮挡检测器定义的遮挡区域,并且有一些参数需要调整。我们将在以后看到如何调整这些更新。也有一些多尺度选项对于块。您可以选择使用一个或多个块大小,可以设置要使用的最大块大小,还可以定义如何应用更新。这些选项有助于稳定颜色随时间的更新。ColourMatcher还具有一个面具输入。您可以选择使用基本方法和3D LUT方法定义遮罩的方式,然后在遮罩区域中计算更新并将其应用于整个图像。在本地匹配,将为遮罩区域计算更新并将其应用于该遮罩区域。因此,这是使用局部校正方法计算出的更新。您会看到反射已更新,因此它们在左右视图之间匹配。
现在,让我们看一下如何对颜色校正进行质量检查。在这里,我正在重新计算校正后的板的视差。注意,我必须从上游提取规划求解信息。我可以在新的规划求解节点中重新计算它。我在Ocula StereoReviewGizmo中使用了这种差异。我将其设置为在左右视图之间显示CheckerBoard按键组合。如果切换校正,则可以在Gizmo上拾取收敛点,然后将其移动以检查图像不同部分左右两侧的差异。如果我们看一下原始素材,您会看到已纠正的差异。因此,再一次,如果我们四处走动,您可以在按键组合的左右视图中看到不同的颜色。质量检查的另一种方法是使用NewView节点将校正后的视图拖到“英雄”视图上,然后可以检查差异。我将NewView设置为拉动剩下视图,我们使用插值位置共1。然后,我可以进行每个像素的差异,因此我们可以立即检查整个图像上的错误。此处的区别仅在于可能具有亚像素位移视差计算的边缘。如果我们查看原始印版,则可以看到ColourMatcher节点已纠正的色差。
让我们看一下另一张照片的色彩校正。这是左视图和右视图,这里有一个较大的色偏,我们想在此进行校正。我已经设定了求解器的键,并且我们像以前一样计算视差和遮挡。如果我们查看这些遮挡,则这些像素在左视图和右视图之间被标记为不同。现在有两种计算遮挡的方法,首先是查看深度遮挡,其中图像的一部分被另一部分遮挡,另一部分则通过使用视图之间的色差阈值来查看图像内容的差异(颜色阈值)。因此,我们可以关闭这些阈值并将其调整为镜头。我将从拉起深度遮挡直到我们只选择深度层之间的遮挡。我不希望这变得太大和笨拙。然后,我可以与颜色阈值因此,再次,我可以开始进行总结,直到我们只选择深度与场景之间的这些变化之间的差异。我在这里比较保守。您不想拾取许多在帧之间闪烁的孤立区域。我们希望它随着时间的推移保持稳定。根据左右视图中图像的差异程度,此处还有一些选项可以优化遮挡区域,还可以选择一些预设。因此,在这里,我们看到了一个极端的差异,所以它要大得多。我为该镜头做的另一件事是添加一个roto来遮挡图像顶部的位,左右之间有所不同。因此,您可以自由使用Roto或RotoPaint编辑遮罩。
因此,让我们看一下颜色匹配的结果。这是基本的方法做升力和增益。您可以使用3D LUT方法,该方法基于像素匹配基于左视图和右视图计算全局更新。因此,结果要好得多,但是在水面上的反射仍然有些变化。现在,我可以导出它并在Nuke的VectorField节点中使用它,因此我可以在没有Ocula的情况下应用该3D LUT,也可以在Nuke之外使用它。这是ColourMatcher结果,这是VectorField节点的结果,它们匹配。我们还可以进行局部校正以匹配此素材中水面上的反射。在这里,您可以看到结果:左视图和右视图匹配。现在,通过查看NewView中的色差,我们可以再次使用质量控制技术。因此,这是局部颜色校正的差异,现在我们可以返回并切换方法,并比较这些差异。有很大的变化基本的。最好搭配3D LUT,但是您可以看到与水面反射差异。最后, 本地匹配,可提供最佳结果。
让我们再看一个例子。在这张照片中,视图之间有一些极端的变化。从一个切换到另一个时,大区域不可见。在这里,您可以看到当我从左到右切换时,店面被遮盖了。让我们用NewView回顾素材。我要对左视图进行颜色匹配。因此,在这里,我想将右侧拉到左侧,然后将其与原始左侧进行比较。您可以看到它突显了店面。我们要使用OcclusionDetector来拾取该区域。现在让我们进行设置。我要切换到垫覆盖(M),您会看到它覆盖了整个店铺。虽然有一些孔和一些隔离的区域,但这些区域可能会闪烁,因此我们要删除它们并创建一个稳定的蒙版。我要切换到极端设置。这样可以扩展遮罩并填充孔以确保其稳定。现在,像以前一样设置阈值。我们只想在这里挑选店面。我可以切换到设定颜色阈值接下来,我要确保蒙版中没有任何会闪烁的孤立色块,从而导致颜色更新闪烁。所以,这看起来不错。现在,我在这里要做的另一件事是添加一个roto蒙版,以确保为镜头蒙版遮挡。我实际上可以在OcclusionDetector中关闭阈值,而只是使用roto。
现在,让我们看一下左视图的颜色校正。因此,在这里,我们有了基本的提升和收获。让我们切换以查看基于局部块的颜色匹配。现在,您可以在墙上看到一个黄色的条带。这是ColourMatcher补偿遮挡的地方。它查看蒙版外部的像素,并在蒙版内部提取颜色更新。这里的问题是它将更新从黑色区域拉到相邻的砖块中。我只需要扩大区域大小,它会搜索颜色更新,以便可以从其他积木中提取更新。您还可以通过减少彩色西格玛。现在,最后,您会发现茶壶内有一些深色条纹。发生这种情况是因为块跨越了明暗区域。我需要使用较小的块大小,因此更新范围较小。看起来不错您可以尝试调整多重采样选项,尤其是在帧之间更改校正有任何问题时;多次采样可以提高稳定性。现在,遮挡蒙版中仍然有一些我不满意的孤立区域。我现在要做的是切换到在该区域中使用3D LUT结果。这是3D LUT校正,看起来非常不错。因此,我所做的就是将遮挡遮罩改组为alpha,然后将其应用为遮罩,以选择遮挡遮罩内部的3D LUT校正以及外部的局部校正。在原始结果和最终结果之间进行切换,您可以看到它纠正了镜头中的一些阴影和反射。
因此,这将在ColourMatcher上总结本教程。我们已经研究过渲染出具有差异的遮挡遮罩,以用于颜色匹配。我们已经研究了本地色彩匹配和质量检查结果,特别是使用NewView在另一个视图之上重建一个视图以查看颜色差异。然后,我们看一个更详细的示例,以及如何设置遮挡,如何使用roto编辑它们,最后,我们看一个极端的遮挡示例以及如何调整颜色匹配参数,并在不同的颜色匹配之间切换结果。