def __next__(self):
# THE IMAGED OBJECT WILL BE AVERAGED FROM ALL
# INDIVITUAL IMAGES SHOWING THIS OBJECT FROM DIFFERENT POSITIONS:
obj = MaskedMovingAverage(shape=self.obj_shape)
with np.errstate(divide='ignore', invalid='ignore'):
for f, h in zip(self.fits, self.Hinvs):
warpedflatField = cv2.warpPerspective(self.flatField,
h, (f.shape[1], f.shape[0]))
obj.update(f / warpedflatField, warpedflatField != 0)
self.object = obj.avg
# THE NEW flatField WILL BE OBTAINED FROM THE WARPED DIVIDENT
# BETWEEN ALL IMAGES THE THE ESTIMATED IMAGE OOBJECT
sh = self.flatField.shape
s = MaskedMovingAverage(shape=sh)
for f, mask, h in zip(self.fits, self._fit_masks, self.Hs):
div = f / self.object
# ->do not interpolate between background and image border
div[mask] = np.nan
div = cv2.warpPerspective(div, h, (sh[1], sh[0]), # borderMode=cv2.BORDER_TRANSPARENT
)
div = np.nan_to_num(div)
s.update(div, div != 0)
new_flatField = s.avg
# STOP ITERATION?
# RMSE excluding NaNs:
dev = np.nanmean((new_flatField[::10, ::10] -
self.flatField[::10, ::10])**2)**0.5
print('residuum: %s' % dev)
if self.n >= self.maxIter or (self._last_dev and (
(self.n > 4 and dev > self._last_dev) or
dev < self.maxDev)):
raise StopIteration
# remove erroneous values:
self.flatField = np.clip(new_flatField, 0, 1)
self.n += 1
self._last_dev = dev
return self.n
vignettingFromRandomSteps.py 文件源码
python
阅读 30
收藏 0
点赞 0
评论 0
评论列表
文章目录