def new_fast_norm(image, Fibers, cols=None, mask=None):
if mask is None:
mask = np.zeros(image.shape)
a,b = image.shape
if cols is None:
cols = np.arange(b)
init_model = np.zeros((a,len(Fibers)))
norm = np.zeros((len(Fibers),b))
for col in cols:
for i,fiber in enumerate(Fibers):
xsel = np.where(fiber.xind==col)[0]
init_model[fiber.yind[xsel],i] = fiber.core[xsel]
if (mask[:,col]==0).sum()>(a*1./2.):
norm[:,col] = lstsq(init_model[mask[:,col]==0,:],
image[mask[:,col]==0,col])[0]
for i,fiber in enumerate(Fibers):
fiber.spectrum = norm[i,:]
评论列表
文章目录