ITK
文章平均质量分 62
求则得之,舍则失之
这个作者很懒,什么都没留下…
展开
-
3D骨架提取
3D骨架提取算法的Python实现和C++实现,包括骨架提取以及写入树文件中:(1)Pythonimport itk# python -m pip install --upgrade pip# python -m pip install itk-thickness3ddef OutputTXT(filePath, list_centerLinePoint): with open(filePath, "w+") as fout: fout.writelines(原创 2021-11-08 17:35:04 · 2189 阅读 · 9 评论 -
ITK入门教程(17)nii,mhd,stl之间的相互转换
本文细说一下医学图像中常见的文件格式之间的转换。1.如何将raw/mhd转换为Nifti/nii您应该能够使用 SimpleITK 来完成。你会做这样的事情:import SimpleITK as sitkimg = sitk.ReadImage("input.mhd")sitk.WriteImage(img, "output.nii")如果python中没有SimpleITK,安装如下:pip install SimpleITKSimpleITK 尽最大努力保留所有标头信息,尽管它并原创 2021-11-08 16:47:30 · 5880 阅读 · 14 评论 -
ITK入门教程(16)法线作为像素类型
目录1.概述2.过程详解3.代码展示4.结果展示1.概述使用几何对象表面的点和与这些点相关的法线来表示几何对象是很常见的。使用itk::PointSet 类可以方便地对这种结构进行实例化。用来表示表面法线和函数梯度的常见类是itk::CovariantVector。一个协变向量在仿射变换中的行为方式与向量不同,特别是在各向异性的缩放比例上。如果一个协变向量表示一个函数的梯度,那么变换后的协变向量将也是变换后函数的有效梯度,这种特性是常规向量所不具备的。2.过程详解下面的代码展示了如何用一个协变向量原创 2021-11-08 15:10:15 · 198 阅读 · 0 评论 -
ITK入门教程(15)向量作为像素类型
目录1.概述2.过程详解3.代码4.结果展示1.概述这个例子阐述了如何参数化一个点集来管理一个特定的像素类型。将向量值和点相关联以创建一个几何表示是很普遍的。下面的代码展示了如何使用向量值作为点集PointSet类的像素类型。在这里使用itk::Vector 类作为像素类型。这个类很适合表示两个点之间的相对位置。然后就可以使用它来管理例如位移。2.过程详解为了使用向量类必须包含它的头文件和点集的头文件。#include "itkVector.h"#include "itkPointSet.h"原创 2021-11-04 17:17:48 · 312 阅读 · 0 评论 -
ITK入门教程(14)RGB作为像素类型
目录1.概述2.过程详解3.代码样例4.结果显示1.概述本例子阐述了如何参数化一个点集来管理一个特定的像素类型。在这种情况下就要使用RGB 类型的像素。2.过程详解第一步就是包含itk::RGBPixel 和itk::PointSet 类的头文件。#include "itkRGBPixel.h"#include "itkPointSet.h"然后通过选择用于表示每个RGB元素的类型来定义像素类型。typedef itk::RGBPixel< float > PixelType;原创 2021-11-04 14:25:15 · 295 阅读 · 0 评论 -
ITK入门教程(13)点集之得到点中的存储数据
目录1.概述2.过程讲解3.代码4.结果1.概述Itk::PointSet 类是与图像类交互的。因此点集中的点可以很方便地保存从图像计算得到的值。与点相关的值被指定为PixelType像素类型,以便使它跟图像术语保持一致。工具包中的泛型编程方式提供的灵活性,使得用户可以按自己的意愿来定义类型。PixelType像素类型是点集PointSet 的第一个模板参数。2.过程讲解下面的代码为像素类型定义了一个特殊的类型,并用它实例化一个点集PointSet类。typedef unsigned short原创 2021-11-04 13:19:25 · 319 阅读 · 0 评论 -
ITK入门教程(12)点集之得到存储的点
目录1.概述2.过程3.代码4.结果1.概述Itk::PointSet 类使用一个内部容器来管理itk::Points的存储。一般来说,通过使用点容器的直接访问方法来管理点将更加有效。2.过程下面的例子阐述了如何与点容器交互和如何使用点迭代器。这个类型是由点集PointSet 类的特性来定义的。下面这行程序便捷地从点集特性得到PointsContatainer 类型并在全局命名空间对它进行声明。typedef PointSetType::PointsContainer PointsContaine原创 2021-11-04 11:01:45 · 321 阅读 · 0 评论 -
ITK入门教程(11)点集之创建一个点集
目录1.概述2.过程3.代码4.结果1.概述Itk::PointSet 是一种在n 维空间中以点集的形式来表示几何图形的基类。它是为itk::Mesh提供操作点集的必要方法的基类。点具有和它们相关的值,这些值的类型是由itk::PointSet类(例如TPixelType)的模板参数来定义的。在ITK 中存在两种PointSets的基本交互方式,分别是静态的和动态的。使用静态方式的条件是:集合中点的数目预先知道,并且后继对点集的操作不会改变点的数目。另一方面,使用动态方式可以支持高效地对点进行插值和删除原创 2021-11-04 10:26:53 · 500 阅读 · 0 评论 -
ITK入门教程(10)ITK从缓冲器中导入图像数据
@TOC1.概述这个例子阐述了如何导入数据到itk::Image类中。这在和其它软件系统接口时非常有用。许多系统使用连续的内存块作为图像像素数据的缓冲器。当前的例子就是假定这种情况,并在缓冲器中插入一个itk::ImportImageFilter,从而产生一个图像作为输出。这里我们在本地分配的缓冲器内存上创建一个中心球体的合成图像,并将这个内存块传给ImportImageFilter。2.过程分析首先,必须包含itk::ImportImageFilter 类的头文件。#include "itkI原创 2021-11-04 09:53:37 · 665 阅读 · 0 评论 -
ITK入门教程(9)ITK向量图像
@TOC1.概述许多图像处理任务要求非标量像素类型的图像,一个常见的例子就是向量图像。图像类型要求能够表示标量图像的梯度。下面的代码阐述了如何实例化和使用向量类型像素的图像。方便起见,我们用itk::Vector 类来定义像素类型。向量类用来表示空间中的几何向量,这同STL 中把std::vector 作为数组容器的用法是不同的。如果你对容器感兴趣,itk::VectorContainer 类将提供给你所需要的功能。1.第一步就是包含向量类的头文件。#include "itkVector.h"2原创 2021-11-03 17:28:17 · 479 阅读 · 0 评论 -
ITK入门教程(8)ITKRGB图像
@TOC1.概述RGB(红、绿、蓝)是数字图像中常使用的一种彩色模型。RGB 表示的是使用三基色来分析人类肉眼所能分辨的可见光的代表彩色模型。ITK 使用itk::RGBPixel 类型来支持一个RGB 色彩空间值的表示。此处的RGBPixel 类与itk::Vector空间所包含的RGBPixel 类有着不同的含义。出于这个原因,RGBPixel 缺乏许多期望能对它做的操作。特别地,没有定义减法和加法的操作。当你对两个RGB 类型的像素进行求“均值”操作时,假定在色彩空间中提供了两种颜色的中间颜色原创 2021-11-03 16:51:55 · 629 阅读 · 0 评论 -
ITK入门教程(7)ITK定义原点和间距
主要内容1.概述2.代码实现3.结果参考目录1.概述尽管ITK可以用来执行通用图像处理的任务,但是这个工具包的主要目的是处理医学图像数据。因此关于图像的额外信息是强制性要求的。尤其是与像素间的物理间距相关联的信息、图像在一些世界坐标中的空间位置信息极其重要。图像原点、三维空间的体素(voxel)方向,和间距是很多应用的基础。例如配准就是在物理坐标中执行的。错误的定义间距、方向和原点在这样的处理中将导致不一致的结果。没有空间信息的医学图像不能被用于医学诊断、图像分析、特征提取、放射辅助治疗和图像指导手术原创 2021-11-03 16:24:30 · 1320 阅读 · 0 评论 -
ITK入门教程(6)ITK图像数据访问与修改(低效版本)
主要内容1.概述2.代码展示3.结果展示参考目录1.概述本节阐述SetPixel( )和GetPixel( )方法的用法。这两个方法可以直接访问图像中包含的像素数据。考虑到这两种方法相对缓慢,在高性能的访问需求中不宜使用。图像迭代器是有效访问图像像素数据的合适机制。图像中每个像素的位置是由一个唯一的index来识别。一个index 是一个整数数组,它定义了像素在图像中位置的坐标值。IndexType可以由图像自动定义并可以被像itk::Index这样的操作访问。数组的长度必须与对应图像的维数相匹配。原创 2021-11-03 15:16:48 · 722 阅读 · 0 评论 -
ITK入门教程(5)ITK图像读写之写TIFF图像
此示例演示如何显式指定要写入的图像类型,而不管指定文件名的扩展名。主要内容1.代码2.结果1.代码#include "itkImage.h"#include "itkImageFileWriter.h"#include "itkImageRegionIterator.h"#include "itkTIFFImageIO.h"intmain(int argc, char * argv[]){ std::string outputFilename; if (argc > 1) {原创 2021-11-03 11:10:43 · 592 阅读 · 0 评论 -
ITK入门教程(4)ITK图像读写
主要内容1. 常见的医学图像格式2. ITK的数据处理管道结构3. ITK图像读写机制4. 图像的读写程序示例5. 读写RGB图像/多维图像6. 图像数据类型转换7. 提取图像区域/提取三维数据体中的某层8. 访问/遍历图像像素9. 读写图像序列10. 提取DICOM图像的文件头信息1. 常见的医学图像格式2. ITK的数据处理管道结构ITK中的数据处理对象分为3种类型:Source类型对象的输出为数据对象,包括各种图像文件读取类Filter类型对象以一个或多个数据对象作为输入,然后输出一个原创 2021-11-01 11:25:43 · 6314 阅读 · 1 评论 -
ITK入门教程(3)仅对图像的指定区域应用过滤器
1.函数说明template<typename TPixel, unsigned int VImageDimension = 2> class Image : public itk::ImageBase<VImageDimension>模板化的 n 维图像类。图像基于像素类型(对因变量建模)和维度(自变量的数量)进行模板化。像素数据的容器是 ImportImageContainer。在像素容器内,图像被建模为数组,由起始索引和大小定义。Image 的超类 ImageBase原创 2021-10-29 16:27:07 · 414 阅读 · 0 评论 -
ITK入门教程(2)向索引添加偏移量
1.函数说明template<unsigned int VDimension = 2> struct Offset表示 n 维图像的两个 n 维索引之间的 n 维偏移。Offset 是一个模板类,用于表示多维偏移,即 (i,j,k,…)。Offset是在空间维度上模板化的。ITK假设size (bounds)的第一个元素是移动最快的索引。为了效率,Offset 没有定义默认构造函数、复制构造函数或 operator=。我们依靠编译器来提供高效的按位复制。Offset 是一个“聚合”类。原创 2021-10-29 15:57:45 · 342 阅读 · 0 评论 -
ITK入门教程(1)添加噪声
从本文开始,将开启ITK之旅!ITK 是一个开源的跨平台库,为开发人员提供了一套广泛的图像分析软件工具。 ITK 通过极限编程方法开发,建立在经过验证的面向空间的架构上,用于处理、分割和配准二维、三维或更多维的科学图像。1.函数说明template<typename TImage> class ImageRandomNonRepeatingIteratorWithIndex : public itk::ImageRandomNonRepeatingConstIteratorWithInde原创 2021-10-29 15:32:39 · 748 阅读 · 0 评论