# 配准 ## Requirements - `os` - `argparse` - `json` - `glob` - `re` - `pydicom == 2.3.0` - `numpy == 1.22.4` - `itk == 5.2.1.post1` - `itk—elastix == 0.13.0` - `torch == 1.13.0a0+d321be6` ## Overview 配准功能和其它深度学习模块并列,实现了对于数据集中同一病人的多个CT影像之间的配准功能,并且输出图像之间的检测框的匹配情况。 1. 首先筛选出同一个病人的多个影像图片,并根据tag:`AcquisitionDateTime`排序。 2. 配准功能只会在相邻的两个图像之间进行(将时间较早的影响作为`fixed_image`,时间较晚的图像作为`moving_image`),相关配准结果保存在`pid-{}_elastix_step-{}`文件夹下(`pid-{}`为该病人的tag:`PatientID`,`step-1`表示该病人的第一组相邻的图像)。 3. `pid-{}_elastix_step-{}/match_results.json`中保存了该病人的第`{}`组相邻的图像之间的检测框的配对情况。 ```python { 'matched': [[noudle1, matched_nodule1], [nodule2, matched_nodule2], ...], 'missing': [], 'new': [] } ``` - `'matched'`表示匹配上的检测框。 - `'missing'`表示出现在`fixed_image`上,而`moving_image`上没有出现的检测框。 - `'new'`表示在`moving_image`上新出现的检测框。 4. 在匹配结果中,每一个检测框被表示为一个八维数组,如下所示: ```python # center为中心点坐标,diameter为长径,label_1为肺结节分类结果,label_2为结节良恶性分类结果 [center_x, center_y, center_z, diameter_x, diameter_y, diameter_z, label_1, label_2] ``` # # Usage 1. 在执行配准功能之前需要确保已经产生了所有影像的检测结果,并且存在`.json`文件。 2. 执行配准功能: ```python python ./elastix_processing.py -- job_data_root /path/to/job_data_root -- elastix_params_affine /path/to/affine_params -- elastix_params_bspline /path/to/bspline_params ``` - `job_data_root`,该参数的含义与深度学习任务相同。 - `elastix_params_affine`,配准中Affine方法的参数。 - `elastix_params_bspline`,配准中Bspline方法的参数。 3. 配准结果统一保存在`/path/to/job_data_root/output/elastix`中。