Nodes/ComfyUI-Darkroom/Spectral B&W (Ortho/Pan)
ComfyUI Node

Spectral B&W (Ortho/Pan)

Black and white by spectral sensitivity, not by guesswork

By jeremieLouvaert·Created 5 months ago·Updated 2 days ago· 101
Spectral B&W (Ortho/Pan)
  • image
  • image
sensitivityPanchromatic
strength1.00

Converting to black and white seems trivial - desaturate, maybe pull the red channel down - until you realize that how you convert changes the entire image. A red dress can go near-white or near-black depending on the conversion. That's because real B&W film doesn't see all colors equally: each stock has a spectral sensitivity, an "eye" that responds differently to each wavelength of light. Spectral B&W is a B&W conversion driven by those actual sensitivity curves, instead of a hand-picked channel mix.

The sensitivity options

The sensitivity dropdown is the whole story. Each choice is a different spectral "eye":

  • Blue-sensitive - responds almost only to blue light.
  • Orthochromatic - the classic early emulsion: sensitive to blue/green, nearly blind to red. That's why ortho renders reds dark and blues light - white skies, dark skin and lips. It's the look of vintage portraits and pre-panchromatic photography.
  • Orthopanchromatic - a middle step between ortho and pan.
  • Panchromatic - the natural modern choice, sensitive across the visible spectrum. This is the "what your eye sees" conversion.
  • Panchromatic+ - extended-red: lightens reds, foliage, and skin, an approach toward infrared.
  • Kodak Tri-X 400 and Kodak 5222 (Double-X) - these are the interesting ones. They're measured stocks: the pack digitized actual manufacturer datasheet sensitivity curves. The author is explicit in the tooltip that real pan emulsions are bluer than the idealized panchromatic curve - so these render skies lighter and reds/skin darker than "Panchromatic" does. That's film-true, and it's the reason yellow filters were standard practice for landscape work (they block blue, darkening the sky).

How the math works

This is where the pack shows its physics credentials. The RGB weights aren't hand-picked numbers - they're derived by integrating each film's spectral sensitivity curve against the Mallett-Yuksel sRGB spectral basis. In other words, the sensitivity curve is literally convolved with how an sRGB sensor sees color to produce the channel weights. That's a principled channel mixer, the real thing rather than "red 0.3, green 0.6, blue 0.1."

The one honest caveat the author makes: an sRGB image can't carry a real spectrum, so this is a spectral approximation of the ortho/pan tonal character. It's grounded in real sensitivity data; it just can't be a perfect physical simulation through an already-graded sRGB image.

Using it

  • image - your color image.
  • sensitivity - pick the film's eye. This is the whole node, really.
  • strength - blend between color and B&W. 1.0 is full B&W; less than 1.0 is partial desaturation. That's a nice touch - you can ghost a B&W conversion over the color image instead of committing to full monochrome.

Output is a single image. And since the conversion is per-pixel and deterministic (no content adaptation), it's on the README's allowed list for LUT bake chains - you can bake an ortho or Tri-X conversion into a .cube and reuse it anywhere.

What you'll actually see

The fun part is experimentation. Convert a portrait with "Orthochromatic" and skin goes dramatically darker - that's period-correct and looks fantastic for vintage work. Try "Kodak 5222 (Double-X)" on a landscape and watch the sky go lighter than the idealized pan conversion - that's the film actually behaving like the datasheet. Start with Panchromatic for natural work, and treat the measured stocks as your "authentic film" setting when you want the real tonal character.

Installing it

Part of the full ComfyUI-Darkroom pack:

cd ComfyUI/custom_nodes
git clone https://github.com/jeremieLouvaert/ComfyUI-Darkroom.git
pip install -r ComfyUI-Darkroom/requirements.txt

Or search "Darkroom" in ComfyUI Manager. Needs scipy, opensimplex, rawpy, exifread, Pillow. Restart and it's under AKURATE/Darkroom/Film. No GPU, no models, no API - the sensitivity data ships with the pack.

CategoryAKURATE/Darkroom/Film

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
sensitivityCOMBOPanchromaticFilm's spectral 'eye'. Orthochromatic darkens red / lightens blue (white skies); Panchromatic is natural; Panchromatic+ is pseudo-IR (reds/foliage/skin light). Kodak Tri-X 400 / 5222 (Double-X) are MEASURED stocks (real datasheet-digitized sensitivity) — bluer than the idealized Panchromatic: skies lighter, reds/skin darker, film-true.
strengthFLOAT1.000–1Blend color->B&W. 1 = full B&W, <1 = partial desaturation.

Outputs (1)

NameTypeDescription
imageIMAGE