commit
017e73957b
@ -268,8 +268,9 @@ class ImageItem(GraphicsObject):
|
|||||||
img = self.image
|
img = self.image
|
||||||
while img.size > 2**16:
|
while img.size > 2**16:
|
||||||
img = img[::2, ::2]
|
img = img[::2, ::2]
|
||||||
mn, mx = img.min(), img.max()
|
mn, mx = np.nanmin(img), np.nanmax(img)
|
||||||
if mn == mx:
|
# mn and mx can still be NaN if the data is all-NaN
|
||||||
|
if mn == mx or np.isnan(mn) or np.isnan(mx):
|
||||||
mn = 0
|
mn = 0
|
||||||
mx = 255
|
mx = 255
|
||||||
kargs['levels'] = [mn,mx]
|
kargs['levels'] = [mn,mx]
|
||||||
@ -470,7 +471,7 @@ class ImageItem(GraphicsObject):
|
|||||||
This method is also used when automatically computing levels.
|
This method is also used when automatically computing levels.
|
||||||
"""
|
"""
|
||||||
if self.image is None or self.image.size == 0:
|
if self.image is None or self.image.size == 0:
|
||||||
return None,None
|
return None, None
|
||||||
if step == 'auto':
|
if step == 'auto':
|
||||||
step = (max(1, int(np.ceil(self.image.shape[0] / targetImageSize))),
|
step = (max(1, int(np.ceil(self.image.shape[0] / targetImageSize))),
|
||||||
max(1, int(np.ceil(self.image.shape[1] / targetImageSize))))
|
max(1, int(np.ceil(self.image.shape[1] / targetImageSize))))
|
||||||
@ -479,8 +480,11 @@ class ImageItem(GraphicsObject):
|
|||||||
stepData = self.image[::step[0], ::step[1]]
|
stepData = self.image[::step[0], ::step[1]]
|
||||||
|
|
||||||
if bins == 'auto':
|
if bins == 'auto':
|
||||||
mn = stepData.min()
|
mn = np.nanmin(stepData)
|
||||||
mx = stepData.max()
|
mx = np.nanmax(stepData)
|
||||||
|
if np.isnan(mn) or np.isnan(mx):
|
||||||
|
# the data are all-nan
|
||||||
|
return None, None
|
||||||
if stepData.dtype.kind in "ui":
|
if stepData.dtype.kind in "ui":
|
||||||
# For integer data, we select the bins carefully to avoid aliasing
|
# For integer data, we select the bins carefully to avoid aliasing
|
||||||
step = np.ceil((mx-mn) / 500.)
|
step = np.ceil((mx-mn) / 500.)
|
||||||
|
Loading…
Reference in New Issue
Block a user