# 基于CUDA的DRR算法服务

# 环境配置

- VS2017
- ITK5.0.1
- CUDA 11.0

# 快速开始
## 配置说明
* ITK相关配置已保存在项目中，无需额外配置
* 启动程序时请调整到Release x64
* 本项目仅可在有NVIDIA的设备上运行，需要自行安装与设备匹配的CUDA库

# 项目说明
* 启动项目后，程序将持续运行，并打开本地的5150端口
* 本项目目前支持两个功能
    * 打开CT序列
    * 生成DRR图像数组

## 打开CT序列

### socket
* 用户向本端口发送   `CT(ct_path_name)` 即可启动该功能，例如发送 `CT(C:/CT/CT001)`
* 待程序读取完毕后，将返回套接字 `ct imported successfully` 作为结束

## 生成DRR图像数组

### socket
* 用户必须要在接收到CT序列成功读取的信息后，才能进行该功能
* 用户向本端口发送  `PARA(rx, ry, rz, dx, dy, threshold, flag)` 即可启动该功能
* rx, ry, rz (float): 模型的绕XYZ轴的旋转角度(-180~180)
* dx, dy (int): 生成图像的大小
* threshold (float): DRR筛选阈值
* flag (int): 选择数组的返回类型，0为float数组，1为unsigned char数组
* 例如 `PARA(90.0, 0.0, 0.0, 1024, 1024, 0.0, 1)`
* DRR生成完毕后，用户将接收一个一维数组，长度为dx*dy，用来表示生成的DRR图像

## 客户端示例
参见test文件夹
