Nicer range for value histogram of integer images.
When an ImageItem's data has an integer dtype, this patch ensures that each bin of the LUT histogram contains the same number of integer values, in order to avoid "spikes" in the histogram that are merely due to some bins covering more integer values than others. This commit needs testing (it was rebased from an old commit).
This commit is contained in:
parent
33e4a9e213
commit
20b9d079ce
@ -1,3 +1,5 @@
|
||||
from __future__ import division
|
||||
|
||||
from ..Qt import QtGui, QtCore
|
||||
import numpy as np
|
||||
import collections
|
||||
@ -295,7 +297,15 @@ class ImageItem(GraphicsObject):
|
||||
if self.image is None:
|
||||
return None,None
|
||||
stepData = self.image[::step, ::step]
|
||||
hist = np.histogram(stepData, bins=bins)
|
||||
if not np.iterable(bins):
|
||||
mn = stepData.min()
|
||||
mx = stepData.max()
|
||||
if stepData.dtype.kind in "ui": # unsigned or signed int
|
||||
# we want max - min to be a multiple of nbins
|
||||
range = mn, mn + np.ceil((mx - mn) / bins) * bins
|
||||
else:
|
||||
range = mn, mx
|
||||
hist = np.histogram(stepData, bins=bins, range=range)
|
||||
return hist[1][:-1], hist[0]
|
||||
|
||||
def setPxMode(self, b):
|
||||
|
Loading…
x
Reference in New Issue
Block a user