[scikit-image] data types

Juan Nunez-Iglesias jni.soma at gmail.com
Thu Mar 29 13:46:18 EDT 2018


I think maybe 50% of our bug reports/help requests have to do with image data types. Does anyone want to express an opinion about how we can fix things?

My humble (really) suggestions, *to start* (ie more needs to be done than this):

* If a 16-bit or higher image has no values above 4096 or below 0, treat the image as 12 bit. This is a very common image type for some reason.

* If an integer image has no values above 255, treat it as an 8-bit image. This also happens a lot.

* If a floating point image has values outside [0, 1], don’t croak, just accept it. (This might have already happened?) If it has values only in [0, 1/255], and the user wants to convert to uint8, use the input range as the range.

Some of these, especially the last one, may appear too magical, and in some ways I think they are, but honestly, given the frequency of problems that we get because of this, I think it’s time to suck it up and really work on doing what most of our users want most of the time. We don’t need to coddle the power users — they can be annoyed and micromanage the image range properly. To paraphrase a tweet I saw once (sorry, couldn’t find attribution): “edge cases should be used to check the design, not drive it.”

Applied to this case, we shouldn’t scale a uint32 image by 2**(-32) just because we can come up with a test case where this is useful.

Some of these problems would be alleviated by some consistent metadata conventions.

Juan.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-image/attachments/20180329/8bfb3e47/attachment.html>


More information about the scikit-image mailing list