Image data type ranges

Neil Yager yager.neil at gmail.com
Wed Oct 26 06:51:33 EDT 2011


> I do not think that using an np.arange(n) is a reasonable/common
> to do by the way. What is the expected behavior?

I've seen it used for demo/testing for quickly creating an array with
a range of values (it is being used in a unit test). In the context of
this discussion, it is just an example of a way a user may end up with
an array of int32s without really thinking about it, thereby getting
themselves into trouble.

> Maybe we can check whether the upper bound is satisfied. That
> probably wouldn't hurt much if we convert any way.

I think that might be the best way.

> Also, we should stress in the (at the moment not really existing)
> user guide, that users should NEVER EVER use "astype" on an image,
> since that violates all our assumptions.

I completely agree. However, the explicit use of "astype" is just one
of many ways to find yourself in this situation. e.g.:

>>> x = np.arange(9).reshape((3, 3)) + 1.
>>> y = skimage.img_as_ubyte(x)
>>> y
array([[255, 254, 253],
       [252, 251, 250],
       [249, 248, 247]], dtype=uint8)

The core issue is to make sure that users know the assumed range for
floats.

Neil



More information about the scikit-image mailing list