Nodes/ComfyUI-StableManifoldCompander/Stable Manifold Recombine
ComfyUI Node

Stable Manifold Recombine

The inverse of the split — and your 'detail back on top' knob

By xmarre·Created 6 months ago·Updated 6 months ago· 0
Stable Manifold Recombine
  • low
  • high
  • mask
  • base_image
  • image
high_strength1.00

StableManifoldRecombine is the mirror of StableManifoldLowHighSplit. Give it a low band and a high band and it stacks them back into one image - with one extra knob that makes it worth having: high_strength, which scales how much detail comes back.

That single control is the reason you'd reach for it. In the affine workflow you often end up with a corrected low band (structure pulled back toward the anchor) and an untouched high band (detail). Recombining at strength 1 is a perfect round-trip - the exact inverse of the split. Drop it to 0.5 and you're softly dialing detail back, which is a subtle way to calm a noisy or overcooked correction; push past 1 and you're boosting texture. It's also the natural place for a sanity check: split → recombine with defaults should hand you back the original image. If it doesn't, something upstream is miswired.

The optional inputs give it a second life as a regional blend. Pass a mask and the recombined result is applied only where the mask is set; everywhere else shows base_image, which defaults to low if you don't supply one. So you can re-attach corrected detail inside a masked region - say a face crop - while the surrounding image stays untouched. That's the same idea the pack's crop workflow formalizes with SMC Composite Crop, just hand-rolled from two bands.

Inputs: low (IMAGE), high (IMAGE), high_strength (default 1, range 0–4), plus optional mask (MASK) and base_image (IMAGE). One output: image.

Installing

ComfyUI Manager - search "ComfyUI-StableManifoldCompander" - or the manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/xmarre/ComfyUI-StableManifoldCompander

Restart after cloning and keep the default folder name (the README's hyphenated variant doesn't match the module path). No model files, no extra Python dependencies - this is a few lines of tensor math. Only the pack's detailer hook additionally wants Impact Pack.

Gotchas

Three things to know. First, high_strength 0 with no mask just hands you the low band - that's by design, not a bug. Second, the high band from the split is a residual centered near zero, so feeding Recombine a "gray-looking" high image is expected; at strength 1 it reconstructs cleanly. Third, the node resizes high to match low before adding, so if your bands came from different resolutions it silently conforms rather than erroring - which is friendly, but means a size mismatch won't be flagged.

Like the split, this is a small pure-math utility in a young pack. There's not much that can break, and the main risk is wiring - which the round-trip sanity check catches in about ten seconds.

CategoryStableManifoldCompand/Affine

Inputs (5)

NameTypeDefaultDescription
lowIMAGE
highIMAGE
high_strengthFLOAT1.000–4
maskoptMASK
base_imageoptIMAGE

Outputs (1)

NameTypeDescription
imageIMAGE