def decompose(self): min_scale = int(2**self.config.get("min_scale")) max_scale = int(2**self.config.get("max_scale")) step = self.config.get("dog_step") angle = self.config.get("dog_angle") ellipticity = self.config.get("dog_ellipticity") if max_scale is None: max_scale = min(self.img.data.shape) / 4 if angle is 'beam' and self.img.has_beam(): angle = self.img.get_beam().angle widths = np.arange(min_scale, max_scale, step) scales = wtutils.pyramiddec( self.img.data, widths=widths, angle=angle, ellipticity=ellipticity, boundary="symm") scales = [nputils.resize_like(s, self.img.data) for s in scales] scales_noises = wtutils.dec_noise_factor( wtutils.pyramiddec, self.bg, widths=widths, angle=angle, ellipticity=ellipticity, beam=self.img.get_beam()) return zip(scales, scales_noises, widths)
def decompose(self, wavelet_fct=None, img=None, bg=None, min_scale=None, max_scale=None): if wavelet_fct is None: wavelet_fct = self.config.get("wd_wavelet") if img is None: img = self.img if bg is None: bg = self.bg if min_scale is None: min_scale = self.config.get("min_scale") if max_scale is None: max_scale = self.config.get("max_scale") wt_dec = self.config.get("dec") if max_scale is None: max_scale = wavelets.get_wavelet(wavelet_fct).get_max_level(img.data) scales = wtutils.wavedec(img.data, wavelet_fct, max_scale, dec=wt_dec) self.approx = scales[-1] scales = scales[min_scale:-1] scales = [nputils.resize_like(s, img.data) for s in scales] scales_noise = wtutils.wave_noise_factor(bg, wavelet_fct, max_scale, wt_dec, beam=img.get_beam()) scales_noise = scales_noise[min_scale:] if wavelet_fct in ['b3', 'triangle2'] : scales_width = [max(1.5, 3 * min(1, j) * pow(2, max(0, j - 1))) for j in range(min_scale, max_scale)] else: scales_width = [max(1, 2 * min(1, j) * pow(2, max(0, j - 1))) for j in range(min_scale, max_scale)] return zip(scales, scales_noise, scales_width)
def decompose(self): min_scale = int(2**self.config.get("min_scale")) max_scale = int(2**self.config.get("max_scale")) step = self.config.get("dog_step") angle = self.config.get("dog_angle") ellipticity = self.config.get("dog_ellipticity") if max_scale is None: max_scale = min(self.img.data.shape) / 4 if angle is 'beam' and self.img.has_beam(): angle = self.img.get_beam().angle widths = np.arange(min_scale, max_scale, step) scales = wtutils.pyramiddec(self.img.data, widths=widths, angle=angle, ellipticity=ellipticity, boundary="symm") scales = [nputils.resize_like(s, self.img.data) for s in scales] scales_noises = wtutils.dec_noise_factor(wtutils.pyramiddec, self.bg, widths=widths, angle=angle, ellipticity=ellipticity, beam=self.img.get_beam()) return zip(scales, scales_noises, widths)
def after_update(self, result): titles = ["Original"] + \ ["Scale %i" % k for k in range(1, int(self.scale.get()) + 1)] + ["Residu"] plots = [self.x] + list(result) self.view.figure.clear() ax = self.view.figure.subplots() for plot, title in zip(plots, titles): plot = nputils.resize_like(plot, self.x) ax.plot(plot, label=title) ax.legend() self.view.draw()
def decompose(self, wavelet_fct=None, img=None, bg=None, min_scale=None, max_scale=None): if wavelet_fct is None: wavelet_fct = self.config.get("wd_wavelet") if img is None: img = self.img if bg is None: bg = self.bg if min_scale is None: min_scale = self.config.get("min_scale") if max_scale is None: max_scale = self.config.get("max_scale") wt_dec = self.config.get("dec") if max_scale is None: max_scale = wavelets.get_wavelet(wavelet_fct).get_max_level( img.data) scales = wtutils.wavedec(img.data, wavelet_fct, max_scale, dec=wt_dec) self.approx = scales[-1] scales = scales[min_scale:-1] scales = [nputils.resize_like(s, img.data) for s in scales] scales_noise = wtutils.wave_noise_factor(bg, wavelet_fct, max_scale, wt_dec, beam=img.get_beam()) scales_noise = scales_noise[min_scale:] if wavelet_fct in ['b3', 'triangle2']: scales_width = [ max(1.5, 3 * min(1, j) * pow(2, max(0, j - 1))) for j in range(min_scale, max_scale) ] else: scales_width = [ max(1, 2 * min(1, j) * pow(2, max(0, j - 1))) for j in range(min_scale, max_scale) ] return zip(scales, scales_noise, scales_width)