# Why does the background noise in this image of 2020 QG look like corduroy?

The news item Small asteroid becomes closest ever seen passing Earth: NASA contains a "handout image" with the caption:

This NASA/JPL/ZTF/Caltech Optical Observatories handout image obtained on August 18, 2020 shows asteroid 2020 QG (the circled streak in the center), which came closer to Earth than any other nonimpacting asteroid on record NASA/JPL-CALTECH/AFP

Question: I saw what looks like a corduroy-like pattern in the background that is likely from some processing artifact. Does anybody recognize this kind of artifact? Does it look familiar?

above: NASA image from linked article. below: Corduroy source.

Fourier analysis (log power) of the image of the asteroid, the two spots demonstrating the strong linear periodic modulation of the background.

Concentric rings were seen when analyzing only the red part of the initial annotated image. Now that I average all three colors they are almost gone. The inclined line in the FT is probably that of the bright, straight linear trail of the asteroid.

import numpy as np
import matplotlib.pyplot as plt

fname = '424852de3808b4d6df1101d3b4f0790afd3b9d13.png'

img = plt.imread(fname)[..., :3].sum(axis=2) # sum 3 colors makes red circle gray to minimize impact on FFT

print(img.shape)

f = np.fft.fftshift(np.fft.fft2(img))
p = np.abs(f)**2

plt.figure()
c0, c1 = [int(s*2**-1) for s in p.shape]
hw0, hw1 = [int(s*2**-3) for s in p.shape]
plt.imshow(np.log10(p[c0-hw0:c0+hw0, c1-hw1:c1+hw1]), vmin=5, vmax=8)
plt.gca().set_aspect(16/9)
plt.colorbar()
plt.title('log10(ft power)')
plt.show()

• – uhoh
Sep 7 '20 at 2:10
• Looks like fixed pattern noise, a common sensor artifact, usually removed via dark frame reduction Sep 7 '20 at 5:24
• @planetmaker thanks, that sound like a generic term, any thoughts on what could produce such a periodic, 1D yet slightly inclined pattern like this? I've seen something similar in Atomic Force Microscopy and in that case it was caused by AC noise picked up by the amplifier. I suppose some AC noise in the CCD readout could cause this as well, but maybe there are other sources for periodic, inclined lines like this as well. I say inclined but we don't know for sure unless the original image can be found.
– uhoh
Sep 7 '20 at 6:51
• There's no AC current involved in CCD sensors. Yet often there are less analog-digital-converters (ADC) than pixels, so every n-th pixel always gets assigned the same ADC converter. If the N different ADC converters work at different effiency, the result is a pattern like the image shows, which repeats every N pixels. If N is different from a line of pixels, the lines are inclined and not perfectly vertical or horizontal. Sep 7 '20 at 7:00
• @planetmaker ya but pickup of AC external signals (i.e. noise, interference) can happen to even a well-built system :-) media.wired.com/photos/5b8068449dd8353d172382ad/master/… but I like your explanation better.
– uhoh
Sep 7 '20 at 7:54

I agree that it’s noise in a fixed pattern, but I think it’s unlikely to be related to ADC sensitivity. Typically if you have multiple ADCs, they read out blocks of the sensor (e.g. one on each corner to read out a quadrant). And sensitivity differences across those amplifiers usually is removed pretty well by flat-fielding.

In my experience, you get things like this from time-variable electronic noise, e.g. 60 Hz noise from surrounding equipment. (Probably the electronics are well-shielded from 60 Hz because it’s so ubiquitous, but there could be noise at other frequencies.)

Because CCD pixels are read out sequentially (e.g. the classic bucket brigade analogy), then any time-variable noise source that slightly changes a pixel value will manifest itself as a spatially varying pattern, where the exact pattern depends on the relationship of the readout frequency to the noise frequency. You see the diagonal stripes because the noise signal wasn’t quite at the same phase when pixel 1 of row 2 was read out as it was when pixel 1 of row 1 was read out, and so on.

(Extra points for including an actual image of corduroy in your question, BTW. 🙂)

• Thanks for the extra points! I'm thinking that a group of adjacent rows would start clocking out their first pixels at the same time. Any thoughts on what would cause a staggering in starts?
– uhoh
Sep 7 '20 at 15:19
• Ah, I see what you’re saying. Yes, depending on how the serial register is oriented, two adjacent pixels in the image will be read either sequentially or separated by N reads, where N is the length of one side of the part of the array that that readout amplifier is processing. But either way, they are read at different times, so the overall idea holds - the time-varying noise can change between reads. (In the geometry you’re describing, they would clock onto the serial/readout row at the same time, but then would be transferred down it sequentially and read one after the other.) Sep 7 '20 at 17:21
• The description of the ZTF data says that each of the 16 CCDs is divided into 4 quadrants, and links to this image. Each quadrant is 3000^2 pixels that is read by a single amplifier. Sep 7 '20 at 17:31
• Okay I have a better picture now, thanks!
– uhoh
Sep 8 '20 at 0:57

That looks like a fixed-pattern noise to me.

Fixed pattern noise is a common sensor artefact for CCD sensors, One source for this is where you have less analog - digital converters (ADC) than pixels. Say, you have N ADC, each with its own sensitivity. Then you have in the resulting image a sensitivity pattern which repeats every N pixels. Depending on whether N is identical or not with the width or height of the image, the fixed-pattern noise results in inclined or exactly vertical or horizontal patterns. You might have a somewhat rectangular repitition, if you have several set of sets of ADC which start at different rows etc... all depending on exact electronic implementation

• Oh I see, if there are 21 columns and 20 ADCs for example, then there could be say a few degree tilt.
– uhoh
Sep 7 '20 at 7:58