Следующий код можно использовать для создания двух синтетических примеров.
График обратной связи< /code>, крайний пример.
График back2, менее крайний пример.
Код: Выделить всё
import numpy as np
def background(N, M, nl, nf, nT, r):
a = nf*np.sin((2*np.pi/nT)*np.arange(N))
a=a.reshape(-1,1)
fuzz = nl + a*np.ones((N,M))
fuzz+= r*a*np.random.normal(size=(N,M))
return fuzz
def add_slider(B, s, v, w, a, r):
N, M = B.shape
amps = a+r*np.random.normal(size=M)
x=np.arange(N)
for i, y in enumerate(range(s, N, v)):
if i >= M: break
B[:,i]+=amps[i]*np.exp(-(x-y)**2/(2*w**2))
def subtracted(im):
return im - im.mean(1).reshape(-1, 1)
B = background(1000, 300, 0, 5, 100, 1)
add_slider(B, 0, 2, 40, 1, 1)
back = subtracted(B)
# For a less extreme example:
B2 = gs.background(1000, 300, 0, 5, 100, 1)
gs.add_slider(B2, 0, 2, 40, 5, 1)
back2 = subtracted(B2)
Я провел ограниченный поиск статей. по этой теме, но я не нашел ничего, что хорошо подходило бы для этой проблемы. Если возможно, я хочу найти решение, которое не полагается на знание многих деталей линии, например ее толщины.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ound-noise