edges

edges · effects · schema v1

Per-frame Sobel edge-detection video PROCESSOR. Takes a video input, runs a 3×3 Sobel operator on its per-pixel Rec. 601 LUMINANCE (gradient magnitude = sqrt(Gx²+Gy²), normalised so a unit luma step reads ~1.0), and emits a MONO-VIDEO frame: white where an edge was detected, black everywhere else. STATELESS per frame — the detected edges move/transform live with the source (no feedback, no history). THRESHOLD (0..1, default 0.2) gates which gradients count as edges (below → black; raise it to keep only the strongest contours, lower it to let faint gradients through). THICKNESS (1..8 px, default 2) DILATES the detected edge mask (morphological MAX over a square neighbourhood of radius thickness-1 texels) so a 1px edge renders up to `thickness` px wide; thickness=1 is the raw edge. IN takes RGB; OUT is mono-video (white edges on black) — patch it into OUTPUT, a video mixer, COLORIZER (mono→video upcast), or back into another video module as a key mask. THRESHOLD + THICKNESS each have a matching CV input (port id == param id). Pairs well with a moving source (CAMERA / VIDEOBOX / SHAPES) for live rotoscoped outlines.

edges is a stateless Sobel edge-detector for video: it runs a 3x3 luminance gradient (Rec. 601 luma) over the incoming frame and emits a high-contrast mono-video frame that is white wherever a brightness edge was found and black everywhere else. The detection has no feedback or history, so the white outlines track and morph live with whatever moves in the source. After the threshold test it morphologically dilates the mask (max over a square neighbourhood) so 1px contours render as fatter strokes. Use it to pull line-art/outlines from a camera or any video source, feed a key/mask downstream, or stack it with a colorizer for a glowing-wireframe look; if you get too much speckle raise thresh, if outlines are too thin raise thick.

the faceplate

edgesinvideothresholdcvthicknesscvoutmono-videoaudiocvgatepitch
3 inputs · 1 outputs · 2 params

inputs

idcablewhat it does
invideoThe video frame to edge-detect. Its per-pixel Rec. 601 luminance is run through the 3x3 Sobel operator; with nothing patched here the output is solid black.
RGB video stream
thresholdcvCV input that modulates Thresh — raising it via CV keeps only the strongest gradients (fewer white pixels), lowering it lets faint edges through. Linear-scaled into the 0..1 control range.
control voltage (CV); modulates threshold (additive offset — ±1 CV sweeps the full range, centered on the knob)
thicknesscvCV input that modulates Thick — drives the rendered edge width / dilation radius in pixels. Linear-scaled into the 1..8 px control range and clamped so it cannot blow up the dilation loop.
control voltage (CV); modulates thickness (additive offset — ±1 CV sweeps the full range, centered on the knob)

outputs

idcablewhat it does
outmono-videoA mono-video frame of white edges on a black background (all three RGB channels written to the same value, so plain video consumers also see white).
mono video stream

params

idlabelrangedefaultcurve
thresholdThresh0..1linear
thicknessThick1..?pxlinear

controls

controlwhat it does
ThickThick is the rendered edge width in pixels (1..8 px, default 2). 1 px is the raw single-texel edge with no dilation; higher values dilate the mask by taking the max over a square neighbourhood of radius round(thickness)-1, fattening the strokes up to the set width.
ThreshThresh sets the normalised gradient magnitude (in luma-step units) at or above which a pixel counts as an edge. 0 = every pixel passes so the whole frame floods white; 1 = almost nothing passes (a near-full unit luma step is needed); default 0.2 catches salient contours without low-contrast texture noise.

source

edges.ts on GitHub.

Generated from packages/web/src/lib/{audio,video}/module-registry.ts · repo