Missing features

I was searching for a nice image viewer for python for a long time and I’ve just tested napari viewer and I find it great! I really like the flexibility

However the following features are missing for me to use it:

  • Correctly manage float images > it is assumed that the contrast is between 0 and 1… My images are not in this range… Also pixel intensity displayed in the bottom left are changed to 1 for RGB images… It should display the real intensity values otherwise I cannot trust the values.
  • Correctly manage uint16 images > max value for the contrast slider is 2.91e+03… why? Also intensity resolution is highly reduced (I see flat colors) as if the image was converted to uint8
  • Set min and max contrast values manually instead of using a slider. I need to set the same contrast on two images to compare, not possible with sliders.
  • Would be nice to implement the mouse control for contrast (left-right drag) and intensity (up-down drag). Usually present in other viewers
  • Manage .JP2 (jpeg2000) file format
  • Display zoom factor. And implement magnet effect for 100% zoom factor > I need to see the image at exactly 100% sometimes (or a integer rescale factor such as 300%).
  • measure distances. Line tool does not display distances…
  • Implement histogram
  • toggle between RGB and single band view. In general, RGB is not correctly managed.

Thanks again for the development!

Also, can I retrieve the Viewer object from the iPython console present directly in the viewer?

Hi @duvalta thanks for the detailed post, this sort of feedback is highly welcome as it helps us prioritize what to work on during this time when there is lots of active development happening!

I’ll go through the list and try and answer some of these questions right away, but some might require more detailed discussions and further posts.

Yes - you should be able to just type viewer into the console and get full access to the viewer, see here

It’s on our to-do to make a more informative and helpful console message, see https://github.com/napari/napari/issues/1133

If you right click on the contrast limits slider you get a pop-up that allows you to type in values, see

We have plans to extend this support to all our sliders, see https://github.com/napari/napari/issues/879. We also need to document this feature.

Yup, we’ve put this on hold for now as we work on some higher priority features, but it’s definitely something we will support and have been exploring https://github.com/napari/napari/pull/675. You can also add your own custom matplotlib widgets in the mean time if you want, see https://github.com/napari/napari/issues/1005.

We’re making good progress on having a nice global coordinate system, and will then think about scale bars, measurement tools. That might be separate functionality from the Line in Shapes, but we’ll see. For now if you wanted to get the length of each line you’d have to do it programmatically from the layer data.

We’ve recently added some programatic functionality to make this easier, but need to expose this in the GUI, this has been requested here https://github.com/napari/napari/issues/1543

Displaying zoom is a good idea, we don’t do that now, but can do that maybe when we improve our camera model https://github.com/napari/napari/pull/854. You can do cmd+R to reset the zoom to it’s original position, we don’t have something to set at 1 data pixel/ 1 screen pixel, but could add that.

We leverage imageio by default for loading images. Are you interested in the jp2-FI format which requires that additional binary? In general we support the ability to add custom reader plugins see this guide on our plugins https://napari.org/docs/plugins/for_plugin_developers.html# and this example plugin https://github.com/tlambert03/napari-dv for reading dv files.

We support the ability to have custom mouse functions, right now we just added ctrl scroll to move the dimension sliders, but could think about this too and what the best short cuts are.

By default we’re setting the min/ max to the values to the image data, but these can be changed with the contrast_limits_range parameter or using the pop-out slider i mentioned above.

I’ll have to look into this more, we shouldn’t be making assumptions there on the float, and anything should be settable with contrast_limits_range and contrast_limits, but something strange might be happening for RBG data.

Hope this helps, as you can tell we’re still an alpha stage project and lots is in development, but we welcome new contributors, here is our contributing guide https://napari.org/docs/developers/CONTRIBUTING.html and have a number of good first issues tagged https://github.com/napari/napari/issues?q=is%3Aopen+is%3Aissue+label%3A"good+first+issue" if you’d like to jump in and help make the software better for everyone!!


Thank you for your detailed answer!
Lot of hidden features indeed, that will solve most of my concerns!

Being able to interact programmatically is really useful. Currently the command viewer.layers[0].rgb=False does not split channels but I see that it is being solved in a PR :+1:

I submitted an issue concerning the color range for 16bits images: https://github.com/napari/napari/issues/1545

I will look into the plugins to read .jp2 files (jp2-Fl format). In the meanwhile I can use the console :slight_smile:



Yes, we need to make another push on our docs and tutorials :slight_smile:

Great, just saw that, thanks! We’ll keep that discussion going there.

Please continue to open issues as needed. In general one issue per bug/ feature request is the easiest for us to handle, so don’t worry if you end up needing to open 3 or 4!!