栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

医学图像预处理----StatisticalNormalization

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

医学图像预处理----StatisticalNormalization

基于统计的窗口化操作,根据图像的统计信息,例如图像均值作为窗口中心,正负2.5(这个值并非固定)的方差作为窗口宽度

sitk.NormalizeImageFilter()通过将其均值设置为零并将方差设置为 1 来标准化图像。
sitk.StatisticsImageFilter()计算 Image 的最小值、最大值、方差和平均值。
sitk.IntensityWindowingImageFilter()将线性变换应用于用户定义的间隔内的输入图像的强度级别。 低于此间隔的值被映射到一个常数。 区间内的值被映射到另一个常量。
class StatisticalNormalization(object):
	"""
	Normalize an image by mapping intensity with intensity distribution
	"""

	def __init__(self, sigma, pre_norm=False):
		self.name = 'StatisticalNormalization'
		assert isinstance(sigma, float)
		self.sigma = sigma
		self.pre_norm=pre_norm

	def __call__(self, sample):
		image, label = sample['image'], sample['label']

		for image_channel in range(len(image)):
			if self.pre_norm:
				normalFilter= sitk.NormalizeImageFilter()
				image[image_channel] = normalFilter.Execute(image[image_channel])

			statisticsFilter = sitk.StatisticsImageFilter()
			statisticsFilter.Execute(image[image_channel])

			intensityWindowingFilter = sitk.IntensityWindowingImageFilter()
			intensityWindowingFilter.SetOutputMaximum(255)
			intensityWindowingFilter.SetOutputMinimum(0)
			intensityWindowingFilter.SetWindowMaximum(statisticsFilter.GetMean()+self.sigma*statisticsFilter.GetSigma());
			intensityWindowingFilter.SetWindowMinimum(statisticsFilter.GetMean()-self.sigma*statisticsFilter.GetSigma());

			image[image_channel] = intensityWindowingFilter.Execute(image[image_channel])

		return {'image': image, 'label': label}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/619144.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号