예제 #1
0
파일: wds.py 프로젝트: flomertens/wise
    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)
예제 #2
0
파일: wds.py 프로젝트: flomertens/wise
    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)
예제 #3
0
    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)
예제 #4
0
    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()
예제 #5
0
    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()
예제 #6
0
    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)