CTK (Common Toolkit) 简介
CTK(Common Toolkit)是一个开源的 C++ 工具包,主要用于 医疗影像和医学图像处理(如 DICOM 可视化、DICOM 网络通信、插件系统开发等)。它基于 Qt 框架,并提供了一系列模块化的组件,适用于跨平台开发(Windows、macOS、Linux)。
【链接】:
示例代码:
CTK/Examples
目录
1. CTK 核心模块
CTK 提供了多个功能模块,主要包括:
模块名称 | 功能描述 |
---|---|
CTK Core | 基础工具类(日志、文件 IO、线程管理等) |
CTK Widgets | 扩展 Qt Widgets,提供医学影像相关的 UI 组件(如 DICOM 浏览器) |
CTK DICOM | DICOM 标准支持(网络通信、文件解析、查询/检索等) |
CTK Plugin | 动态插件框架(类似 OSGi),支持模块化加载和热插拔 |
CTK Visualization | 医学图像可视化(VTK 集成,支持 2D/3D 渲染) |
2. CTK 主要特点
(1) 基于 Qt,跨平台
-
支持 Windows、macOS、Linux。
-
与 Qt 信号槽机制深度集成。
(2) 模块化设计
-
采用 插件系统(CTK Plugin Framework),支持动态加载和卸载模块。
-
类似 OSGi,适用于大型医学影像软件(如 3D Slicer 就使用了 CTK)。
(3) DICOM 支持
-
提供 DICOM 网络通信(DIMSE 协议):
-
C-ECHO(验证连接)
-
C-FIND(查询)
-
C-MOVE(检索)
-
C-STORE(存储)
-
-
支持 DICOM 文件解析(CTK DICOM Dataset)。
(4) 医学图像可视化
-
集成 VTK(Visualization Toolkit),支持 2D/3D 医学影像渲染。
-
提供 QVTKWidget,方便在 Qt 界面中嵌入 VTK 视图。
3. CTK 应用场景
-
PACS(医学影像存档与通信系统)
-
DICOM 浏览器 / 查看器
-
医学影像处理软件(如 3D Slicer、MITK)
-
医学影像分析插件开发
4. CTK 代码示例
(1) 使用 CTK DICOM 查询 PACS 服务器
#include <ctkDICOMQuery.h>
#include <ctkDICOMRetrieve.h>
#include <QCoreApplication>
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
ctkDICOMQuery query;
query.setCallingAETitle("MY_AE_TITLE");
query.setCalledAETitle("PACS_AE_TITLE");
query.setHost("192.168.1.100");
query.setPort(104);
// 查询患者列表
query.queryPatients();
QList<QSharedPointer<ctkDICOMItem>> patients = query.patients();
for (const auto& patient : patients) {
qDebug() << "Patient Name:" << patient->value("0010,0010").toString();
}
return app.exec();
}
(2) 使用 CTK Plugin Framework
#include <ctkPluginFrameworkFactory.h>
#include <ctkPluginFramework.h>
#include <ctkPluginException.h>
int main(int argc, char **argv) {
ctkPluginFrameworkFactory factory;
QSharedPointer<ctkPluginFramework> framework = factory.getFramework();
framework->init();
framework->start();
// 安装并启动插件
QSharedPointer<ctkPlugin> plugin = framework->getPluginContext()->installPlugin(QUrl("file:///path/to/plugin.dll"));
plugin->start();
return 0;
}
5. CTK 安装与使用
(1) 从源码编译
VisualStudio2017
CMake
Qt5.9.0
(2) 在 Qt 项目中使用 CTK
头文件包含
库连接
6. CTK 与其他医学影像库对比
工具库 | 主要用途 | 特点 |
---|---|---|
CTK | 医学影像、DICOM、插件系统 | 基于 Qt,模块化设计,适合大型医学软件 |
VTK | 科学可视化(2D/3D 渲染) | 强大的渲染能力,但 UI 需结合 Qt |
ITK | 医学图像分析(分割、配准) | 专注于算法,无 UI 支持 |
DCMTK | DICOM 文件/网络通信 | 纯 DICOM 库,无 Qt 集成 |
总结
CTK 是一个强大的医学影像开发工具包,特别适合需要 DICOM 通信、模块化架构、Qt 集成 的项目。如果你正在开发 PACS、医学影像处理软件或插件系统,CTK 是一个值得考虑的选择。