
ITK记录
lizy_fish
这个作者很懒,什么都没留下…
展开
-
dicom序列转换为体数据(C++完整代码)
对于文件夹中的dicoms序列,需要将之转换为体数据格式,如mhd,nii.gz等格式,ITK有封装好的模块,但是需要自行进行组装。1,需要的头文件包括如下几个:#include "itkGDCMSeriesFileNames.h"#include "itkGDCMImageIO.h"#include <itkImage.h>#include <itkImageFileReader.h>#include "itkImageFileWriter.h"#include "i原创 2020-12-16 15:00:39 · 1297 阅读 · 0 评论 -
ITK配准--Transform 使用的注意事项
1,最简单的方法,直接使用registration->GetTransform()如果配准之前,没有对Transform进行初始化的,则配准之后的registration->GetTransform()可以直接使用,例子如下: using RegistrationType = itk::ImageRegistrationMethodv4<FixedImageType,原创 2020-09-14 15:40:15 · 1206 阅读 · 4 评论 -
ITK 配准中优化器参数的理解和使用
导读ITK配准中,需要设置优化器,如OptimizerAsRegularStepGradientDescent,而这个优化器实例化的时候需要传入相关的参数,其中常用的有如下四个:学习率(LearningRate)这里的学习率指参数更新一次,参数移动的初始步长。以平移变换为例(Tx,Ty),学习率的a,则迭代一次后:Tx += a;Ty += a;最小移动步长(MinimumStepLength)当学习率小于最小移动步长的时候,优化触发结束,配准过程完成。相关因子(RelaxationFac原创 2020-09-10 17:12:11 · 689 阅读 · 0 评论 -
ITK image获取像素值的多种方法(完整代码)
对于图像处理中,对像素进行遍历的处理是基本操作,所以在使用第三方库的时候,如ITK,需要知道如何获取像素的值,才能更好的进行扩展,如添加自定义的滤波等;另一方面,方便将ITK的数据类转换为自己软件定义的数据封装类或者转换为其他库的数据类。结合ITK官方文档提供了两种获取像素的方法和研究ITK源码,我总结出4种方法如下:调用GetPixel 函数(低效率,官方文档)采用迭代器(高效率,官方文档)采用重载()操作符(低效率,源码所得)直接提取内存buffer(高效率,源码所得)调用GetPixel 函数(低原创 2020-08-19 15:45:43 · 2547 阅读 · 5 评论 -
基于C++和ITK获取2D或3D医学图像的最大连通区域(完整代码)
对于图像处理,如器官分割等,获取最大连通区域常常是后处理的最好一步,用于去除其他误分割的小区域。虽然最大连通区域的算法自己写起来也很快,但是,遵循不重复造轮子的代码风格,本文将记录ITK是如何获取最大连通区域的。最大连通区域的获取1,获取二值化的分割结果mask2, 调用ITK的itkConnectedComponentImageFilter3,调用ITK的itkLabelShapeKeepNObjectsImageFilter4,将Label便签转换为15,保存最大连通区域图像1,获取二值化的分割原创 2020-08-11 16:55:30 · 1859 阅读 · 5 评论 -
itk::Image和libtorch::tensor 互相转换的代码实现
方法一:itk::image 转buffer,然后调用torch::from_blob步骤如下:1,读取图像到itk::Image2,将itk::Image 的数据写入连续的buffer中3,调用libtorch的from_blob函数将buffer的内容转入tensor// read image with itk const char* im_path = "H:\\tmp\\a\\src.mhd"; using ImageType = itk::Image<float,3原创 2020-08-05 14:16:24 · 1317 阅读 · 7 评论