用途:对视频或图像进行可量化的色彩诊断与修复,用数据而非肉眼判断画面是否“发灰”。核心流程为:抽帧 → get_image(action:"analyze_color")→ 读取黑/白点、对比度、饱和度 → 依据数据选择修复 → 复测确认。
主要能力:get_image(action:"analyze_color")为只读工具,来源可为 asset_id、ComfyUI 输出引用(文件名/子目录/类型)或图像路径,返回每图统计、启发式标记、单行结论,可选叠加 R/G/B/luma 直方图 PNG。示例调用:
get_image({ action: "analyze_color", filename: "render_00007_.png" }) get_image({ action: "analyze_color", path: "frame.png", reference_path: "src.jpg" }) get_image({ action: "analyze_color", filename: "x.png", histogram: true })
该工具只支持图像,不支持视频,需先用 ComfyUI venv 的 cv2 抽中间帧: "<comfy-venv>/python" -c "import cv2; c=cv2.VideoCapture(r'IN.mp4'); n=int(c.get(7)); c.set(1, n//2); _,f=c.read(); cv2.imwrite(r'frame.png', f)"
关键读数(8 位):luma.blackPoint(第1百分位,健康约0–16)、luma.whitePoint(第99百分位,约240–255)、luma.contrast(标准差,约45以上)、saturation.meanSaturation(约0.25以上)、channels 的 RGB 均值与 castHint(差值小于约12为中性)、clippedHighPct/LowPct(保持较低)。标记包括 washedOut、lowContrast、liftedBlacks、dimHighlights、lowSaturation、colorCast。
发灰的典型特征:白点明显低于255、黑点被抬起、对比度偏低,饱和度往往正常,此时应做色阶/对比度拉伸而非色彩匹配。参考匹配无法为源本身缺乏的对比度补足;若参考也偏平,匹配后同样偏平。
修复:AdjustContrast(核心节点)用单一 factor 围绕中灰枢轴调整,1.0 为不变。按实测扫描选取使 whitePoint 约248–255、clippedHighPct 低于约2% 的因子,过大会过曝并加剧偏色。需要更精细控制可用 CurveEditor 曲线,之后再小幅调整饱和/亮度。
沙盒模式:新建小型工作流,一次运行输出多个候选(如 AdjustContrast 1.3、1.6 与 ColorMatchV2、ImageColorMatchAdobe+),逐个测量比较后插值,再复测确认。帧需先复制到 ComfyUI 输入目录。
视频注意:长视频可能按时间窗口漂移,需分别测首窗与后窗帧;Relight LoRA 不改变黑白点;避免过度拉伸导致高光不可恢复;若参考本身有相同色偏,渲染继承该色偏属正常。
限制:该工具有效范围为图像;视频须先抽帧;路径依赖实际输入输出目录,文中未提供完整安装与依赖说明。