To Unsigned Image
The mode dropdown that decides how your signed data becomes an image
- signed_image
- image
Everything that goes into the signed domain eventually has to come back out, because the standard IMAGE socket is where every ordinary node - Preview Image, Save Image, compositing - lives. To Unsigned Image is the way back: it takes a SIGNED_IMAGE (zero-centered, nominally -1..1) and returns a normal IMAGE in 0..1. It's the reverse of To Signed Image, and it's the node in this pack with the most actual thought in it, because there are three defensible ways to do the conversion and they show you completely different things.
The one widget that matters: mode. This dropdown is the whole node. Three choices:
clamp(default) - the sign-preserving one.-1..1maps linearly to0..1, zero lands on mid-gray, and out-of-range values clip. Use it when the sign of your data means something and you want to keep it - a difference map where bright means "edge one way" and dark means "edge the other". It is also, by design, the exact inverse ofTo Signed Image, soclampis the mode for a lossless round trip.abs- magnitude only.0→ black,±1→ white, sign discarded. Use it when you care that something happened, not which direction. This is the mode for edge and detail maps: both sides of an edge light up, and subtle high-frequency content that looks like flat gray underclampbecomes visible. The pack's own unsharp-mask sample workflow previews inabsmode for exactly this reason.minmax- a per-image contrast stretch. Each image's own minimum → 0, maximum → 1. It ignores the-1..1convention entirely, so it's great for data with a huge dynamic range that would otherwise be a barely-visible sliver underclamporabs- and misleading anywhere the absolute distance from zero matters, because every image gets remapped independently. Constant images (max == min) fall back to neutral gray rather than black, so they don't crash.
The beginner trap, concretely. The default is clamp, and under clamp a subtle signed detail map renders as almost-flat mid-gray. People stare at that, conclude the pipeline is broken, and rebuild it. It isn't broken - zero is gray, and your signal is just small relative to the -1..1 range. Flip to abs to see the magnitude, or minmax to see the structure. Understanding the three modes up front will save you the "why is everything gray" panic that this pack's whole design anticipates.
Inputs and output. Required signed_image (SIGNED_IMAGE) plus the mode enum; output image (IMAGE), which wires straight into Preview Image, Save Image, or any standard consumer. Under the hood the conversion scrubs NaN/Inf to zero first, so a filter that diverged won't crash the node - it'll just hand you gray where the math went bad. That's a feature: it turns numerical blowups into something you can see.
Install. Same lightweight story as the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/NobutakaKuroki/comfyui-signed-image
Restart ComfyUI. No extra Python dependencies and no models to download. ComfyUI Manager users: search "comfyui-signed-image".
One last practical note: if you just want to look at a signed image, Preview Signed Image is this node and a preview combined, so you don't need both. Reach for To Unsigned Image when the converted IMAGE is going somewhere - a save, a composite, another pack - rather than just being displayed.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| signed_image | SIGNED_IMAGE | — | |
| mode | COMBO | clamp | 3 options: clamp, abs, minmax |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |