数据处理通道
数据对象 data objects :(e.g. Images and Meshes) 是用来表示数据的,过程对象process objects 是用来操作 并产生新的数据对象的类,像 sourse,filter object 和 mappers 都是过程对象。Sourse (例如readers) 生成数据,filter object 载入数据并经过处理产生新的数据,而mapper接受数据并输出到一个文件或其他系统中。有时候 filter 可以广义上表示所有三种类型。
数据处理管道连接了数据对象和过程对象。管道支持一个自动更新机制。该机制当且仅当它的输入或内在状态发生改变时才会唤起一个滤波器来进行执行,通常使用 SetInput() 和 GetOutput() 方式连接数据对象和过程对象,比如:
process_object.SetInput(data_object.GetOutput())
ITK 关于图像的一个重要概念是区域 regions,它是一个矩形的,连续的图像块。区域用来指定图像中的处理的部分。在ITK中由三种常见的区域类型:
- LargesPossibleRegion 全部图像
- BufferedRegion 保存在内存中的图像部分
- RequestedRegion 对图像操作时滤波器或其他类需要的部分
数据管道支持 streaming,可以将数据分成许多不重叠的小部分,对这些小部分进行逐一处理,并重新集合处理后的数据产生最终结果,这在处理多维图像这种很大的数据的时候特别有效,这里面的小部分就是RequestedRegion,具体方法是在管道末端的 filter_object.SetNumberOfStreamDivisions(5) 。
代码解释
import numpy as np
import itk
from itkwidgets import view,compare
图像处理管道开始与 source 比如 ImageFileReader
fileName = 'data/PacMan.png'
reader = itk.ImageFileReader.New(FileName=fileName) #单个文件读取 多个文件读取选 ImageSeriesReader
然后用一个 smoothing filter 来连接管道