通过给定的最大和最小窗口级别映射强度来标准化图像
sitk.IntensityWindowingImageFilter()将线性变换应用于用户定义的间隔内的输入图像的强度级别。 低于此间隔的值被映射到一个常数,区间内的值被映射到另一个常量
class ManualNormalization(object):
"""
Normalize an image by mapping intensity with given max and min window level
"""
def __init__(self,windowMin, windowMax):
self.name = 'ManualNormalization'
assert isinstance(windowMax, (int,float))
assert isinstance(windowMin, (int,float))
self.windowMax = float(windowMax)
self.windowMin = float(windowMin)
def __call__(self, sample):
image, label = sample['image'], sample['label']
intensityWindowingFilter = sitk.IntensityWindowingImageFilter()
intensityWindowingFilter.SetOutputMaximum(255)
intensityWindowingFilter.SetOutputMinimum(0)
intensityWindowingFilter.SetWindowMaximum(self.windowMax);
intensityWindowingFilter.SetWindowMinimum(self.windowMin);
for channel in range(len(image)):
image[channel] = intensityWindowingFilter.Execute(image[channel])
return {'image': image, 'label': label}