Spot Removal

Dust, a stray hair, a bin in the corner: heal or clone from elsewhere in the same frame.

On this page
0:39
Narrated in English, with subtitles. Plays from YouTube when you press play.

Sensor dust on a sky, a bin in the corner of a portrait, a stray hair. Click the blemish and it is replaced by a patch taken from somewhere else in the same frame.

Spot removal: the blemish in yellow, the patch it is replaced with in blue, and a line between them.
Spot removal: the blemish in yellow, the patch it is replaced with in blue, and a line between them.

Placing one#

Turn on Remove Spots in the Spot removal panel (or Develop → Spot Removal, Shift+Q), then click; Esc turns it off. The blemish is circled in yellow, the patch that replaces it in blue, and a line joins them. Drag either circle: the yellow one to move what is being covered, the blue one to choose a cleaner source.

Size, Softness and Opacity set what the next fix is placed with, in percent of the frame's longer side and of full strength. Existing fixes keep the values they were made with, and each one is listed so it can be taken back on its own.

Heal or clone#

Heal matches the patch to where it lands: the difference between what surrounds the source and what surrounds the destination is added to the whole patch, so a patch lifted from a slightly brighter part of a gradient still disappears.

Turn it off and the patch is cloned as it is, which is what you want when the source is the thing you actually mean to duplicate.

What order they apply in#

Every fix reads the frame as it was before the pass, so two fixes whose source and destination overlap give the same answer whatever order they are listed in. That is also what lets the whole frame be repaired at once on the GPU and still match the CPU exactly.

Spots run before masks: a repair is part of the picture, so a mask drawn over a repaired area sees the repair and not the blemish that used to be there.

Red eye#

There is no separate red-eye tool. A small radial mask with saturation at −100 is the same thing, and it is adjustable afterwards in a way a dedicated tool would not be.

From a script#

await client.develop.setSpots([
  { x: 0.32, y: 0.28, from_x: 0.5, from_y: 0.24, radius: 0.02, heal: true },
])

Positions are fractions of the frame; radius is a fraction of the longer side, so the same values work on a portrait frame.

esc
    ↑↓ navigate↵ open