Exemple #1
0
    def __init__(
        self,
        image,
        *,
        metadata=None,
        multichannel=None,
        colormap='gray',
        clim=None,
        clim_range=None,
        interpolation='nearest',
        name=None,
        **kwargs,
    ):

        visual = ImageNode(None, method='auto')
        super().__init__(visual, name)

        self.events.add(clim=Event, colormap=Event, interpolation=Event)

        with self.freeze_refresh():
            # Set data
            self._data = image
            self.metadata = metadata or {}
            self.multichannel = multichannel

            # Intitialize image views and thumbnails with zeros
            if self.multichannel:
                self._data_view = np.zeros((1, 1) + (self.shape[-1], ))
            else:
                self._data_view = np.zeros((1, 1))
            self._data_thumbnail = self._data_view

            # Set clims and colormaps
            self._colormap_name = ''
            self._clim_msg = ''
            if clim_range is None:
                self._clim_range = calc_data_range(self.data)
            else:
                self._clim_range = clim_range
            if clim is None:
                self.clim = self._clim_range
            else:
                self.clim = clim
            self.colormap = colormap
            self.interpolation = interpolation

            # Set update flags
            self._need_display_update = False
            self._need_visual_update = False

            # Re intitialize indices depending on image dims
            self._indices = (0, ) * (self.ndim - 2) + (
                slice(None, None, None),
                slice(None, None, None),
            )

            # Trigger generation of view slice and thumbnail
            self._set_view_slice()
Exemple #2
0
    def _on_display_change(self):
        parent = self.node.parent
        self.node.parent = None

        if self.layer.dims.ndisplay == 2:
            self.node = ImageNode(None, method='auto')
        else:
            self.node = VolumeNode(np.zeros((1, 1, 1)))

        self.node.parent = parent
        self.reset()
    def __init__(self, layer):
        node = ImageNode(None, method='auto')
        super().__init__(layer, node)

        self.layer.events.interpolation.connect(
            lambda e: self._on_interpolation_change())
        self.layer.events.colormap.connect(
            lambda e: self._on_colormap_change())
        self.layer.events.contrast_limits.connect(
            lambda e: self._on_contrast_limits_change())

        self.reset()
Exemple #4
0
    def _on_display_change(self, data=None):
        parent = self.node.parent
        self.node.parent = None

        if self.layer.dims.ndisplay == 2:
            self.node = ImageNode(data, method='auto')
        else:
            if data is None:
                data = np.zeros((1, 1, 1))
            self.node = VolumeNode(data, clim=self.layer.contrast_limits)

        self.node.parent = parent
        self.reset()
Exemple #5
0
    def __init__(self, layer):
        node = ImageNode(None, method='auto')
        super().__init__(layer, node)

        self.layer.events.rendering.connect(self._on_rendering_change)
        self.layer.events.interpolation.connect(self._on_interpolation_change)
        self.layer.events.colormap.connect(self._on_colormap_change)
        self.layer.events.contrast_limits.connect(
            self._on_contrast_limits_change)
        self.layer.events.gamma.connect(self._on_gamma_change)
        self.layer.events.iso_threshold.connect(self._on_threshold_change)
        self.layer.events.attenuation.connect(self._on_threshold_change)

        self._on_display_change()
        self._on_data_change()
Exemple #6
0
    def __init__(self, layer):
        node = ImageNode(None, method='auto')
        super().__init__(layer, node)

        self.layer.events.rendering.connect(
            lambda e: self._on_rendering_change())
        self.layer.events.interpolation.connect(
            lambda e: self._on_interpolation_change())
        self.layer.events.colormap.connect(
            lambda e: self._on_colormap_change())
        self.layer.events.contrast_limits.connect(
            lambda e: self._on_contrast_limits_change())
        self.layer.dims.events.ndisplay.connect(
            lambda e: self._on_display_change())
        self.layer.events.gamma.connect(lambda e: self._on_gamma_change())

        self._on_display_change()
Exemple #7
0
    def __init__(
        self,
        labels,
        *,
        metadata=None,
        num_colors=50,
        seed=0.5,
        opacity=0.7,
        name=None,
        **kwargs,
    ):

        visual = ImageNode(None, method='auto')
        super().__init__(visual, name)
        self.events.add(
            colormap=Event,
            mode=Event,
            n_dimensional=Event,
            contiguous=Event,
            brush_size=Event,
            selected_label=Event,
        )

        self._data = labels
        self._data_view = np.zeros((1, 1))
        self.metadata = metadata or {}
        self._seed = seed

        self._colormap_name = 'random'
        self._num_colors = num_colors
        self.colormap = (
            self._colormap_name,
            colormaps.label_colormap(self.num_colors),
        )
        self._node.clim = [0.0, 1.0]
        self._node.cmap = self.colormap[1]

        self._node.opacity = opacity
        self._n_dimensional = True
        self._contiguous = True
        self._brush_size = 10
        self._last_cursor_coord = None

        self._selected_label = 0
        self._selected_color = None

        self._mode = Mode.PAN_ZOOM
        self._mode_history = self._mode
        self._status = self.mode
        self._help = 'enter paint or fill mode to edit labels'

        # update flags
        self._need_display_update = False
        self._need_visual_update = False

        # Re intitialize indices depending on image dims
        self._indices = (0, ) * (self.ndim - 2) + (
            slice(None, None, None),
            slice(None, None, None),
        )

        # Trigger generation of view slice and thumbnail
        self._set_view_slice()