Intensity Depth Estimation
The depth node that doesn't actually know what depth is — and why that's the point
- image
- depth_image
The name is a lie, and the lie is the feature
Intensity Depth Estimation doesn't run MiDaS, Depth Anything, or any learned model. It does zero inference, downloads no weights, needs no API key - it just reads the brightness of each pixel and calls that "depth." White becomes near, black becomes far, and you're done.
So why would you reach for it? Because its home is video-to-video, specifically the Wan2.2-VideoReRender stylization workflow this pack ships with. When you're re-rendering a video in a new style, you want a depth guide that tracks every frame. A real depth model per frame is slow, and frame-by-frame estimates from image models flicker (the depth-estimation panel calls this out - video wants a video-native model like DepthCrafter, or it shimmers). Fake depth is instant, deterministic, and mathematically identical on every frame, which is exactly what a VACE or ControlNet-style condition wants from a cheap guide. It's the node you pick when the depth map is scaffolding, not content.
In the actual VideoReRender workflow, GetVideoComponents feeds frames in here, the depth_image goes straight into the control-conditioning node, and a PreviewImage lets you eyeball it. Fast, free, wired up.
How it actually works
Read the source and it's refreshingly small. The image tensor gets converted to grayscale with the classic Rec.601 weights (0.299 R + 0.587 G + 0.114 B). Then one of four method modes:
- intensity - brightness is depth, as-is.
- inverted_intensity - dark is near, light is far.
- gradient - inverts the gradient magnitude, so flat regions read as near and edges become dark "far" contours.
- sobel - same idea via a Sobel edge filter, which gives you the "detailed object boundaries" the pack advertises: crisp, slightly thicker contours than the raw gradient.
Both edge modes deliberately invert the edge map so object outlines show up as dark lines the condition can latch onto. Finally the map is scaled by depth_range, optionally normalized to 0–1, blurred if asked, and replicated across three channels so the output is a normal RGB-format IMAGE that any depth-control node will accept.
The inputs that matter
Beginners set three things:
- method - start with
intensityand flip toinverted_intensityif your near objects come out black. - blur_radius (optional, default 1) - smooths the map and softens noise on compression-heavy video frames. Crank it up if the depth map looks grainy.
- normalize (default on) - rescales to full 0–1 range. Leave it on; with it on,
depth_rangeeffectively does nothing, so don't chase that slider expecting a visible change.
The output is a single depth_image (IMAGE) that wires into the conditioning node's depth input, or into any depth ControlNet you're feeding.
Install
Two clicks or one command. Via ComfyUI Manager, search "Intensity Fake Depth Node". Or:
cd ComfyUI/custom_nodes
git clone https://github.com/zengxianyu/ComfyUIIntensityDepth
Restart ComfyUI and it's in the menu under image/processing. There is no requirements.txt and no model download - it only uses torch, numpy, and PIL, all already present in ComfyUI. This is about the lightest install in the entire ecosystem.
When to be honest with yourself
The catch: brightness is not geometry. A bright sky reads as the nearest thing in the frame, a dark object in front of a lit background gets pushed back. For real scenes, a real estimator (Depth Anything V2 via Kijai's nodes) is the correct tool. But for stylized video-to-video where you need a stable, boundary-rich guide that won't cost you 10 seconds a frame, this little fake is genuinely the one you'd reach for.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input image for depth estimation | |
| method | COMBO | intensity | Depth estimation method |
| depth_range | FLOAT | 1.00.1–10 | Maximum depth range |
| normalize | BOOLEAN | true | Normalize depth values to 0-1 range |
| blur_radiusopt | FLOAT | 1.00–10 | Gaussian blur radius for smoothing |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| depth_image | IMAGE | — |