落花逐流水
从事人工智能,模式识别与智能系统
展开
-
Slicer学习笔记(六十五) 3DSlicer的医学图像数据增强扩展模块
基于3D Slicer5.1.0 编写了一个测试医学图像的数据增强测试扩展模块。扩展模块名:DataAugementation下载该项目后,可以将该扩展模块添加到3D Slicer的扩展中。关于如何给3DSlicer 添加扩展可以看我前面的博客。原创 2024-03-02 22:36:30 · 621 阅读 · 0 评论 -
Slicer学习笔记(六十四) 关于3DSlicer的python脚本和编程
Slicer python脚本与编程原创 2023-07-09 17:10:08 · 1362 阅读 · 0 评论 -
Slicer学习笔记(六十三)3D Slicer 调试
Slicer C++ 调试原创 2023-02-18 10:13:37 · 779 阅读 · 0 评论 -
Slicer学习笔记(六十二)slicer下导出模块接口
通过配置config_file为每一个生成类添加 Export,并为每个Module生成 Export.h文件。原创 2022-12-12 22:19:15 · 270 阅读 · 0 评论 -
Slicer学习笔记(六十一)slicer下segmentation segment合并
slicer合并segment volume参考python源代码原创 2022-06-15 11:32:26 · 757 阅读 · 2 评论 -
Slicer学习笔记(六十)查看ctk CombBox的使用
Slicer学习笔记(六十)查看ctk CombBox的使用1、ctk的 CombBox的使用1、ctk的 CombBox的使用在slicer的jupyter扩展下输入如下命令:import ctkcomb = ctk.ctkComboBox()help(comb)得到提示:Help on ctkComboBox in module PythonQt.CTKVisualizationVTKWidgets object:class ctkComboBox(PythonQt.PythonQ原创 2022-04-12 15:13:25 · 272 阅读 · 0 评论 -
Slicer学习笔记(五十九)Model转Segmentation
Slicer学习笔记(五十九)Model转Segmentation1、Rasterize a model and save it to a series of image files1、Rasterize a model and save it to a series of image filesThis example shows how to generate a stack of image files from an STL file:inputModelFile = "/some/input原创 2022-04-06 17:12:30 · 361 阅读 · 0 评论 -
Slicer学习笔记(五十八)UI控件
Slicer学习笔记(五十八)UI控件1、下拉列表框控件 QComboBox2、ctk.ctkCollapsibleButton 示例代码2.1、示例1:XNATBrowser.py2.2、示例2:CIP_LesionModel.py3、CTK完整教程(OSGI for C++ 实现 C++ Qt 模块化)3.1、CTK介绍3.2、CTK Plugin Framework最近在关注控件的实现和调用,所以整理一下slicer中会用到的控件,可以是qt或者ctk控件。1、下拉列表框控件 QComboBox原创 2022-04-04 23:46:40 · 1331 阅读 · 0 评论 -
Slicer学习笔记(五十七)暂存
def get_ras_fiducial_ControlPoints(self, fiducial_name): fiducial_node = slicer.util.getFirstNodeByClassByName("vtkMRMLMarkupsFiducialNode", fiducial_name) ras = [0, 0, 0] fiducial_node.GetNthFiducialPosition(0, ras) return ras def cal..原创 2022-03-30 22:47:06 · 195 阅读 · 0 评论 -
Slicer学习笔记(五十六)slicer分割transformNode包含的信息与使用
Slicer学习笔记(五十六)slicer分割transformNode包含的信息与使用1、打印transformNode信息1、打印transformNode信息 def test_transform(self): transformMatrix = vtk.vtkMatrix4x4() print("transformMatrix \n", transformMatrix) transformMatrix.SetElement(0, 0, -1) transfor原创 2022-03-30 19:00:32 · 727 阅读 · 0 评论 -
Slicer学习笔记(五十五)slicer分割segmentationNode包含的信息与使用
Slicer学习笔记(五十五)slicer分割segmentationNode包含的信息与使用segmentationNode = slicer.util.getFirstNodeByClassByName("vtkMRMLSegmentationNode", self.seg_name[0]) print(segmentationNode)从下面的信息可以看到,保存的信息包括:原点、间距、范围、方向矩阵、成员个数、polydata信息、vtkMRMLSegmentationNode (00原创 2022-03-28 19:49:10 · 661 阅读 · 0 评论 -
Slicer学习笔记(五十四)slicer分割结果3D显示
Slicer学习笔记(五十四)slicer分割结果3D显示1、Create a segmentation from a labelmap volume and display in 3D2、Export labelmap node from segmentation node3、Export model nodes from segmentation node4、Create a hollow model from boundary of solid segment5、Show a segmentation原创 2022-03-26 23:01:28 · 2101 阅读 · 0 评论 -
Slicer学习笔记(五十三)slicer 数据转simpleITK数据
Slicer学习笔记(五十三)slicer 数据转simpleITK数据1、Running an ITK filter in Python using SimpleITK1、Running an ITK filter in Python using SimpleITK inputImage = sitkUtils.PullVolumeFromSlicer(self.volume_node) print(inputImage)Image (00000265CB863CC0) RTTI typei原创 2022-03-24 23:07:46 · 997 阅读 · 0 评论 -
Slicer学习笔记(五十二)slicer python扩展中生成ROI节点
Slicer学习笔记(五十二)slicer python扩展中生成ROI节点1、增加ROINode1、增加ROINode # Create ROI segment = segmentationNode.GetSegmentation().GetSegment(segmentId) roi=slicer.mrmlScene.AddNewNodeByClass("vtkMRMLAnnotationROINode") roi.SetName(segment.GetName() + " boundi原创 2022-03-23 23:25:51 · 3248 阅读 · 0 评论 -
Slicer学习笔记(五十一)slicer python扩展中在3D视图显示信息
Slicer学习笔记(五十一)slicer python扩展中在3D视图显示信息1、Display text in a 3D view or slice view1、Display text in a 3D view or slice viewThe easiest way to show information overlaid on a viewer is to use corner annotations.view=slicer.app.layoutManager().threeDWidget(原创 2022-03-21 20:03:06 · 1153 阅读 · 0 评论 -
Slicer学习笔记(五十)segment转labelmap
Slicer学习笔记(五十)segment转labelmapExport labelmap node from segmentation nodeExport labelmap node from segmentation nodeExport labelmap matching reference geometry of the segmentation:导出匹配分割的labelmapsegmentationNode = getNode("Segmentation")labelmapVolume原创 2022-02-11 11:42:04 · 587 阅读 · 0 评论 -
Slicer学习笔记(四十九)slicer vtkOrientedImageDataResample
Slicer学习笔记(四十九)slicer vtkOrientedImageDataResamplevtkOrientedImageDataResamplevtkOrientedImageDataResample文件路径slicersources-src\Libs\vtkSegmentationCore\vtkOrientedImageDataResample.cxx//-----------------------------------------------------------------原创 2022-02-09 14:58:40 · 322 阅读 · 0 评论 -
Slicer学习笔记(四十八)slicer vtkOrientedImageData
Slicer学习笔记(四十八)slicer vtkOrientedImageData1、方向信息的重要性1.1、动机 Motivation1.2、设计 Design1.3、路线图 RoadmapPhase 1. Algorithm feasibility - DONEPhase 2. Design feasibility - WIP2、vtkOrientedImageData1、方向信息的重要性Documentation/Labs/VTK-Orientation1.1、动机 MotivationIn原创 2022-01-30 14:19:46 · 741 阅读 · 0 评论 -
Slicer学习笔记(四十七)slicer vtkMRMLVolumeNode
Slicer学习笔记(四十七)slicer vtkMRMLVolumeNode1、vtkMRMLVolumeNode2、接口1、vtkMRMLVolumeNodevtkMRMLVolumeNode.h继承关系图与合作关系图:vtkMRMLVolumeNode Class Reference/*=auto========================================================================= Portions (c) Copyright原创 2022-01-29 16:22:44 · 1255 阅读 · 0 评论 -
Slicer学习笔记(四十六)slicer 常用的几个模块
Slicer学习笔记(四十六)slicer 常用的几个模块原创 2022-01-27 23:01:12 · 923 阅读 · 0 评论 -
Slicer学习笔记(四十五)slicer 模块分类
Slicer学习笔记(四十五)slicer 模块分类1、slicer支持的模块类型1.1、Command Line Interface (CLI)1.2、Loadable Modules1.3、Scripted Modules1、slicer支持的模块类型Slicer supports three types of modules: Command Line Interface (CLI), Loadable Modules and Scripted Modules.While the develop原创 2022-01-27 22:54:20 · 1345 阅读 · 0 评论 -
Slicer学习笔记(四十四)slicer 看到的原点在哪里
Slicer学习笔记(四十四)slicer 看到的原点在哪里标记了一下我们看到的数据的原点,原点位置其实在左下角。原创 2022-01-22 11:12:26 · 3277 阅读 · 1 评论 -
Slicer学习笔记(四十三)slicer Markups操作
Slicer学习笔记(四十三)slicer Markups操作参考:Script repository参考:Markups参考:原创 2022-01-21 09:46:48 · 626 阅读 · 0 评论 -
Slicer学习笔记(四十二)slicer c++源码编译
Slicer学习笔记(四十二)slicer c++源码编译1、cmake生成项目之前在windows下编译slicer,没有做笔记。后面再次编译还会踩坑。1、cmake生成项目注意关掉编译测试,之前因为这个很多次等没有编译通过,具体原因是因为下载数据失败。.........原创 2022-01-20 10:06:32 · 1049 阅读 · 0 评论 -
Slicer学习笔记(四十一)slicer Add noise to image
Slicer学习笔记(四十一)slicer Add noise to image1、Add noise to image1、Add noise to imageThis example shows how to add simulated noise to a volume.因为是数据共享内存,因此一个变量修改了,另一个变量也跟着变化了,所以只需要slicer.util.arrayFromVolumeModified(volumeNode) 就可以把变化更新到volumeNode。import S原创 2022-01-19 20:30:38 · 343 阅读 · 0 评论 -
Slicer学习笔记(四十)slicer从volume生成labelmap并显示
Slicer学习笔记(四十)slicer从volume生成labelmap并显示原创 2022-01-18 18:13:00 · 870 阅读 · 0 评论 -
Slicer学习笔记(四十)slicer中voume转lablemap并显示
这里写自定义目录标题1、导入数据2、数据转labelmap3、Segmentaion模块中导入3.1、创建分割3.2、导入labelmap4、创建封闭曲面显示1、导入数据2、数据转labelmap选择“create呢哇labelmapvolume”,单击【Convert】按钮。3、Segmentaion模块中导入3.1、创建分割3.2、导入labelmap导入后效果:4、创建封闭曲面显示...原创 2022-01-18 18:03:09 · 293 阅读 · 0 评论 -
Slicer学习笔记(三十九)slicer中Markups模块
Slicer学习笔记(三十九)slicer中Markups模块1、概念1.1、Markups模块简介1.2、应用方向1.3、界面面板1.Markups List2.Buttons And Checkboxes3.Markups Table4.Advanced: Buttons、Naming、Conversion5.Advanced: Display Properties6.Advanced: Display Properties: Fiducuial Projection2、python开发3、C++开发原创 2022-01-14 22:21:06 · 569 阅读 · 1 评论 -
Slicer学习笔记(三十八)slicer中vtkImageData
Slicer学习笔记(三十八)slicer中vtkImageData1、vtkImageData1、vtkImageData在vtk中vtkImageData 可以保存origin和spacing信息。但是在slicer中origin和spacing信息保存在volumeNode中,vtkImageData 可以保存origin和spacing信息分别保存0,0,0 和1,1,1否则操作可能得到错误的结果。\slicersources-src\Libs\MRML\Core\vtkMRMLVolume原创 2022-01-13 15:19:25 · 349 阅读 · 0 评论 -
Slicer学习笔记(三十七)slicer增加分割节点并显示
Slicer学习笔记(三十七)slicer增加分割节点并显示分割结果显示到slicer的3D视图。先将分割结果保存到vtkImageData,将vtkImageData转换成vtkO原创 2022-01-12 20:49:20 · 1628 阅读 · 0 评论 -
Slicer学习笔记(三十六)slicer坐标系
Slicer学习笔记(三十六)slicer坐标系1、坐标系统1.1、世界坐标系1.2、解剖坐标系1.3、图像坐标系1.4、图像变换1.5、二维示例或计算IJtoLS矩阵1.6、与其他软件/约定的关系1.7、参考后面几篇博客以Slicer学习笔记(三十五)slicer学习链接 为目录分别介绍使用与编程方面内容。1、坐标系统Coordinate systems介绍处理医学图像和应用时的一个问题是坐标系之间的差异。在成像应用中通常使用三种坐标系:世界坐标系、解剖坐标系和图像坐标系,它们之间存在差异。下原创 2022-01-01 00:59:07 · 2353 阅读 · 0 评论 -
Slicer学习笔记(三十五)slicer学习链接
Slicer学习笔记(三十五)slicer学习链接使用方面:坐标系:https://www.slicer.org/wiki/Coordinate_systems模块:https://slicer.readthedocs.io/en/latest/index.html要求:掌握这几个模块的用法:Volumes、Models、Segmentation、DICOM、Data、Volume rendering、Markups编程方面:参考代码:https://www.slicer.org/w原创 2021-12-31 23:08:26 · 469 阅读 · 0 评论 -
Slicer学习笔记(三十四)slicer增加节点与获取节点
Slicer学习笔记(三十四)slicer增加节点与获取节点1、在slicer的Data模块中查看数据2、打开Data模块的“Show MRML ID's”3、获取节点4、增加节点5、获取节点汇总1、在slicer的Data模块中查看数据2、打开Data模块的“Show MRML ID’s”3、获取节点获取节点有2种方式,分别是通过节点名和通过ID通过节点名获取节点:vtkMRMLScalarVolumeNode* volumeNode;通过ID获取节点:在这里插入代码片4、增加原创 2021-12-31 14:18:12 · 451 阅读 · 0 评论 -
Slicer学习笔记(三十三)slicer使用Eigen库
Slicer学习笔记(三十三)slicer使用Eigen库1、包含头文件2、定义变量1、包含头文件#include "vtk_eigen.h"#include VTK_EIGEN(Dense)//#include "itkeigen/Eigen/Dense"2、定义变量定义一个动态尺寸的浮点型矩阵。Eigen::MatrixXf a;定义一个动态尺寸的浮点型矩阵,并指定尺寸3行5列。Eigen::MatrixXf a(3,5);...原创 2021-12-25 22:11:54 · 349 阅读 · 0 评论 -
Slicer学习笔记(三十二)slicer读写DICOM文件
Slicer学习笔记(三十二)slicer读写DICOM文件DICOMLoad DICOM files into the scene from a folderImport DICOM files into the application’s DICOM database¶DICOMLoad DICOM files into the scene from a folderThis code loads all DICOM objects into the scene from a file folde原创 2021-12-10 16:11:48 · 972 阅读 · 2 评论 -
Slicer学习笔记(三十一)slicer调试Markups模块
Slicer学习笔记(三十一)slicer调试Markups模块1、源码编译3d slicer2、调试Markup模块2.1、调试设置2.2、进入调试2.3、通过上述一顿操作,我可以学到什么2.3.1、Q_D 与 Q_Q2.3.2、创建新基准点 fiducial1、源码编译3d slicer自己根据官网说明编译。2、调试Markup模块2.1、调试设置编译时选择编译模式为RelWithDeb。编译成功后就可以调试自己想学习的模块了。此时我想学习的是Markups模块,所以就调试这个模块了。先原创 2021-12-08 22:33:59 · 863 阅读 · 0 评论 -
python 命令行打开3d slicer模块
python 命令行打开3d slicer模块1、打开data模块1、打开data模块>>> slicer.modules.data.widgetRepresentation().show()原创 2021-12-06 21:03:31 · 1503 阅读 · 0 评论 -
Slicer学习笔记(三十)slicer编写c++扩展
Slicer学习笔记(三十)slicer编写c++扩展1、c++扩展模块 CMake文件2、程序执行3、编辑UI4、 编辑代码1、c++扩展模块 CMake文件准备操作,参考我的笔记十 Slicer学习笔记(十)怎样写一个slicer c++ 扩展模块 和笔记十二 Slicer学习笔记(十二)编写扩展模块cmake_minimum_required(VERSION 3.13.4)project(cpp_regist_seg)#----------------------------------原创 2021-11-19 22:16:51 · 2940 阅读 · 0 评论 -
slicer 的CropVolume模块
slicer 的CropVolume模块1、各向同性参数设置有参数及实现可知CropVolume 模块只能在各向同性时设置成三个方向间距一致缩放,或者在各向异性时,三个方向整倍数于原间距缩放。parameterNode->SetIsotropicResampling(true);各向同性if (isotropicResampling) { double minSpacing = std::min(std::min(inputSpacing[0], inputSpacing[原创 2021-11-18 17:21:45 · 446 阅读 · 0 评论 -
LPS和RAS坐标系
LPS和RAS坐标系1、坐标体系介绍2、世界坐标体系:3、解剖学坐标体系:4、图像坐标体系1、坐标体系介绍在图像处理的程序中通常运用三种坐标体系:世界坐标体系,解剖学上的坐标体系(也称为病人坐标体系)和图像坐标体系。2、世界坐标体系:世界坐标体系是典型的笛卡尔坐标体系,在这个坐标体系中模型(如核磁扫描器,病人)被定位。每个模型都有它自身的坐标体系但是只存在一个世界坐标体系来定义模型的位置与方向。(感觉在医学图像中并不会直接运用世界坐标体系,一般都是解剖学坐标体系和图像坐标体系的运用。)3、解剖学原创 2021-11-10 14:50:26 · 1836 阅读 · 0 评论