图像归一化处理

前言

在医学图像领域,由于不同设备的采集、成像因素等原因造成相同的组织在图像灰度信息上的不一致,图像归一化就是在保留具有诊断价值的灰度差异的同时,减小甚至消除图像中灰度不一致而进行的图像转换方法,图像的归一化更有利于计算机自动分析处理。因此,图像归一化就是通过一系列的变换,将待处理的原始图像转换成相应的标准形式。

下面将介绍两种常见的归一化方法,并展示相应的python代码。

1.min-max归一化

通过遍历图像矩阵中的每一个像素,设定max和min,进行数据的归一化处理:
x n o r m a l i z a t i o n = x − M i n M a x − M i n x_{normalization}=\frac{x-Min}{Max-Min} xnormalization=MaxMinxMin
该方法适用大多数类型的数据,能较好的保持原有数据分布结构,但是不适合用于稀疏数据的处理,对异常值的存在非常敏感。

在这里插入图片描述

import SimpleITK as sitk
import os
from os.path import join

image = sitk.ReadImage(imagepath)
resacleFilter = sitk.RescaleIntensityImageFilter()
resacleFilter.SetOutputMaximum(255)
resacleFilter.SetOutputMinimum(0)
res = resacleFilter.Execute(image)
sitk.WriteImage(res, outputpath)

2.Z-score归一化

Z-score给予原始数据的均值(mean)和标准差(standard deviation)进行数据的归一化,公式如下,意义为数值距离均值有几个标准差,当E(Z)=0,SD(Z)=1,即均值为0,标准差为1,则表示经过处理后的数据符合标准正态分布。
x n o r m a l i z a t i o n = x − μ σ x_{normalization}=\frac{x-\mu }{\sigma } xnormalization=σxμ
该方法适用大多数类型的数据,但是它是一种中心化方法,会改变原有数据的分布结构,同样也不适用于稀疏数据的处理。

在这里插入图片描述

import SimpleITK as sitk
import os

image = sitk.ReadImage(imagepath)
img_arr = sitk.GetArrayFromImage(image)
img_ori = image.GetOrigin()
img_spacing = image.GetSpacing()
img_dir = image.GetDirection()
mn = img_arr.mean()
sd = img_arr.std()
new_arr = (img_arr - mn) / sd
res = sitk.GetImageFromArray(new_arr)
res.SetOrigin(img_ori)
res.SetSpacing(img_spacing)
res.SetDirection(img_dir)
sitk.WriteImage(res, os.path.join(res, outputpath))
  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值