图像归一化处理

文章目录

  • 前言
  • 1.min-max归一化
  • 2.Z-score归一化

前言

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

下面将介绍两种常见的归一化方法,并展示相应的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
该方法适用大多数类型的数据,能较好的保持原有数据分布结构,但是不适合用于稀疏数据的处理,对异常值的存在非常敏感。

图像归一化处理_第1张图片

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μ
该方法适用大多数类型的数据,但是它是一种中心化方法,会改变原有数据的分布结构,同样也不适用于稀疏数据的处理。

图像归一化处理_第2张图片

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))

你可能感兴趣的:(数字图像处理,预处理,机器学习,机器学习,python,深度学习,人工智能,算法)