FoDicom 取值时注意事项

在使用FoDicom查看DataSet时,可以观察到Dicom标签及其对应的值。若Value中用分隔,表示该值为多值,需用数组等多值数据结构获取。当无法直接通过Tag获取NumberOfSlices时,需通过计算方法来得到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意多值获取

Value中如果有\\将两个值分开的,那么就表示这个值是多值,也就是由不只一个值构成,这时取值时需要用多值数据结构进行获取(如数组),否则会导致错误……

如PixelSpaing就是多值,获取时虽然也可以通过dataset.tryGetSingleValue<double>(DicomTag.PixelSacing,out double px)或dataset.GetSingleValue(DicomTag.PixelSacing)获取;然PixelSpacing也存在x轴的像素宽度与y轴的像素宽度不一致的情况,通过前述方法,则在后续使用PixelSpcing进行图像还原时可能导致图像与真实图像不相符的情况。

PixelSpacing:  dataset.TryGetValues<double>(DicomTag.PixelSpacing, out double[] px);

通过此种方式获取到两个值,px[0]为像素在x轴上占用的空间大小 ,px[1]为像素在y轴上占用的空间大小。以此为基础再进行图像的还原,才能保证图像与原始图像一致。

层间距不要通过标签获取

实际来看,通过标签Spacing Between Slices获取到的层间距是不准确的:

  1. 可能获取不到;此标签可能不存在
  2. 可能大于或小于真实距离

层间距需要通过图片的位置数据来计算:通过ImagePositon来计算,如扫描是沿解剖学方位的Z轴(从脚到头为正方向)进行的,那么就获取前后两张图片的坐标,Z轴之差的绝对值即是层间距。此一定要注意层间距,是距离,是正值;而前后两张图片Z轴之差是可能为负值的。

单帧与多帧图像标签获取方法不一

单帧通过dataset.tryGetSingleValue<T>()或dataset.GryGetVales<T>()方法就能获取;但多帧时,一些标签这样是获取不到的。

如下为多帧时一些重要标签在获取时需要注意:

Intercept 、Slope、ImagePosition、PixelSpacing 

详细获取可参考后续文章。

一些标签不要通过Tag获取

主要是这些标签可能是由人工录入或提前设置的,在扫描时并没有修改相应设置,此就会造成这些标签并不准确。

如:NumberOfSlices、PatientPosition、ImageOrientation

Dicom中 NumberOfSlices如果不能通过Tag获取时,则需要通过计算才能得到,其计算逻辑如下:

ImageOrientaion不一定与人体方向一致

特别是ImageOrientaion,此标签是表示图片方向的,此标签可能与实际的图像方向并不匹配,此一定要注意。若实际中需要用此标签时,一定要根据实际情况进行纠正,以保证后续计算的准确性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值