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

来源:互联网 发布:二次元手机ar软件 编辑:程序博客网 时间:2024/04/26 06:33

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 >.

原创粉丝点击