Nodes/ComfyUI-Dream-Interpreter/Repair Panorama Seam
ComfyUI Node

Repair Panorama Seam

Kill the seam on your 360° image

By gokayfem·Created 2 years ago·Updated about a month ago· 85
Repair Panorama Seam
  • panorama
  • seam_repaired
  • seam_proof
  • report
blend_width48

Every equirectangular image has a seam: the place where the left edge meets the right edge and wraps around the world. Generated panoramas usually have a visible discontinuity there - one row of pixels where the two ends don't line up. Repair Panorama Seam (DreamPanoramaSeamBlend) crossfades that seam so the wrap looks continuous, and it gives you a magnified proof strip so you can actually check the fix instead of trusting it. It's the polite cleanup step between generating a panorama and projecting it into a camera view, a little planet, or the interactive viewer.

How it works

Straightforward linear crossfade, done in numpy. It takes the first blend_width columns and the last blend_width columns and blends each mirrored pair together with a linear weight ramp, so the two edges dissolve into each other instead of abutting. The blend is capped at a quarter of the image width so you can't accidentally smear a huge chunk of the picture. Then it rolls the result so the (former) seam lands dead center, crops a strip about six times the blend width wide, and hands you that as seam_proof - a magnified look at exactly the region you care about. You also get a JSON report with the seam error before and after (mean absolute difference between the edge columns), so you can see the fix working in numbers.

This is a smoothing operation, not a content-aware repair. If the two edges genuinely show different content, blending softens the boundary but can't invent a seamless transition - that's a job for inpainting or regenerating with a proper 360 model. The README is upfront that repair tools can't create missing scene content.

Inputs and outputs

  • panorama - your equirect IMAGE.
  • blend_width (1…512, default 48) - how wide the crossfade zone is in pixels. Small seams want small values; a stubborn mismatch may want more. The sweet spot depends on your source resolution, which is why the proof strip exists.

Outputs: seam_repaired (the image to actually use downstream), seam_proof (the magnified proof strip - look at it), and report (the before/after JSON string).

Installing it

Part of the shared pack - ComfyUI Manager (search ComfyUI-Dream-Interpreter) or:

cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI-Dream-Interpreter.git
python -m pip install -r requirements.txt

Restart ComfyUI. Only numpy and Pillow required, no models to fetch. The node sits under panorama/dream toolkit.

Where people get burned

The classic mistake is cranking blend_width way up hoping to erase a bad seam, and ending up with a soft smeared blur on both edges - the cap at width/4 stops the worst of it, but the honest fix for a big mismatch is to sort the source out (inpaint the seam region, or generate with a 360-aware model). The other habit worth building: actually wire seam_proof to a preview. It's the entire reason the node hands it to you. If the proof strip looks clean, you're done; if not, adjust and re-run before you project anything. The proof is a centered strip after the roll, so it always shows you the seam zone at a readable scale.

Categorypanorama/dream toolkit

Inputs (2)

NameTypeDefaultDescription
panoramaIMAGE
blend_widthINT481–512

Outputs (3)

NameTypeDescription
seam_repairedIMAGE
seam_proofIMAGE
reportSTRING