Dithering: The Free Fix for the Noise You Cannot Stretch Out

Diagonal streaks that get worse the more frames you add. Where walking noise comes from, why calibration will not remove it, and the setting that stops it.

One particular fault tends to show up just as people start getting good. The stack is deep, the calibration is clean and the stars are round, but the background has faint diagonal streaks through it that no amount of stretching, denoising or gradient removal will shift.

Adding more frames makes it worse.

This is walking noise, and the fix costs nothing.

Where it comes from

Every sensor has fixed-pattern noise: pixels that read slightly hot, slightly cold, or slightly non-linear. This noise is fixed, not random. Pixel (1204, 880) is a little bright in every frame you will ever take with that camera.

Stacking averages away random noise because random noise is different in each frame. It cannot average away fixed noise, which is identical in each frame. Average a hundred copies of the same defect and you get the defect.

Calibration is meant to handle this, and mostly it does. No dark frame is perfect, though. Temperature drifts, dark current is not perfectly linear, and some residual always survives.

Now add tracking. Your mount is not perfect either. Over an hour it drifts slowly in one direction, a few pixels, smoothly, along a consistent line. So the slightly hot pixel does not land on the same part of the sky in each frame. It moves across your target a fraction of a pixel at a time, in a straight line.

When you register and stack, the software aligns on the stars. The sky lines up and the sensor defect is smeared into a diagonal streak. You get one per defect, hundreds of them, all parallel and all running along the direction your mount drifted.

That is where the name comes from: the noise walks.

Why more frames make it worse

This part is counter-intuitive, and it is why people misdiagnose the problem.

Random noise falls with the square root of frame count. The streaks do not fall at all, because they are the same defect every time. As the random noise drops, the streaks stay where they were and stand out more against the cleaner background.

In this one respect, ten hours of data can look worse than two. If your background got streakier as the project got deeper, this is the reason.

The fix

Move the telescope a few pixels between frames, at random.

After each sub-exposure the mount shifts five or ten pixels in a random direction. The stars move, you register on them, and the shift disappears. The sensor, though, has moved relative to the sky in a random scatter rather than a straight line, so the hot pixel lands in a different place each time instead of along a track.

Rejection then treats it as an outlier at each location, different from the surrounding frames, and discards it. No streak forms because there is no line for it to form along.

The randomness matters. A regular pattern would produce a regular artifact, which is the same problem in a different shape.

Setting it up

Dithering happens at capture. No processing step can add it afterwards, so it is worth knowing about before you spend a night without it.

With guiding (N.I.N.A., Ekos/KStars, APT, SGP), dithering is a checkbox, and the capture software tells the guider to shift between frames.

  • Amount: 5-15 pixels is standard. Use more for undersampled setups where each pixel covers more sky.
  • Frequency: every frame is ideal. Every two or three frames is fine if settling costs you too much.
  • Settle time: the guider needs to steady after the move, typically 5-10 seconds. Too short and you get a trailed frame. Too long and you lose imaging time.

Without guiding, some mounts and capture programs can dither by nudging the mount directly and waiting. It is cruder, but it works.

Smart telescopes such as the Seestar and Dwarf mostly do not expose this setting at all. Their tracking drift may partly stand in for dithering, or it may not. Check for it if you see streaks in a stack of saved Seestar subs.

The cost

The cost is settling time. Dither every frame with a 10-second settle on 60-second subs and you spend roughly 14% of the night waiting.

That is the whole cost, and I think it is worth paying. Fourteen percent fewer frames with clean backgrounds is better than a full night with streaks you cannot remove.

When it is already too late

If you have a stack with streaks and the frames were not dithered, these are your options, best first:

Re-shoot with dithering. This is the real answer.

Better calibration. Fresh darks at the exact temperature and exposure of your lights reduce the residual that causes the streaks. Worth doing anyway; see what darks, flats and bias frames fix.

Aggressive outlier rejection. With enough frames it helps a little, because the drift means each defect is not on exactly the same sky pixel every time. Only a little, though.

Directional noise reduction. This is cosmetic, and it removes real detail along the same axis it smooths. Keep it for an image you cannot re-shoot.

No processing step removes walking noise cleanly, which is why the capture-time fix matters.

Checking that this is what you have

Three checks separate walking noise from a gradient or ordinary grain:

  1. It is directional and straight. All the streaks are parallel. Gradients are smooth and broad, and grain has no direction.
  2. It is in the background, not only on the target. It runs through the whole frame, including empty sky.
  3. It got worse as you added frames. Nothing else in astrophotography behaves that way.

If all three apply, you need to dither.

Summary

  • Fixed sensor defects plus smooth mount drift give parallel diagonal streaks.
  • Stacking cannot average out a defect that is identical in every frame.
  • More integration makes it more visible.
  • Move the mount 5-15 pixels at random between frames, and rejection does the rest.
  • It costs about 10% of your night and cannot be added in processing afterwards.

Try it on your own data

Akastroid runs its processing on your own frames and logs each step it took.

Download Akastroid