自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(361)
  • 资源 (6)
  • 收藏
  • 关注

原创 vtk.module文件

vtk.module文件是VTK 9.0构建系统的核心组件,用于模块化配置与管理。主要功能包括定义模块基本信息、声明依赖关系(公共/私有/可选/测试)、组织模块分类、指定许可证信息及添加元数据标记。该文件采用声明式结构,不包含过程式代码,通过vtk_module_scan函数为构建系统提供必要信息,实现依赖树自动管理、模块选择等功能,使VTK模块系统更灵活且易于维护。

2025-11-06 16:39:51 229

原创 VTK\Examples

VTK Examples目录提供全面的可视化示例,包含C++核心功能、GUI集成和专业应用三大类。核心部分包括数据操作(AMR/ImageProcessing)、医学可视化(Medical)和信息图表(Infovis/Charts);GUI集成支持Qt、iOS和Web等平台;专业应用涵盖并行处理、3D建模(Modelling)和文件IO。这些示例展示VTK从基础数据结构到高级可视化技术的完整功能,为开发者提供跨平台应用开发的参考实现。

2025-11-06 16:39:28 817

原创 DICOM文件厚度信息的作用

DICOM文件中的层厚信息是医学影像的关键参数,它定义了图像在Z轴方向的物理尺寸,将二维像素矩阵转为三维体素矩阵。层厚直接影响图像质量、测量准确性、三维重建效果及影像融合配准。薄层厚(0.5-1mm)提供高分辨率但噪声较大,适合精细结构显示;厚层厚(5-10mm)信噪比高但分辨率低,适用于快速筛查。层厚选择需权衡分辨率、噪声、扫描效率及数据量,临床常采用"先厚后薄"策略平衡诊断需求。单个DICOM文件仅代表二维切片,需系列文件才能构成三维容积数据。

2025-11-06 16:38:47 780

原创 MRML目录各子目录功能详解

本文详细介绍了3D Slicer中MRML目录的六个关键子目录及其功能:Core(基础节点和场景管理)、CLI(命令行接口支持)、DisplayableManager(数据可视化和交互)、IDImageIO(图像格式支持)、Logic(业务逻辑处理)和Widgets(界面组件)。这些子目录构成了分层架构,从数据存储、业务逻辑到界面展示层层递进,共同支撑起3D Slicer强大的医学影像处理和可视化能力。每个子目录都包含特定功能的类文件,通过协同工作实现医学数据的完整管理流程。

2025-11-05 16:34:06 807

原创 Slicer项目Base目录下各子目录功能详解

摘要:Slicer项目Base目录包含多个功能明确的子目录:CLI提供命令行工具框架;Logic处理核心业务逻辑;Python实现脚本接口;QTApp构建主界面;QTCLI将命令行工具GUI化;QTCore管理基础架构;QTGUI扩展GUI功能。采用分层架构,底层提供基础功能,上层实现应用界面,中间通过清晰接口交互,确保了模块化设计和扩展性。各目录协同工作,共同支持Slicer应用程序的开发和运行。(149字)

2025-11-05 16:32:47 488

原创 Slicer项目中以Module结尾的类及其关系

本文分析了Slicer项目的模块系统架构。该系统采用多层继承结构,以qSlicerAbstractCoreModule为基类,派生出包括qSlicerAbstractModule、qSlicerLoadableModule(支持Python扩展)、qSlicerCLIModule(命令行模块)和qSlicerCoreModule等多种模块类型。每个模块由主模块类、Widget类(UI)、Logic类(业务逻辑)和UI定义组成,通过qSlicerCoreApplication统一管理。这种设计实现了高度的模块

2025-11-05 16:31:13 426

原创 SliceView鼠标中键拖动交互过程分析

本文分析了Slicer项目中SliceView和3D视图的交互机制。SliceView的鼠标中键拖动通过事件映射到平移操作状态机,核心实现包括坐标转换和视图更新。3D视图相机操作由vtkMRMLCameraWidget等类协作完成,支持旋转、平移、缩放和自旋四种交互,通过事件映射系统将用户输入转换为相机动作。两种视图交互均采用状态机设计,确保操作的一致性和灵活性。

2025-11-05 14:47:12 789

原创 SubjectHierarchy 模块功能详解

SubjectHierarchy模块是3D Slicer中一个核心的组织和导航组件,为用户提供了一个直观的树状视图来管理和访问加载的数据。该模块虽然默认隐藏(通过isHidden()返回true),但其功能贯穿整个Slicer应用程序,是许多操作的中央组织点。

2025-11-05 14:46:27 240

原创 volumeNode导出保存的实现过程

用户请求保存volumeNode创建或获取适当的存储节点(如设置文件名和格式选项调用WriteData方法开始保存过程在中配置并执行实际的文件写入处理可能的错误和格式特定警告更新节点状态并完成保存通过这种分层设计和灵活的格式支持,Slicer能够高效地处理各种体积数据的导出保存需求。

2025-11-05 14:45:50 357

原创 Slicer中Python解释器的集成与剥离

摘要:本文分析了3D Slicer中Python解释器的集成机制与剥离方法。Slicer通过PythonQt库实现Python与Qt的交互,采用CMake条件编译选项控制集成。提供了两种剥离方式:编译时完全禁用(推荐)和运行时临时禁用。禁用Python会限制脚本化模块功能但保留核心C++功能,同时减少资源占用。Slicer的设计支持灵活控制Python集成程度,满足不同使用需求。

2025-11-05 14:45:15 399

原创 Slicer中使用的坐标系

Slicer选择RAS坐标系作为内部表示主要源于历史原因:21世纪初Slicer开发初期,GE设备使用RAS,而Siemens等其他厂商使用LPS。由于几位GE研究人员是Slicer的早期贡献者,RAS被选为内部表示方式。RAS和LPS坐标系的区别仅在于前两个坐标轴的符号相反。通过这种设计,Slicer能够保持内部一致性,同时确保与使用LPS坐标系的大多数医学影像软件的兼容性。:Slicer默认假设文件中的数据采用。(除非文件明确指定坐标系为RAS):Slicer内部统一使用。

2025-11-05 14:44:47 256

原创 Slicer中的XYZ和UVW坐标系

Slicer切片系统采用XYZ和UVW两套坐标系:XYZ对应2D切片视图,UVW用于3D纹理映射。通过SliceResolutionMode的5种模式控制UVW设置,如匹配体数据或2D视图分辨率。系统采用XY和UVW双管道处理,分别使用XYToIJKTransform和UVWToIJKTransform进行转换。这种设计通过多种转换矩阵(如XYToRAS、UVWToRAS)实现了2D/3D渲染的灵活切换,在保证显示质量的同时优化性能。

2025-11-05 14:44:29 360

原创 Slicer中的Crosshair和IntersectionWidget

3D Slicer中Crosshair和IntersectionWidget协作实现多平面交互功能。CrosshairNode管理十字线的显示模式、位置等状态,IntersectionWidget处理用户交互并更新十字线位置。二者通过vtkMRMLCrosshairDisplayableManager协同工作:Widget捕获交互更新Node数据,DisplayableManager监测Node变化并更新显示。这种分离协作的设计为医学影像提供了灵活的多平面交叉线交互功能。

2025-11-05 14:43:30 775

原创 ctkLayoutManager

【代码】ctkLayoutManager。

2025-10-30 21:33:34 118

原创 Slicer中VolumeNode与切片视图实现的机制

在 Slicer 中,volumeNode 与切片视图的关联是通过一套完整的 MRML 节点和逻辑类体系实现的。

2025-10-30 21:32:17 929

原创 Slicer中启动器的生成过程

SlicerCAT.exe是Slicer应用程序的一个定制版本,其生成过程主要通过CMake构建系统实现。qSlicerApp整个过程充分利用了CMake的宏机制和CTKAppLauncher框架,实现了灵活的应用程序打包和启动管理。

2025-10-30 21:31:30 868

原创 Slicer模块系统:核心继承架构解析

Slicer模块系统类摘要 Slicer采用多层次的模块化架构,主要类继承关系如下: 基础类: qSlicerAbstractCoreModule - 模块系统基类,定义生命周期和基本属性 GUI扩展类: qSlicerAbstractModule - 添加图标和QAction支持 具体模块类型: qSlicerLoadableModule - 动态加载模块基类 qSlicerScriptedLoadableModule - Python脚本扩展支持 qSlicerCLIModule - 命令行接口模块 q

2025-10-30 21:30:24 740

原创 Slicer项目Base目录

Slicer项目的Base目录采用分层架构设计,包含多个功能明确的子目录。CLI目录提供命令行工具框架,Logic负责核心业务逻辑,Python实现Python接口集成。QTApp实现主界面,QTCLI封装CLI模块的GUI,QTCore提供基础框架,QTGUI扩展GUI功能。各模块间通过接口交互,形成底层基础→中间框架→上层实现的分层结构,兼顾功能完整性和模块化扩展性,支持灵活定制。

2025-10-30 21:28:53 507

原创 Slicer中MRML目录下各个子目录功能概述

MRML(Medical Reality Markup Language)是3D Slicer的核心数据管理系统,其目录结构按功能划分为多个子模块。Core子目录提供基础架构和节点定义;CLI子目录处理命令行接口;DisplayableManager负责数据可视化渲染;IDImageIO实现特定图像格式支持;Logic子目录包含业务逻辑组件;Widgets提供基于Qt的交互界面。这种分层架构实现了医学影像数据的高效管理和交互式可视化,各模块协同工作形成一个完整的数据-视图-交互体系。

2025-10-30 21:27:55 628

原创 LayoutManager

摘要 CTK布局系统包含三个核心类:ctkLayoutManager(抽象基类)负责解析XML布局并管理Qt布局;ctkLayoutViewFactory(抽象工厂)标准化视图创建接口;ctkLayoutFactory(继承自ctkLayoutManager)实现多工厂注册机制。系统采用工厂模式、组合模式等设计模式,通过类继承和组合关系实现灵活扩展,支持多种布局类型和视图配置,能够处理复杂布局需求。

2025-10-22 10:49:01 287

原创 QPushbutton设置ICON和文字

2.如果想让icon显示在文字上方可使用QToolButton。3.在pushbutton上面使用label进行布局。缺点:无法设置icon和文字之间的距离。1.使用系统自带api。

2023-05-09 09:59:06 3799

原创 C++标准库输出时间

【代码】C++标准库输出时间。

2023-04-10 11:51:50 518

原创 This CMake does not support the HTTPS protocol.

【代码】This CMake does not support the HTTPS protocol.

2023-03-05 12:41:27 347

原创 已经完成Qt布局中,添加布局

问题:已经布局好的UI,需要添加两个按钮布局后再添加到原有布局中,无法使用Designer拖动实现方法:直接修改.ui对应的xml,添加一个layout然后再将部件添加到布局中。

2022-09-29 16:02:09 860

原创 REST架构风格

REST架构风格详解架构风格与基于网络应用软件的架构设计(中文修订版)李锟谈 Fielding 博士 REST 论文中文版发布Architectural Styles and the Design of Network-based Software Architectures什么是RPC,你知道嘛?李锟RPCDubboDubbo基础及原理机制

2022-09-29 15:48:22 192

原创 DICOM数据中计算IJK2RAS矩阵

DICOM中Tag解析

2022-07-14 16:13:09 548

原创 cmake命令行使用

cmake的命令行使用

2022-07-06 11:35:24 1388

原创 如何统计项目代码行数

Linux命令入门及使用

2022-06-28 16:34:30 10800

原创 cmake自定义模块和模块使用

CMake编程实践(六) 模块使用和自定义模块CMake编程实践(三) 常用变量和常用环境变量cmake 生成供find_package使用的自定义模块cmake 模块的使用和自定义模块模块的使用和自定义模块cmake中 target_include_directories的用法VSCode CMake 安装与配置详解When should I quote CMake variables?CMake: how to use INTERFACE_INCLUDE_D...

2022-05-11 16:23:52 666

原创 这个玩意儿挺复杂

cmake 生成供find_package使用的自定义模块005 - 使用 CMake 生成动态库/静态库如何为cmake提供package以便于find_package, 以及用VCPKG补充CMake实现快速下载集成如何通过cmake自动拷贝运行所需dll到executable目录CMake教程——零碎笔记IMPORTED_LOCATION...

2022-05-11 10:43:06 167

原创 GDCM样例

样例程序Test.cpp#include <iostream>#include <vector>#include "gdcmImage.h"#include "gdcmImageReader.h"#include "gdcmTag.h"#include <string>#include <locale>#include <codecvt>#include <Windows.h>// UTF8转std..

2022-04-11 20:05:55 14708

原创 线程中启动定时器,定时器事件在定时器中响应

timerForProgress.setInterval(200); timerForProgress.start(); timerForProgress.moveToThread(&thread); connect(&timerForProgress, &QTimer::timeout, this, &CycadOralScanRegistrationDialog::onTimerForProgressTimeout, Qt::Direc.

2021-12-08 15:22:02 296

原创 【点云精配准】Iterative Closest Point(ICP)

参考【点云精配准】Iterative Closest Point(ICP)

2021-12-04 15:26:37 269

原创 Qt动态属性

Qt的动态属性unpolish()和polish()1. Qt中的属性属性是指窗口或控件的属性,比如opacity属性表示“透明度”,geometry指的是“位置和大小”,pos属性代表“位置”。qt中的控件有自带的属性,我们也可以自己定义属性。QObject这个类有一个函数setProperty,我们可以通过这个函数定义自己的属性,使用方法很简单,setProperty(const char * name, const QVariant & value),第一个参数是属性的名称,第二个

2021-11-28 23:11:50 3312

原创 C++ sqlite3解决中文排序问题

导言:sqlite3默认的编码方式为UTF8编码,而在UTF8编码下,中文不是按照拼音顺序编码的,所以想解决中文排序问题,必须自定义排序规则,将UTF8编码转换成GB2312编码(GB2312编码中文是按照拼音顺序编码的),然后再进行比较大小,就可以得到正确的排序结果了。#include "sqlite3.h"#include <Windows.h>#include <string>#include <vector>using std::vector;u

2021-11-04 00:09:53 1520

原创 QComboBox下拉菜单中有分隔符Separator时的样式设置

QHBoxLayout* lay = new QHBoxLayout(this); // 创建测试用的下拉框对象 QComboBox* cbo = new QComboBox(this); lay->addWidget(cbo, 0, Qt::AlignTop | Qt::AlignHCenter); // 添加测试用的数据 cbo->addItem("the 1st data"); cbo->insertSeparator(1); // 添加的分割符 cb..

2021-10-31 22:53:48 1460

原创 QT 对话框添加背景图片的方法

QPalette的方法#include < QApplication >#include < QtGui >int main( int argc, char * argv[]){ QApplication app(argc,argv); QFrame * frame = new QFrame; frame -> resize( 400 , 700 ); QPixmap pixmap("images/

2021-10-31 22:48:14 817

原创 QMenu的使用

添加分割线样式QMenu{ color:rgb(123,123,123); background-color:#052331; border:none;}QMenu::item{ color:rgb(123,123,123); background-color:rgb(75,171,121); width:50px; height:35px; padding-lef.

2021-10-31 22:36:36 9401

原创 How to Shrink a Git Repository

参考https://web.archive.org/web/20190207210108/http://stevelorek.com/how-to-shrink-a-git-repository.html

2021-10-25 10:56:12 151

原创 Excel表格中从右往左指定字符分割的字串提取

提取单元格A3中,"/"符号分隔的最后一个字串:=TRIM(RIGHT(SUBSTITUTE(A3,"/",REPT(" ",LEN(A3))),LEN(A3)))

2021-09-17 10:39:40 1933

基于Qt5.12.9和vs2017编译的x64版本的CTK库

基于Qt5.12.9和vs2017编译的x64版本的CTK库

2020-12-25

东灵工作室四视图样例程序分析.rar

东灵工作室四视图样例程序分析

2021-03-16

windows注册表配置生成DUMP批处理文件

windows注册表配置生成DUMP

2021-01-21

C++11之std::future以及async函数、promise类和packaged_task类结构图

C++11之std::future以及async函数、promise类和packaged_task类结构图

2021-03-18

thriftSample.rar

thriftSample.rar

2021-03-16

Qt多语言平台实现.rar

Qt多语言平台实现.rar

2021-03-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除