LIDC-IDRI肺结节数据集xml解释及读取

LIDC-IDRI 链接
这篇博客也有介绍
下边介绍该数据集的xml格式及用python读取.

xml_path = ‘xml说明文件绝对路径’
with open(xml_path, 'r') as xml_file:
        markup = xml_file.read()
xml = BeautifulSoup(markup, features="xml")

使用 BeautifulSoup对其解析.
得到的markup内容为:

xml注释文件片段

观察markup,根据xml的格式读取其内容.
提取步骤为:
一:提取患者号,患者号的标识符为< SeriesInstanceUid >

patient_id = xml.LidcReadMessage.ResponseHeader.SeriesInstanceUid.text

二:提取专家对该病例做出的诊断,标识符为< readingSession >

reading_sessions = xml.LidcReadMessage.find_all("readingSession")

三:在每一个 readingSession里边找结节信息,包括< unblindedReadNodule >和< nonNodule >
(一).先找< unblindedReadNodule >
1.

    for reading_session in reading_sessions:
        nodules = reading_session.find_all("unblindedReadNodule")
        for nodule in nodules:
            nodule_id = nodule.noduleID.text

2.找到结节编号noduleID
nodule_id = nodule.noduleID.text
3.再找< characteristics >,如果找到,则表示此结节为大结节,则可提取 CT号,然后搜索< roi >,每个< roi >< /roi >之间即为结节的坐标信息.
< characteristics >中内容为:

这里写图片描述

内容说明为:

这里写图片描述

4.找到< roi >

rois = nodule.find_all("roi")

5.提取< roi >< /roi >中的坐标信息.
每对< roi >< /roi >中的< imageZposition >< /imageZposition >中的数据表示层位置,结节坐标位置则在每对< roi >< /roi >中的< edgeMap > < /edgeMap >中,< imageSOP_UID >< /imageSOP_UID >中的数据是每张CT图像唯一的UID标识.
6.如果只找到< roi >没有找到< characteristics >,则表示小结节,只需提取中心坐标即可.
(二).再找< nonNodule >
表示非结节,找到所需的非结节信息.

当然也可以根据< roi >< /roi >的个数来确定是属于< unblindedReadNodule >或者< nonNodule >.因为< nonNodule >里边只有一个< roi >< /roi >,而< unblindedReadNodule >里边大于1个< roi >< /roi >.

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值