Nodes/VELVET VICE — LTX/VELVET VICE LTX — Ghost Analyzer
ComfyUI Node

VELVET VICE LTX — Ghost Analyzer

Find the ghost frames in your RIFE-smoothed clip before you ship it

By Velvet-Vice·Created 25 days ago·Updated 10 days ago· 2
VELVET VICE LTX — Ghost Analyzer
  • images
  • ghost_analysis
  • ghost_mask
  • mask_preview
  • average_score
  • maximum_score
  • analysis_report
modeSOURCE 24 FPS
profileSAFE
frame_rate24
sensitivity1.00
analysis_long_edge256
motion_search_radius5
minimum_ghost_area24
scene_cut_protectiontrue
scene_cut_threshold0.24
analysis_chunk_size4
memory_modeAUTO

Ghosting is the classic frame-interpolation artifact: you insert synthetic frames between real ones, motion gets blurred or double-exposed, and the clip looks like it's trailing smoke. You can't always see it on a 720p preview, but it's unmistakable on the final render. VelvetViceLTXGhostAnalyzer is the pack's experimental tool for finding those frames automatically - it's a motion-compensated temporal ghost detector that runs on a low-res copy of your clip, never touches the original frames, and hands you a mask, scores, and a report.

How it works

The pipeline, roughly: it downscales your clip to a bounded analysis resolution (default 256px on the long edge) and converts to grayscale - that's why it's fast even on long clips; it's analyzing thumbnails, not pixels. Then it walks frame pairs, compensating for motion (a motion search with a configurable radius) and measuring how much each interior frame deviates from what the motion model predicts. Deviations above a threshold are flagged as ghosting.

Three things keep it from crying wolf:

  • Endpoints are protected - the first and last frames are never analyzed (they have no full motion context).
  • Scene cuts are protected - scene_cut_protection (default on) measures inter-frame change, and frames adjacent to a hard cut (above scene_cut_threshold, default 0.24) are skipped, because a cut looks like a huge "ghost" to a naive detector.
  • minimum_ghost_area filters out tiny blips so noise doesn't register.

The profile sets the detection threshold - SAFE (0.08), BALANCED (0.06), STRONG (0.043) - and sensitivity (default 1.0) divides it, so higher sensitivity catches more. The mode matters for interpolated clips: SOURCE 24 FPS analyzes the interior frames of your original clip; RIFE INSERTED FRAMES analyzes only the odd-indexed frames - i.e., the ones RIFE inserted - which is the whole point if your ghosting came from interpolation.

Inputs and outputs

The important ones:

  • images - the frame batch.
  • mode - SOURCE 24 FPS or RIFE INSERTED FRAMES. Pick by whether your clip is interpolated.
  • profile / sensitivity - detection aggressiveness.
  • frame_rate, analysis_long_edge (128–512), motion_search_radius (1–12), minimum_ghost_area, scene_cut_protection / scene_cut_threshold, analysis_chunk_size (1–16), memory_mode (AUTO / GPU / CPU) - the rest of the tuning.

Outputs: ghost_analysis (a custom VELVET_VICE_GHOST_ANALYSIS object for the pack's anti-ghost nodes), ghost_mask (MASK), mask_preview (IMAGE), average_score and maximum_score (FLOATs - the headline numbers), and analysis_report (STRING).

Where it fits

It's in the Experimental category for a reason - it's a diagnostic, and the pack pairs it with VelvetViceLTXTemporalAntiGhost (the fixer). In practice: run the analyzer on your final frames, look at maximum_score and the mask preview, and if the ghosting is real, route the mask into the anti-ghost pass before encoding. If the score is low, your clip is clean and you skip the fix. It's a "measure, then act" node rather than a blind cleanup.

Installing it

Part of VELVET VICE - LTX (velvet-vice-ltx) via ComfyUI Manager, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Velvet-Vice/velvet-vice-ltx

Restart and hard-refresh with Ctrl+F5. No pip deps.

Gotchas

  • It never modifies your input. Feed it anything; the frames come back untouched - the outputs are analysis, not processed video.
  • Low-res analysis can miss fine ghosting. 256px is a thumbnail; hair-thin artifacts might not register. Bump analysis_long_edge if you suspect false negatives.
  • STRONG profile on noisy footage = false positives. Start SAFE, look at the mask, then tighten.
  • It's experimental. Version 0.2.0, niche pack, essentially no community feedback to lean on. Treat scores as a signal, not a verdict.

For anyone who's ever shipped a video with a muddy RIFE frame in the middle, this is a genuinely useful second set of eyes - and at 256px it costs seconds to run.

CategoryVELVET VICE/LTX/Experimental

Inputs (12)

NameTypeDefaultDescription
imagesIMAGE
modeCOMBOSOURCE 24 FPS2 options: SOURCE 24 FPS, RIFE INSERTED FRAMES
profileCOMBOSAFE3 options: SAFE, BALANCED, STRONG
frame_rateFLOAT241–240
sensitivityFLOAT1.000.25–2
analysis_long_edgeINT256128–512
motion_search_radiusINT51–12
minimum_ghost_areaINT241–512
scene_cut_protectionBOOLEANtrue
scene_cut_thresholdFLOAT0.240.05–0.75
analysis_chunk_sizeINT41–16
memory_modeCOMBOAUTO3 options: AUTO, GPU, CPU

Outputs (6)

NameTypeDescription
ghost_analysisVELVET_VICE_GHOST_ANALYSIS
ghost_maskMASK
mask_previewIMAGE
average_scoreFLOAT
maximum_scoreFLOAT
analysis_reportSTRING