阿里天池-全球数据智能大赛

2023-11-05

里面的数据解析

https://tianchi.aliyun.com/forum/issueDetail?spm=5176.12282029.0.0.1549467d4xr1bT&postId=62363

用NotePad++或其他的软件打开seriseuid对应的mhd文件,比如628766,需要去训练集chestCT_round1_train_part2\train_part2找到628766.mdh文件,然后打开,如图一:

图一:

Offset是原点,coorZ的偏移量为5(也就是5mm,80%是,有些不是),根据原点按5偏移就可以确定是第几张,DimSize中的60为分片数量。

计算属于第几张图方法如下:

图二 : 

(原点)516.8831-(628766最后一个)321.8831 = 195,195/5=39,所以它属于第39张。

图二蓝框标出的是以coorX =18.414 ,coorY =-15.380,coorZ = -321.883,为中心;daimeterX =7.519 ,daimeterY =8.886 ,daimeterZ =5 ,为长,宽,高的立方体,这个立方图就是我们检测的目标。

还有一个他写的代码

https://tianchi.aliyun.com/forum/postDetail?spm=5176.12282027.0.0.3a46379caoN56B&postId=62774

#coding=utf-8
import numpy as np
import time
import glob
import SimpleITK as sitk
from skimage import morphology, measure, segmentation
import h5py
import pickle
import skimage
import matplotlib.pyplot as plt
import csv
import os
import skimage.io as io
import pandas as pd
import matplotlib.patches as patches


def isflip(self):
    #根据TransformMatrix来判断矩阵图像是否翻转
    with open(self.path) as f:
        contents = f.readlines()
        line = [k for k in contents if k.startswith('TransformMatrix')][0]
        transform = np.array(line.split(' = ')[1].split(' ')).astype('float')
        transform = np.round(transform)
        if np.any(transform != np.array([1, 0, 0, 0, 1, 0, 0, 0, 1])):
            isflip = True
        else:
            isflip = False

        return isflip


def world_To_Voxel_Coord(worldCoord, origin, spacing):
    #世界坐标系转到图像中的坐标
    stretched_Voxel_Coord = np.absolute(worldCoord - origin)
    voxel_Coord = stretched_Voxel_Coord/spacing
    return voxel_Coord


def voxel_To_WorldCoord(voxelCoord, origin, spacing):
    #世界坐标系转到图像中的坐标系
    streched_Vocel_Coord = voxelCoord*spacing
    worldCoord = streched_Vocel_Coord + origin
    return worldCoord


def get_image_spacing_origin(path):
    itk_img = sitk.ReadImage(path)
    image = sitk.GetArrayFromImage(itk_img)
    spacing = np.array(itk_img.GetSpacing())
    origin = np.array(itk_img.GetOrigin())

    return itk_img, image, spacing, origin

if __name__ == "__main__":
    #train_part1
    path = glob.glob("../tianchi_data/raw_data/train_part1/*.mhd")
    id = []
    annotations = np.array(pd.read_csv('../tianchi_data/chestCT_round1_annotation.csv',))
    for p in path:
        print(p)
        id.append(os.path.basename(p).split(".")[0])
        itk_img, image, spacing, origin = get_image_spacing_origin(p)
        name = os.path.basename(p).split(".")[0]

        #从全部annotation中获取到当前annotation的注释
        current_annotation = np.copy(annotations[annotations[:, 0] == int(name)])
        print(current_annotation)
        for c in current_annotation:
            pos = world_To_Voxel_Coord(c[1:4], origin=origin, spacing=spacing)
            diameterX = c[4]/spacing[0]
            diameterY = c[5]/spacing[1]
            # 获取切片对应的索引
            idx = int(np.absolute(c[3] - origin[-1])/spacing[-1])

            ## 显示每一个切片
            fig, ax = plt.subplots()
            # ax.imshow(image[idx], cmap="gray")
            ax.imshow(image[idx])
            cir = patches.Ellipse(xy=(pos[0], pos[1]), width=diameterX,height=diameterY, fill=None)
            ax.add_patch(cir)
            plt.show()
​

我将里面数据的显示改为彩色的了。

找一些来显示一下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阿里天池-全球数据智能大赛 的相关文章

随机推荐

  • List集合添加指定元素到指定位置

    以下内容来自 JDK API 1 6 版本 List 接口提供了两种在列表的任意位置高效插入和移除多个元素的方法 方法摘要 boolean add E e 向列表的尾部添加指定的元素 可选操作 void add int index E el
  • 工业以太网通讯Profinet协议详解

    Profinet是通过西门子控制系统被广泛使用的工业通信协议 是一种较新的 基于以太网的工业通讯协议 Profinet使用的物理接口是一个标准的RJ 45以太网插口 Profinet电缆如下图 通过它的绿色外皮很好辨认 虽然在某些情况下 可
  • Lego_Loam--源码分析

    0 整体框架分析 翻看 LEGO Loam 的代码目录 首先进入到launch 文件中 看到
  • Spring boot Mybatis type-aliases-package错误解决

    背景 最近在练习spring boot 2 7 0整合mybatis 2 1 3时 发现在使用mybatis type aliases package配置后 xml中的别名会出现爆红的现象 错误复现 配置文件中 使用mybatis type
  • 开关电源基本原理和种类-反激-正激

    不可不知的几种开关电源及工作原理 前面分享了部分开关电源的基础知识 里面经常涉及不同种类的开关电源 虽然说 开关电源再怎么变 原理都一样 但过程细节总有区别 比如说 石墨和钻石都是同一种元素 碳 但性质有天地之别 扯远了 这次 我总结归纳了
  • **全排列实现数字1-9排序**

    在为蓝桥杯比赛备考过程中 真正体验到自己编程能力的薄弱 在一次小练习中接触全排列这一算法 基于对全排列的熟悉掌握 通过C语言代码实现数字1 9的全排列 当然也可以进行全排列的拓展 C语言实现数字1 9全排列 include
  • 计算机组成原理笔记03

    计算机组成原理笔记03 做题笔记1 内容 教材的思维导图 课后练习 计算部分 中国大学MOOC计算机组成原理 计算部分 1 教材的思维导图 在看题之前 最好先看这篇定点运算 写的特别清晰明了 2 课后练习 3 2 选择题 1 一个C语言程序
  • vue.config.js

    use strict const path require path function resolve dir return path join dirname dir const CompressionPlugin require com
  • 【学习笔记】springboot的AutoConfigurationImportSelector 、@EnableAutoConfiguraion和@import解析

    文章目录 EnableAutoConfiguration介绍 AutoConfigurationImportSelector 例子 使用importSelector 自动装配原理分析 总结 EnableAutoConfiguration介绍
  • ElasticSearch 索引查询使用指南——详细版

    我们通常用用 cat API检测集群是否健康 确保9200端口号可用 curl localhost 9200 cat health v 绿色表示一切正常 黄色表示所有的数据可用但是部分副本还没有分配 红色表示部分数据因为某些原因不可用 2
  • 面试了38位Java候选人之后,我总结出了他们关于面试中的16条通病

    都说现在Java面试卷 前段时间项目招人的时候 我刚好就作为面试官面试了一些人 在整个面试的过程中 我就发现了一些关于面试的通病 所以呢 趁着这次金 铜 九银 铁 十的机会 我就把面试别人时的感受结合自身的所见所闻 整理成16条小建议分享给
  • 【C语言/C++_数组长度问题】如何获取数组长度?

    problem 我们怎么获取数组长度 常规数组 int float double 我们怎么获取字符串数组长度 字符串数组 未完待续 Solution 1 使用sizeof 函数 获取所求数组的的总大小 再获取该数组中单个元素所占空间大小 进
  • Windows 10 系统服务的 “自动(延迟启动)” 时间

    简而言之 设置为Automatic的服务将在引导过程中启动 而设置为Delayed的服务将在引导后立即启动 启动服务延迟可以提高服务器的启动性能 并且具有安全性优势 这些优势在Adriano的文章中列出 默认情况下 自动 延迟启动 实际上是
  • 牛客网Verilog快速入门题目收获——异步复位的串联T触发器(VL2)

    一 题目要求 给出信号示意图以及波形示意图 用verilog实现两个串联的异步复位的T触发器的逻辑 二 完成题目前的知识储备 1 书写规范 根据verilog代码书写规范 低电平复位信号用 rst n 高电平复位用rst 这里题目低电平复位
  • 优秀的框架stylefeng——guns/roses

    Guns基于SpringBoot 致力于做更简洁的后台管理系统 完美整合springmvc shiro mybatis plus beetl Guns项目代码简洁 注释丰富 上手容易 同时Guns包含许多基础模块 用户管理 角色管理 部门管
  • 平均年薪超105万元,区块链开发待遇这么高?

    近段时间 没有比 区块链 更火的词了 2019年10 月 24 日时国家就区块链技术发展现状与趋势进行第十八次集体学习 学习时着重强调 区块链技术的集成应用在新的技术革新和产业变革中起到重要作用 这意味着区块链技术将加速与产业的融合 也就是
  • 【形形色色的卷积】差分卷积

    文章目录 0 前言 1 中心差分卷积 2 像素差分卷积 3 参考 0 前言 普通卷积不能显式地提取图像的梯度信息 因此不能较好地描述细粒度的纹理信息 在人脸活体检测 边缘检测等对细粒度纹理信息敏感的任务中难以取得理想的结果 针对上述问题 O
  • 梁乾东:4.10黄金下周涨跌怎么看?黄金原油最新策略解析

    黄金下周行情解析 周五 4月9日 上海黄金交易所收涨0 54 报370 11元 克 白银T D收涨0 71 报5267元 公斤 金价收高 主要由于美债收益率下跌 美元短线走弱 也给金价带来短期支撑 但由于全球经济复苏良好 这始终对金价构成下
  • idea报错一个包找不到另一个包 com.j8.enity.User cannot be cast to com.j8.enity.lx

    要注意自己定义的类是否是正确的 否则就会出现这样的错误
  • 阿里天池-全球数据智能大赛

    里面的数据解析 https tianchi aliyun com forum issueDetail spm 5176 12282029 0 0 1549467d4xr1bT postId 62363 用NotePad 或其他的软件打开se