Как бороться со смещением уровней смещения ПЗС (нулевой экспозиции)?

Медианные значения кадров смещения, поступающих с нашего учебного телескопа, смещаются вверх или вниз с каждым захватом. Например:

import glob, numpy as np, astropy.io.fits as fio, matplotlib.pyplot as plt

data = np.zeros((10,255,765), dtype=np.int)
for i, f in enumerate(glob.glob('bias_*.fit')):
    data[i,:,:] = fio.getdata(f)

print(np.median(data, axis=(1,2)))

[ 106. 106. 108. 108. 110. 108. 105. 106. 107. 107.]

Теперь, во время обработки данных, мы усредняем наши кадры смещения. Мы также отклоняем выбросы (минмакс или сигмаклип). Но если некоторые из наших кадров «сдвинуты» выше, чем другие, не будет ли это искажать усреднение (и особенно отклонение выбросов), так что мы можем вводить больше шума во время усреднения?

Чтобы дать вам представление о характере этих колебаний, я провел быстрый анализ: прочитал 10 кадров смещения, затем просмотрел их, вычитая каждый кадр из средней комбинации всех других кадров. Это дает мне что-то вроде «шумовых кадров», показывающих только, насколько каждый кадр отклоняется от медианы остальных. Ниже приведен код и распределение двух таких шумовых кадров.

noiseframes = np.zeros((10,255,765), dtype=np.int)
otherframes = np.ones(10, dtype=np.bool) # just a mask
for i in xrange(10):
    otherframes[:] = True
    otherframes[i] = False # exclude current frame from mask
    median_of_others = np.median(data[otherframes,:,:], axis=0)
    noiseframes[i,:,:] = data[i,:,:] - median_of_others

def plotdist(i):
    frame = noiseframes[i].flatten()
    x = np.arange(np.min(frame),np.max(frame)+1)
    y = np.bincount(frame-np.min(frame))
    plt.step(x, y, label=str(np.median(data[i,:,:])))

plotdist(4)
plotdist(3)
plt.xlabel('Difference from median [ADU]')
plt.legend()
plt.show()

График 2 распределений кадров шума

Все шумовые кадры имеют почти идеальное гауссово распределение с почти постоянной полушириной, это просто центральное значение, которое смещается с каждым кадром.

Это приводит меня к нескольким выводам: во-первых, этот сдвиг действительно является сдвигом срединного значения, а не просто результатом чего-то вроде космических лучей; во-вторых, флуктуация является аддитивным эффектом и поэтому не связана с изменением усиления из-за разницы в напряжении или чего-то в этом роде.

Я также не смог найти никакой корреляции с температурой или временем, прошедшим с момента последнего считывания, о чем я на мгновение подозревал.

Возможно, это небольшие изменения во времени считывания?

Я не смог найти упоминания об этом виде артефакта в своих собственных конспектах курса. Это также не упоминается нигде в Интернете, который я могу найти.

Может ли кто-нибудь из вас помочь мне а) определить возможные источники таких колебаний и/или б) предоставить проверенную стратегию для решения этой проблемы во время обработки данных?

Ответы (1)

Похоже, у вас есть ненадежная электроника, прикрепленная к вашей ПЗС, если уровень смещения изменяется на несколько единиц при последовательных экспозициях. Однако не все потеряно, если ваша ПЗС-матрица имеет область за пределами сканирования .

Обычно это несколько столбцов «пикселей», которые добавляются к каждой строке ваших данных, но не соответствуют физическим пикселям на ПЗС. На самом деле это фиктивные показания для оценки фактического уровня смещения в каждой конкретной строке.

Область за пределами сканирования должна быть четко видна при любом реальном воздействии источника света, поскольку область за пределами сканирования будет неосвещенной.

Вы можете использовать оверскан двумя способами. Обычный метод состоит в том, чтобы скорректировать ваши изображения за пределами сканирования, прежде чем делать вычитание смещения. Вы также должны сделать это с вашими кадрами смещения, прежде чем объединять их в ваш кадр «мастер смещения».

Итак, возьмите свою область за пределами сканирования и либо (i) вычислите медиану (или усеченное среднее значение) внутри нее и вычтите это значение из каждого пикселя изображения перед использованием (включая кадры смещения); или (ii) подобрать что-то более сложное в зависимости от номера строки, а затем вычесть это из ваших фактических данных построчно.

Метод (ii) требуется, если вы заметили, что есть какая-либо структура или дрейф/тенденция в значениях за пределами сканирования в зависимости от номера строки.

Эта ссылка дает много деталей, несколько фотографий и рецепт.

Спасибо, Роб. К сожалению, насколько я могу судить, SBIG ST-7 не поддерживает чтение области за пределами сканирования. В следующем месяце у меня будет больше времени на телескопе, и, надеюсь, я найду какой-нибудь способ сделать это возможным.
На самом деле я заметил такое же поведение с другой нашей камерой (STL-6303), так что это, вероятно, связано с электроникой, расположенной дальше по линии. А пока, похоже, мне просто придется смириться с теми данными, которые у меня есть. Я предполагаю, что на данный момент лучше всего было бы нормализовать смещения, перейдя к центральному значению, а затем добавить неопределенность этого центрального значения к оценке/распространению шума. Если небольшое смещение на кадр нормально распределяется, это должно быть уместно, учитывая ограниченные данные, которыми я располагаю на данный момент.
@ user181339 Тогда ты застрял. Все, что вы можете сделать со своей последовательностью кадров смещения, — это охарактеризовать, насколько она может быть плохой. У каждого астрономического ПЗС-прибора, который я использовал, была полоса сверхсканирования. Глядя на некоторую документацию astro.louisville.edu/software/sbig/archive/xmccd-4.1/xmccd-4.1e/… , похоже, что вы должны иметь возможность выполнять фиктивные чтения для каждой строки, чтобы произвести пересканирование на ПЗС-матрицах SBIG.
@user181339 user181339 Обратите внимание, что оверскан (обычно) представляет собой простое числовое смещение уровня смещения, которое применяется ко всем пикселям.
Спасибо за ссылку на руководство по драйверам. Я вижу, что может быть возможность чтения overscan через раздел реестра. Я попробую, как только снова возьму в руки телескоп.