ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Natron 中的 G‘MIC Smooth Median 节点:原理、参数详解与中值滤波实战指南

Natron 中的 G‘MIC Smooth Median 节点:原理、参数详解与中值滤波实战指南
  • 音视频
  • 视频处理
  • 图形学
  • 桌面应用

【免费下载链接】Natron

Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry.

项目地址:https://gitcode.com/gh_mirrors/na/Natron
点击查看免费下载

导读

G'MIC Smooth Median(节点标识eu.gmic.SmoothMedian)是 Natron 内置的 OpenFX-G'MIC 插件集合中的一个边缘保持平滑节点,用于对输入图像执行基于中值统计的降噪与细节平滑。本文以 eu.gmic.SmoothMedian.rst 为骨架,完整梳理该节点的输入接口、全部 13 个控制参数及其可选值,并结合仓库源码说明这类插件文档的生成机制,最后与 Natron 自带的 CImg Median 节点做对比,帮助合成师在节点图(Node Graph)中正确选择与调参。

节点概览:来自 G'MIC 框架的 Smooth Median

G'MIC Smooth Median由 David Tschumperle 编写(文档标注最新更新时间为 2010/29/12),是 G'MIC 开源图像处理框架在 Natron 中的包装(Wrapper)节点。根据文档原文,该包装由 Tobias Fleischer(reduxfx.com)与 Frederic Devernay 实现,底层复用 G'MIC 的图像处理能力。

在 Natron 中,这类插件以eu.gmic.*为插件标识前缀,统一收纳在GMIC 节点组中。仓库中的 _groupGMIC.rst 列出了该组下全部约 360 个节点(SmoothMedian 与 SmoothAbstract、SmoothAnisotropic、SmoothBilateral、SmoothDiffusion、SmoothGuided、SmoothNLMeans、SmoothSkin、SmoothTotalVariation 等同属 Smooth 系列),并从侧面说明 G'MIC 组是 Natron 节点面板中规模最大的滤镜集合之一。

从功能定位看,中值平滑(Median Smoothing)的核心思想是:对每个像素,取其邻域窗口内像素值的中位数作为输出,从而在有效抑制椒盐噪声、孤立异常点的同时,比均值模糊(Box Blur)更好地保留边缘与细节结构——这正是本节点名中 "Smooth" 与 "Median" 的组合含义。

输入接口(Inputs)

Input描述Optional
Source待平滑的图像源No(必选)

该节点只有一个必选输入Source,没有可选的 Mask 输入。这意味着它的作用域完全由自身的Channels参数决定(见下文),而不能像带 Mask 的节点那样通过遮罩限定处理区域。若需要区域化处理,可以将其与 Merge 类节点或 G'MIC 组的LocalProcessing节点组合使用。

控制参数详解(Controls)

以下是eu.gmic.SmoothMedian的全部控制参数。表格中的"脚本名称"(script name)即该参数在表达式、Python 脚本与工程文件中使用的参数名。

1. 核心平滑参数

参数 / 脚本名称类型默认值作用
Radius /RadiusInteger3中值滤波的邻域半径。数值越大,参与取中值的像素窗口越大,平滑强度越高,细节损失也越多;过小则降噪能力有限。
Threshold /ThresholdDouble255中值筛选阈值。用于控制仅在像素值与邻域中值相差不超过该阈值时才进行替换,从而保护接近中值的细节不被过度平滑;默认值 255 在 8bit 数值体系下相当于几乎不设限,即始终输出中值。

这两个参数共同决定了滤波的行为:Radius决定"看多大的邻域",Threshold决定"多大程度地信任这个邻域中值"。

2. 通道选择:Channels

参数 / 脚本名称类型默认值可选值
Channel(s) /ChannelsChoiceAll见下表(共 38 项)

Channels控制中值滤波作用的色彩空间与通道,是 G'MIC 插件中极具特色的参数。完整可选值如下:

  • 直接通道:All、RGBA [All]、RGB [All]、RGB [Red]、RGB [Green]、RGB [Blue]、RGBA [Alpha]
  • Linear RGB:Linear RGB [All]、Linear RGB [Red]、Linear RGB [Green]、Linear RGB [Blue]
  • YCbCr:YCbCr [Luminance]、YCbCr [Blue-Red Chrominances]、YCbCr [Blue Chrominance]、YCbCr [Red Chrominance]、YCbCr [Green Chrominance]
  • Lab:Lab [Lightness]、Lab [ab-Chrominances]、Lab [a-Chrominance]、Lab [b-Chrominance]
  • Lch:Lch [ch-Chrominances]、Lch [c-Chrominance]、Lch [h-Chrominance]
  • HSV:HSV [Hue]、HSV [Saturation]、HSV [Value]
  • HSI / HSL:HSI [Intensity]、HSL [Lightness]
  • CMYK:CMYK [Cyan]、CMYK [Magenta]、CMYK [Yellow]、CMYK [Key]
  • YIQ:YIQ [Luma]、YIQ [Chromas]
  • RYB:RYB [All]、RYB [Red]、RYB [Yellow]、RYB [Blue]

实际调参建议:

  • 只想去除亮度噪声、保留色彩时,选择YCbCr [Luminance]或Lab [Lightness],可避免色度抖动;
  • 只想平滑某个单通道(如 Alpha 遮罩的毛边),选择RGBA [Alpha];
  • 需要高保真、符合线性工作流时,选择Linear RGB [All],避免在伽马空间平滑带来的亮度偏移——这与 Natron 32 位浮点线性渲染管线(见 getstarted-about-features.rst 中关于 32 bits floating point linear color processing pipeline 的说明)的取向一致。

3. 预览控制

参数 / 脚本名称类型默认值可选值
Preview Type /Preview_TypeChoiceFull13 项
Preview Split /Preview_SplitDoublex: 0.5 y: 0.5—

Preview_Type决定对比预览的分割方式,用于在 Viewer 中直观对照"处理前 / 处理后":

  • Full:全幅显示处理结果;
  • Forward Horizontal / Forward Vertical / Backward Horizontal / Backward Vertical:以左右/上下分割线显示,一侧为原图、一侧为结果(方向代表原图所在侧);
  • Duplicate Top / Left / Bottom / Right / Horizontal / Vertical:拼接重复显示,适合观察平铺纹理;
  • Checkered / Checkered Inverse:棋盘格交错对比,适合逐块审视细节差异。

Preview_Split为双值参数(x 与 y),默认x: 0.5 y: 0.5,即分割线位于画面中心;将其调整为其他比例可把分割线移动到细节关键区域。

4. 输出与缩放

参数 / 脚本名称类型默认值可选值
Output Layer /Output_LayerChoiceLayer 0Merged、Layer 0、Layer -1 … Layer -9
Resize Mode /Resize_ModeChoiceDynamic6 项
  • Output_Layer:当输入图像包含多个图层时(如 PSD 导入),选择输出哪个图层。Merged输出合并结果,Layer 0输出第一个图层,Layer -1至Layer -9按倒序选择。
  • Resize_Mode:控制处理时的缩放策略,影响渲染速度与精度:
    • Fixed (Inplace):固定分辨率原位处理;
    • Dynamic:动态计算(默认,兼顾质量与性能);
    • Downsample 1/2 … 1/16:逐级降采样后处理再放大,适合在低分辨率下快速预览大图效果,可显著加速调参迭代。

5. 行为开关

参数 / 脚本名称类型默认值作用
Ignore Alpha /Ignore_AlphaBooleanOff开启后忽略 Alpha 通道,只对颜色通道做中值平滑,避免边缘半透明像素被错误混色。
Preview/Draft Mode /PreviewDraft_ModeBooleanOff开启草稿模式,以较低质量快速刷新预览,用于调节参数时的实时响应。
Global Random Seed /Global_Random_SeedInteger0全局随机种子。若滤波内部涉及随机采样(G'MIC 部分算法含随机过程),可固定种子保证结果可复现。
Animate Random Seed /Animate_Random_SeedBooleanOff开启后随机种子随时间变化,用于生成动态噪声/纹理效果;SmoothMedian 本身是确定性滤波,此参数主要与其他含随机性的 G'MIC 节点通用。
Log Verbosity /Log_VerbosityChoiceOff控制 G'MIC 引擎日志输出级别,可选 Off、Level 1、Level 2、Level 3,级别越高输出越详细,便于排查滤镜执行问题。

实战工作流:在节点图中使用 Smooth Median

以下流程适用于 Natron 的 GMIC 组操作方式(GMIC 组入口见 _groupGMIC.rst 的说明:节点组可通过左侧工具栏按钮或节点图区域右键菜单访问):

  1. 创建节点:在左侧工具栏或节点图右键菜单中打开GMIC组,选择SmoothMedian(或通过节点搜索框输入SmoothMedian/eu.gmic.SmoothMedian),节点即加入节点图。
  2. 连接输入:将素材/上游节点的输出连接到节点的Source输入;若当前选中了某个节点,新节点会被插入其下游。
  3. 预览调参:在属性面板(Settings Panel)中调整Radius、Threshold,并在 Viewer 中开启Preview_Type(推荐Checkered或Forward Horizontal)对比效果,用Preview_Split移动分割线。
  4. 选择作用通道:若只降噪不损细节色彩,选YCbCr [Luminance]或Lab [Lightness];若处理 Alpha 遮罩,选RGBA [Alpha]。
  5. 性能优化:大图调参时可将Resize_Mode设为Downsample 1/2或更低,并开启PreviewDraft_Mode;最终输出前恢复Dynamic/Full。
  6. 脚本化:所有参数均有脚本名(如Radius、Threshold、Channels、Preview_Type),可在 Natron 的 Python 脚本或表达式中直接引用,便于搭建可复用的降噪模板。

与 Natron 内置 CImg Median 节点的对比

Natron 仓库还自带一个更轻量的中值滤波节点net.sf.cimg.CImgMedian(文档见 net.sf.cimg.CImgMedian.rst),两者差异可归纳为:

维度G'MIC Smooth Median (eu.gmic.SmoothMedian)CImg Median (net.sf.cimg.CImgMedian)
底层库G'MIC 框架CImg 库的blur_median
输入仅 Source(必选)Source(必选)+ Mask(可选)
核参Radius + ThresholdSize + Threshold
通道控制38 种色彩空间/通道组合逐通道处理,无色彩空间选择
附加能力预览分割、图层输出、降采样、随机种子等(Un)premult、Invert Mask、Mix 混合

简言之:需要遮罩区域控制、前后混合(Mix)或对预乘 Alpha 图像处理时,选 CImg Median;需要多色彩空间通道选择、图层输出、对比预览与降采样加速时,选 G'MIC Smooth Median。CImg Median 的size参数采用2*size+1的核宽公式,而 G'MIC 版本直接以Radius表达邻域半径,语义上更直观。

源码视角:这类插件文档是如何生成的

eu.gmic.SmoothMedian.rst本身带有 HTML 注释标记Do not edit this file! It is generated automatically by Natron itself.,即该文档由 Natron 从插件运行时元数据自动生成,而非手写维护。这解释了为何文档结构高度统一(Description → Inputs → Controls 表格)。

仓库中相关实现证据:

  • NodeDocumentation.cpp 负责在运行时遍历插件的输入与参数(Knob),将类型、默认值、选择项等序列化为 Markdown/HTML,再经 pandoc 等工具转换为本仓库中的 reStructuredText 文档;
  • AppInstance.cpp 中的AppInstance::exportDocs按分组顺序导出全部插件文档,其中groups << QString::fromUtf8("GMIC"); // openfx-gmic明确了 GMIC 组的导出路径,_groupGMIC.rst中的 toctree 即由此生成;
  • getstarted-about-features.rst 将 OpenFX-G'MIC 列为 Natron 支持的免费开源 OpenFX 插件之一。

这意味着:文档中任何表格内容都与插件实际暴露的 OFX 参数一一对应,读者在属性面板中看到的参数、脚本名与可选值,与本文表格完全一致,可放心按脚本名编写自动化脚本。

小结

G'MIC Smooth Median是一个结构简单(单输入、13 个参数)但能力全面的中值平滑节点:Radius与Threshold构成核心降噪控制,Channels提供覆盖 RGB、Lab、YCbCr、HSV、CMYK、RYB 等 38 种色彩空间/通道的目标选择,配合预览分割、图层输出与降采样模式,使其既适合精细的通道级降噪,也适合大图的快速预览迭代。其文档由 Natron 自动生成,参数信息与插件实际行为严格一致,可作为脚本化调参与模板搭建的可靠依据。

进一步阅读:

  • SmoothMedian 节点原始文档
  • GMIC 节点组总览
  • 同组 Smooth 系列示例:SmoothBilateral
  • 可对比的 CImg Median 节点
  • G'MIC 背景与自定义滤镜说明
  • 文档生成相关源码:NodeDocumentation.cpp、AppInstance.cpp
  • 音视频
  • 视频处理
  • 图形学
  • 桌面应用

【免费下载链接】Natron

Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry.

项目地址:https://gitcode.com/gh_mirrors/na/Natron
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进