Slic-Reg: 利用可变形超级体素改进基于学习的图像配准

需积分: 5 0 下载量 91 浏览量 更新于2024-11-28 收藏 8.63MB ZIP 举报
资源摘要信息: "slic_reg:重新考虑使用可变形超级体素的基于学习者的患者间注册的设计(MIDL 2021)" 1. 研究背景与目的 在医学图像处理领域,患者间图像配准是一个重要的任务,它涉及到将来自不同患者的医学图像进行空间对齐。这种技术在疾病诊断、治疗规划和监测中起着关键作用。传统的配准方法主要依赖于刚性或仿射变换,但这些方法往往无法有效处理复杂的人体组织变形。随着深度学习技术的发展,基于学习的图像配准方法已经成为了研究的热点。本研究提出了一种新的基于学习的患者间注册设计方法,旨在通过引入可变形超级体素,改进传统的基于学习的配准方法。 2. SLIC_Reg方法简介 SLIC_Reg是一个开源的3D变形图像配准方法,它通过采用多头部的3D DeepLab网络架构,来预测图像中的supervoxel。Supervoxel是一种高级的图像分割单元,它是比像素和体素更加粗粒度的超体素,能够更好地捕捉图像的局部几何特性。与传统的基于回归的目标函数不同,SLIC_Reg方法不需要复杂的解剖标记,而是直接利用图像的局部几何特征来指导配准过程。 3. SLIC_Reg与传统方法的对比 SLIC_Reg与传统的基于学习的配准方法(如PDD-Net、回归方法和UNet架构)相比,在多个器官的配准任务上表现出了显著的优势。具体来说,SLIC_Reg在脾脏、右肾和左肾的配准任务中,分别达到了62.4%、50.8%和57.1%的配准精度,明显优于其他方法。这表明SLIC_Reg在处理复杂的人体组织变形时,能够提供更为准确和稳定的配准结果。 4. Python在SLIC_Reg方法中的应用 该存储库中的代码完全使用Python编写,利用了深度学习框架(如TensorFlow或PyTorch)来实现深度学习模型。Python作为一种高级编程语言,因其简洁、易读和强大的社区支持,成为了数据科学和机器学习领域的首选语言。在SLIC_Reg方法中,Python不仅用于实现算法逻辑,还可能涉及到数据预处理、模型训练、结果评估和可视化等多个环节。 5. 应用场景与潜在影响 SLIC_Reg方法的应用场景广泛,可以用于各种医学图像配准任务,比如肿瘤的定位、器官的分割和功能图像的融合等。此外,由于其开放源代码的特性,SLIC_Reg能够被广泛研究者和开发者使用和改进,这将加速基于学习的配准技术的发展和应用。 6. 结论 slic_reg:重新考虑使用可变形超级体素的基于学习者的患者间注册的设计(MIDL 2021)展示了一种创新的患者间图像配准方法。通过将图像分割与配准结合起来,并利用深度学习技术,SLIC_Reg方法在多个关键器官的配准任务中展现了更高的准确性。随着医疗影像技术的不断进步,此类研究将继续推动医学图像处理领域的发展,为精准医疗提供更加强大的技术支持。
295 浏览量

import cv2 import numpy as np import torch from skimage.segmentation import slic from skimage.util import img_as_float # 读取A图像和B图像 img_a = cv2.imread(r'D:\Users\Administrator\PycharmProjects\pythonProject\my tools\super_pixel\1.png') img_b = cv2.imread(r'D:\Users\Administrator\PycharmProjects\pythonProject\my tools\super_pixel\2.jpg') # 转换为浮点数 img_a = img_as_float(img_a) img_b = img_as_float(img_b) # 使用SLIC算法进行超像素分割 segments_a = slic(img_a, n_segments=1000, compactness=10) segments_b = slic(img_b, n_segments=1000, compactness=10) # 计算A图像的超像素范围 segment_ids = np.unique(segments_a) segment_ranges = [] for segment_id in segment_ids: y, x = np.where(segments_a == segment_id) min_x, max_x = np.min(x), np.max(x) min_y, max_y = np.min(y), np.max(y) segment_ranges.append((min_x, min_y, max_x, max_y)) # 创建A图像的超像素范围图 segment_map_a = np.zeros_like(segments_a, dtype=np.int32) for i, segment_range in enumerate(segment_ranges): min_x, min_y, max_x, max_y = segment_range segment_map_a[min_y:max_y+1, min_x:max_x+1] = i # 使用A图像的超像素范围索引对B图像进行分割 segment_map_b = np.zeros_like(segments_b, dtype=np.int32) for i, segment_range in enumerate(segment_ranges): min_x, min_y, max_x, max_y = segment_range segment_id = segments_a[min_y, min_x] y, x = np.where(segments_b == segment_id) segment_map_b[y, x] = i # 转换为PyTorch张量 segment_map_b = torch.Tensor(segment_map_b).long() # 显示B图像的超像素范围图 cv2.imshow('Segment Map', segment_map_b.numpy()) cv2.waitKey(0) cv2.destroyAllWindows()。上述代码出现错误: cv2.imshow('Segment Map', segment_map_b.numpy()) cv2.error: OpenCV(4.7.0) D:/a/opencv-python/opencv-python/opencv/modules/highgui/src/precomp.hpp:155: error: (-215:Assertion failed) src_depth != CV_16F && src_depth != CV_32S in function 'convertToShow'

2023-06-07 上传