def __init__(self, img, wavelet_families=wavelets.get_all_wavelet_families()): uiutils.Experience.__init__(self) self.gui = uiutils.UI(1000, 600, "Wavelet Transform 2D") bv = self.gui.add_box(uiutils.VBox()) self.ctl = bv.add(uiutils.HBox()) self.view = bv.add(plotutils.BaseCustomCanvas(), True) bv.add(plotutils.ExtendedNavigationToolbar(self.view, self.gui)) self.img = uiutils.OpenImage(self.ctl, self, img=img) self.wavelet = waveletsui.WaveletSelector(self.ctl, self, wavelet_families, initial=wavelets.get_wavelet("b3")) self.scale = uiutils.ScaleRangeParameter(self.ctl, self, "Scale:", 1, 6, 1, 2) decs = {"DWT": wtutils.dwt, "UWT": wtutils.uwt, "UIWT": wtutils.uiwt, "UIMWT": wtutils.uimwt} exts = {"Symmetry": "symm", "Zero": "zero", "Periodic": "wrap"} self.dec = uiutils.ListParameter(self.ctl, self, "Transform:", decs) self.ext = uiutils.ListParameter(self.ctl, self, "Boundary:", exts, "symm") uiutils.Button(self.ctl, self, "Save result", self.on_save) self.add_spinner(self.ctl) self.ax1, self.ax2 = self.view.figure.subplots(1, 2) self.current_wavedec = None self.gui.show() self.do_update()
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, 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 __init__(self, wavelet_families=wavelets.get_all_wavelet_families()): uiutils.Experience.__init__(self) self.gui = uiutils.UI(900, 500, "Wavelet Filter Bank Response") box = self.gui.add_box(uiutils.VBox()) self.figure = plotutils.ReplayableFigure(self.do_plot, None) self.view = box.add(plotutils.FigureCanvas(self.figure), True) ctl = box.add(uiutils.HBox()) ctl.add(plotutils.ExtendedNavigationToolbar(self.view, self.gui), True) self.wavelet = waveletsui.WaveletSelector(ctl, self, wavelet_families, initial=wavelets.get_wavelet("b3")) self.dx = uiutils.SpinRangeParameter(ctl, self, "dx", -10, 10, 1, 0) self.add_spinner(ctl) self.gui.show() self.do_update()
def __init__(self, img, wavelet_families=wavelets.get_all_wavelet_families()): uiutils.Experience.__init__(self) self.gui = uiutils.UI(1000, 600, "Wavelet Transform 2D") bv = self.gui.add_box(uiutils.VBox()) self.ctl = bv.add(uiutils.HBox()) self.view = bv.add(plotutils.BaseCustomCanvas(), True) bv.add(plotutils.ExtendedNavigationToolbar(self.view, self.gui)) self.img = uiutils.OpenImage(self.ctl, self, img=img) self.wavelet = waveletsui.WaveletSelector( self.ctl, self, wavelet_families, initial=wavelets.get_wavelet("b3")) self.scale = uiutils.ScaleRangeParameter(self.ctl, self, "Scale:", 1, 6, 1, 2) decs = { "DWT": wtutils.dwt, "UWT": wtutils.uwt, "UIWT": wtutils.uiwt, "UIMWT": wtutils.uimwt } exts = {"Symmetry": "symm", "Zero": "zero", "Periodic": "wrap"} self.dec = uiutils.ListParameter(self.ctl, self, "Transform:", decs) self.ext = uiutils.ListParameter(self.ctl, self, "Boundary:", exts, "symm") uiutils.Button(self.ctl, self, "Save result", self.on_save) self.add_spinner(self.ctl) self.ax1, self.ax2 = self.view.figure.subplots(1, 2) self.current_wavedec = None self.gui.show() self.do_update()