Nodes/ComfyUI_Isulion Random Prompt Generator/๐Ÿ”’ Isulion Censored Part
ComfyUI Node

๐Ÿ”’ Isulion Censored Part

Blur Out the Bit You Can't Post

By IsulionยทCreated 2 years agoยทUpdated 22 days agoยท 44
๐Ÿ”’ Isulion Censored Part
  • image
  • mask
  • image
  • censor_mask
โ—„censor_modeโ–พโ–บ
โ—„blur_strength15.0โ–บ
โ—„pixel_size5.0โ–บ
โ—„use_region_rectfalseโ–บ
โ—„region_x25.0โ–บ
โ—„region_y25.0โ–บ
โ—„region_width50.0โ–บ
โ—„region_height50.0โ–บ
โ—„grow_region0.0โ–บ
โ—„invert_regionfalseโ–บ
โ—„feather_edge4.0โ–บ
โ—„noise_seed0โ–บ

Sooner or later you generate something you're happy with and can't post as-is. A watermark you don't want to advertise, a face in a photo, anatomy that isn't going to survive a platform's review. You can open the PNG in an image editor and blur it by hand, or you can put this node between your sampler and your SaveImage and have the censored version be the only version that ever touches disk.

It's an in-graph obfuscation node: five effects, two ways to pick the region, and a second output that turns out to be the actually interesting one.

How it works

Two selection sources, combined as a union. You can feed it a mask - painted in ComfyUI's MaskEditor, or produced by any segmentation node - and/or switch on use_region_rect and describe a rectangle with four percentage sliders. If neither source selects anything, the entire image gets censored. That's deliberate, and it's also the first trap you'll hit.

From there the selection is grown or shrunk by grow_region (a morphological dilate/erode), optionally inverted, and feathered by a Gaussian blur of the mask itself. The result is an alpha you can think of as "how much effect to apply here," and the node linearly blends the original against the effect: image * (1 - alpha) + censored * alpha.

One design choice deserves credit. If anything throws partway through a batch item, the node blacks that frame out entirely and outputs an all-ones mask. A censoring node that fails open is worse than one that fails loudly.

The sliders are percentages, and the defaults are aggressive

This is the thing that confuses everyone and it's all in the arithmetic: every distance is a fraction of the image's short side, not a pixel count.

  • blur_strength 15 becomes a Gaussian sigma of roughly 77 px on a 1024-wide image.
  • pixel_size 5 makes mosaic blocks around 51 px across - 5% of the short side, not five pixels.
  • feather_edge 4 softens the mask edge over about 20 px.
  • grow_region is a percentage too, ยฑ50 from a neutral zero.

So the stock settings are not gentle. If your first run looks like a smear from orbit, that's why, and the fix is a smaller number rather than a different mode.

Inputs and outputs

  • image - required, any batch.
  • censor_mode - blur, pixelate, pixelate+blur, black_bar, noise. Blur and pixelate are obfuscation; black bar and seeded TV-static noise are genuinely irreversible.
  • blur_strength, pixel_size, noise_seed - noise reseeds per frame (seed + index), so a static fill animates across a batch instead of freezing into a single grain pattern.
  • use_region_rect plus region_x, region_y, region_width, region_height - the rectangle, in percent. Unlike MaskEditor this works on images that were never saved to disk, so you can censor the output of a sampler, a video frame, anything.
  • grow_region, invert_region, feather_edge - selection shaping.
  • mask - optional MASK. A single mask broadcasts across the whole batch; a mismatched resolution gets bilinearly resized to fit.

Outputs are image (the censored IMAGE) and censor_mask (MASK, 1 where the effect landed). The mask is the sleeper feature: it's a ready-made inpaint mask, so the same node can blur a region and hand you the exact region to regenerate later. Wire it into VAEEncodeForInpaint or InpaintModelConditioning and you have a two-stage workflow - post a censored preview, then rework the area properly.

One habit worth keeping: don't let this be the only copy of your pixels. Branch the graph, or SaveImage the clean version upstream. The effects are applied to the tensor, and black_bar isn't coming back.

Installing it

Part of the Isulion pack, so one install covers this and every other node in it.

ComfyUI Manager โ†’ Custom Nodes Manager โ†’ search Isulion โ†’ install โ†’ restart. Or:

cd your_ComfyUI_install_dir/custom_nodes
git clone https://github.com/Isulion/ComfyUI_Isulion

Restart and hard-refresh the browser. Nothing to download, nothing to configure - it's all torch tensor maths, no model and no detector.

Where it breaks

"My entire image is black." You're in black_bar, use_region_rect is off, and no mask is connected - so the node defaulted to censoring the whole frame. Enable the rectangle or connect a mask.

"My mask does nothing." A mask at the wrong resolution is resized rather than rejected, so a wildly wrong aspect ratio can land the region somewhere you didn't paint. Feed it a mask derived from the same image, and expect feather_edge at 4 to already be a soft edge - the inpainting world's usual starting point for a mask blur is 4โ€“12 px on the mask, and this is a percentage on top of that.

The honest summary: this is a small, focused node that does one job with no dependencies and fails safely. If you're going to use it regularly, spend the two minutes learning that the numbers are percentages - after that it behaves.

CategoryIsulion/Image

Inputs (14)

NameTypeDefaultDescription
imageIMAGEโ€”
censor_modeCOMBO5 options: blur, pixelate, pixelate+blur, black_bar, noise
blur_strengthFLOAT15.00โ€“100โ€”
pixel_sizeFLOAT5.00.5โ€“50โ€”
use_region_rectBOOLEANfalseโ€”
region_xFLOAT25.00โ€“100โ€”
region_yFLOAT25.00โ€“100โ€”
region_widthFLOAT50.00โ€“100โ€”
region_heightFLOAT50.00โ€“100โ€”
grow_regionFLOAT0.0-50โ€“50โ€”
invert_regionBOOLEANfalseโ€”
feather_edgeFLOAT4.00โ€“100โ€”
noise_seedINT00โ€“18446744073709550000โ€”
maskoptMASKโ€”

Outputs (2)

NameTypeDescription
imageIMAGEโ€”
censor_maskMASKโ€”