You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Matplotlib Pyplot在CT DICOM切片上绘制ROI失败求助

解决在DICOM切片上绘制彩色圆形ROI的问题

我明白你现在的困扰——想在DICOM背景图上画彩色圆形ROI但显示不出来,我来帮你把这个问题搞定!从你给出的代码片段来看,主要问题大概率是缺少完整的圆形绘制逻辑,以及可能没有正确将图形叠加到DICOM图像的坐标轴上。

问题分析

你的代码里已经做了基础的Matplotlib配置(设置画布、等比例轴、关闭坐标轴、灰度colormap),但关键的圆形绘制部分没写完,而且没有把圆形ROI添加到当前的绘图轴上。另外,模拟的DICOM数组是全1的(全白色),建议换成更接近真实DICOM的灰度数据,方便你观察效果。

修正后的完整代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle

# 模拟DICOM切片数据(用渐变灰度图代替全白,更易观察)
ArrayDicom = np.linspace(0, 1, 512*512).reshape(512, 512)

# 创建画布并配置参数
plt.figure(figsize=(3, 3), dpi=300)
ax = plt.gca()  # 获取当前轴对象,方便后续操作
ax.set_aspect('equal', 'datalim')
plt.axis('off')
plt.set_cmap('gray')

# 绘制DICOM背景图像
plt.imshow(ArrayDicom, origin='lower')  # origin='lower'匹配像素坐标习惯

# 创建彩色圆形ROI
# 参数:(中心x, 中心y), 半径, 填充颜色, 边框颜色, 透明度
circle_roi = Circle((256, 256), radius=50, color='red', ec='blue', alpha=0.5)
# 将圆形添加到轴上
ax.add_patch(circle_roi)

# 显示图像
plt.show()

关键步骤解释

  • 获取轴对象:用plt.gca()拿到当前绘图轴,后续添加ROI时更直接
  • 正确显示DICOM切片:plt.imshow传入2D数组(你原来的3D数组要取单切片,比如ArrayDicom[:,:,0]),origin='lower'让坐标原点在左下角,符合大多数医学图像的显示习惯
  • 绘制圆形ROI:用matplotlib.patches.Circle创建圆形,设置alpha(透明度)能让你同时看到背景的DICOM图像和ROI;ec参数设置边框颜色,方便区分ROI边界
  • 添加ROI到轴:必须用ax.add_patch()把圆形对象添加到轴上,否则图形不会显示

常见坑点提醒

  1. 如果你的真实DICOM数据有窗宽窗位需求,记得先做窗宽窗位调整再显示,不然图像可能过亮/过暗
  2. 圆形的坐标要和DICOM图像的像素坐标对应,比如(256,256)就是512x512图像的中心位置
  3. 不要在plt.imshow之后重新设置colormap,否则会覆盖彩色ROI的颜色

内容的提问来源于stack exchange,提问作者Timothée ZARAGORI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:12:48