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
|
from ..Qt import QtGui, QtCore
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import collections
|
import collections
|
||||||
@ -295,7 +297,15 @@ class ImageItem(GraphicsObject):
|
|||||||
if self.image is None:
|
if self.image is None:
|
||||||
return None,None
|
return None,None
|
||||||
stepData = self.image[::step, ::step]
|
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]
|
return hist[1][:-1], hist[0]
|
||||||
|
|
||||||
def setPxMode(self, b):
|
def setPxMode(self, b):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user