python计算长方体体积最简单代码_python处理DICOM并计算三维模型体积

python处理DICOM并计算三维模型体积

来源:中文源码网    浏览: 次    日期:2019年11月5日

【下载文档:  python处理DICOM并计算三维模型体积.txt 】

(友情提示:右键点上行txt文档名->目标另存为)

python处理DICOM并计算三维模型体积在已知DICOM和三维模型对应掩膜的情况下,计算三维模型的体积。

思路:

1、计算每个体素的体积。每个体素为长方体,x,y为PixelSpacing,z为层间距

使用pydicom.read_file读取DICOM文件,dcm_tag.PixelSpacing获取像素间距,dcm_tag.SliceLocation 获取层间距

2、计算体素的个数

代码如下:

from PIL import Image

import numpy as np

import pydicom

import os

def get_pixels_No(bmp_data_dir):

pixels_No = 0

bmp_files = os.listdir(bmp_data_dir)

for bmp in bmp_files:

bmp_file = os.path.join(bmp_data_dir,bmp)

img = Image.open(bmp_file)

img_array = np.array(img)

# img_array.dtype为布尔类型,需要转换为Int类型,其累加和恰好为体素总和

img_array_int = img_array.astype(int)

pixels_No = pixels_No+img_array_int.sum()

return pixels_No

def get_pixel_info(dcm_data_dir):

pixel_infos = []

dcm_files = os.listdir(dcm_data_dir)

dcm_file_1 = os.path.join(dcm_data_dir,dcm_files[0])

dcm_tag_1 = pydicom.read_file(dcm_file_1)

# 获取像素间距.

spacex, spacey = dcm_tag_1.PixelSpacing

# 获取层间距

# 有些 dcm图像并不是按照InstanceNumber进行排序的,不能直接用最后一张的slicelocation减去第一张,再除以张数

SliceLocations = []

ImagePositon_z = []

for dcm in dcm_files:

dcm_file = os.path.join(dcm_data_dir, dcm)

dcm_tag = pydicom.read_file(dcm_file)

SliceLocations.append(dcm_tag.SliceLocation)

ImagePositon_z.append(dcm_tag.ImagePositionPatient[2])

SliceLocations_max =max(SliceLocations)

SliceLocations_min =min(SliceLocations)

ImagePositon_z_max = max(ImagePositon_z)

ImagePositon_z_min = min(ImagePositon_z)

print(SliceLocations_max)

print(SliceLocations_min)

print(ImagePositon_z_max)

print(ImagePositon_z_min)

if SliceLocations_max - SliceLocations_min < 1e-10:

spacez = abs(ImagePositon_z_max - ImagePositon_z_min)/(len(dcm_files)-1)

else:

spacez = abs(SliceLocations_max - SliceLocations_min)/(len(dcm_files)-1)

pixel_infos = [spacex, spacey, spacez]

return pixel_infos

def get_volume(dcm_data_dir,bmp_data_dir):

pixel_infos = get_pixel_info(dcm_data_dir)

pixels_No = get_pixels_No(bmp_data_dir)

volume=pixel_infos[0]*pixel_infos[1]*pixel_infos[2]*pixels_No/1000

return volume

# dcm = pydicom.read_file(r"E:\20181210090945_LENG HONGYING F-44Y\Venous\0000.dcm")

# print(dcm)

# print(dcm.ImagePositionPatient[2])

# print(dcm[0x0020, 0x0032].keyword,dcm[0x0020, 0x0032].value)

volume=get_volume(r"E:\20181210090945_LENG HONGYING F-44Y\Venous",r"E:\20181210090945_LENG HONGYING F-44Y\Results\LungL")

print("体积为%.1f"%volume)以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持中文源码网。

亲,试试微信扫码分享本页! *^_^*

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 安全在阿里业务中的实践,你了解吗?

我们知道&#xff0c;AI 技术将在很长一段时间占据互联网技术时代的风口。但是&#xff0c;有代码的地方就有缺陷&#xff0c;提到技术很难不讲安全&#xff0c;那么AI会不会碰到安全问题呢&#xff1f; AI安全 试想一下&#xff0c;未来的某个早晨&#xff0c;当你像往常一样…

vue ref和reactive的区别

ref 函数传入一个值作为参数,返回基于该参数的响应式ref对象 ref 接受参数&#xff0c;并将其包裹在一个带有 value property 的对象中返回&#xff0c;然后可以使用该 property 访问或更改响应式变量的值 将值封装在一个对象中&#xff0c;看似没有必要&#xff0c;但为了保…

解决idea修改html、js、css后,浏览器不能同步加载

重装了IDEA后&#xff0c;忽略了一些设置&#xff0c;导致在开发springboot项目时&#xff0c;启动了项目&#xff0c;修改了前端文件&#xff0c;但是浏览器中并不能实时加载修改的内容。 主要是IDEA的2个地方需要设置&#xff1a; 一、修改file-settings 二、在IDEA中&…

安全多方计算新突破!阿里首次实现“公开可验证” 的安全方案

阿里妹导读&#xff1a;近日&#xff0c;阿里安全双子座实验室与马里兰大学等高校合作的论文《Covert Security with Public Verifiability: Faster, Leaner, and Simpler 》【1】被欧洲密码年会(Eurocrypt)2019接收。这是国内公司在安全多方计算领域的第一篇顶会论文&#xff…

996!007!同是敲了2万行代码,为什么他却晋升了?

正在敲代码的你 &#xff0c;春节假期即将来临&#xff0c;复盘这1年&#xff0c;你印象最深刻的一件事是什么&#xff1f;有人在群里回答了一条扎心的答案&#xff1a;忙碌1年&#xff0c;每天996&#xff0c;回首2019除了加班再无成长可说。你以为只要把事情搞定了&#xff0…

iqooneo系统要不要更新_IQOOZ1即将发布,和IQOOneo3、OPPORenoACE对比,谁更值得入手?...

高刷屏和手机使用时长本质上并没有什么关系&#xff0c;但是购买高刷屏的手机却可以让你得到更好的体验&#xff0c;而且高刷屏绝对是未来手机行业发展的一个主流方向&#xff0c;所以说目前如果有新机购买的计划的话&#xff0c;配备高刷屏的手机是一个很好的选择。不过数码君…

分布式系统:一致性模型

分布式系统中一个重要的问题就是数据复制&#xff0c;数据复制一般是为了增强系统的可用性或提高性能。而实现数据复制的一个主要难题就是保持各个副本的一致性。本文首先讨论数据复制的场景中一致性模型如此重要的原因&#xff0c;然后讨论一致性模型的含义&#xff0c;最后分…

消息称苹果斥资2亿美元收购Xnor.ai;华为2000万英镑投资,加速发展HMS手机生态系统;国产SSD将迎来爆发……...

戳蓝字“CSDN云计算”关注我们哦&#xff01; 嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

Serverless 风暴来袭,前端工程师如何应对?

阿里妹导读&#xff1a;尽管大部分前端的工作并不涉及server&#xff0c;但最近半年serverless这个词汇以及其引发的热烈的讨论&#xff0c;深深触动了阿里巴巴高级前端技术专家伐薪。作为接触前端十余载的老开发&#xff0c;伐薪认为serverless可能会是接下来引起前端领域革命…

python实现冒泡排序算法的非递归版本_冒泡排序以及python代码实现(递归+非递归)...

一、冒泡排序比较简单的排序算法&#xff0c;适合小规模数据集&#xff0c;效率较低。依次比较相邻的两个数&#xff0c;将比较小的数放在前面&#xff0c;比较大的数放在后面。每进行一趟排序&#xff0c;就会少比较一个数python代码(非递归)&#xff1a;from typing import L…

Git免密登陆远程

文章目录1. 生成公钥和私钥2. 拷贝公钥的内容&#xff0c;并设置到github中3.在git本地中配置ssh地址4. 以后使用5. 其他第三方代码托管仓库1. 生成公钥和私钥 执行以下命令&#xff1a; ssh-keygen注&#xff1a; windows (默认放在C:\Users\当前登录用户名.ssh目录下面) 例…

【机器学习PAI实战】—— 玩转人工智能之美食推荐

前言 在生活中&#xff0c;我们经常给朋友推荐一些自己喜欢的东西&#xff0c;也时常接受别人的推荐。怎么能保证推荐的电影或者美食就是朋友喜欢的呢&#xff1f;一般来说&#xff0c;你们两个人经常对同一个电影或者美食感兴趣&#xff0c;那么你喜欢的东西就很大程度上朋友…

小网站的容器化(上)

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 王洪鹏出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;作为一枚程序员&#xff0c;大家几乎基本都有自己的个人网站&#xff0c;这些网站有的可能是自己开发的有的可能是用一些工具自动生成的&#xff0c…

Java 8中处理集合的优雅姿势——Stream

在Java中&#xff0c;集合和数组是我们经常会用到的数据结构&#xff0c;需要经常对他们做增、删、改、查、聚合、统计、过滤等操作。相比之下&#xff0c;关系型数据库中也同样有这些操作&#xff0c;但是在Java 8之前&#xff0c;集合和数组的处理并不是很便捷。 不过&#…

vue怎么获取用户的位置经纬度_vue 实现Web端的定位功能 获取经纬度

首先我这里的需求呢, 是获取当前用户的经纬度经过无数次的测试, 先后用了 腾讯/百度地图的api&#xff0c;最后绝对还是高德的js APi废话不多说, 直接上代码。首先在 index.html 里面 引入然后 去你需要获取的页面 开始写, 我这里拿来测试用,所以只有一个App.vue 文件。貌似已经…

Git gitignore文件讲解

文章目录1. 忽略某个文件2. 忽略某种类型文件3. 取反不忽略指定文件4. 忽略某个文件夹5. 忽略文件配置gitignore文件放置到项目的根目录中&#xff0c;为了让git管理文件中忽略指定的文件、指定的文件列表、指定的文件类型等等&#xff0c;提交的时候git忽略配置的这些文件。 …

用Python扒出B站那些“惊为天人”的阿婆主!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 徐麟责编 | 阿秃前言近期B站的跨年晚会因其独特的创意席卷各大视频网站&#xff0c;给公司带来了极大的正面影响&#xff0c;股价也同时大涨&#xff0c;想必大家都在后悔没有早点买B站的股票&#xff1a;然而今天我们要讨论…

我们总结了每个技术团队都会遇到的 4 个难题

阿里巴巴 2019 年实习生校园招聘已经启动&#xff0c;为此&#xff0c;我们整理了一篇《每个技术团队都会遇到的4个难题》&#xff0c;帮助即将从校园进入公司实习的后端程序员&#xff0c;以实践的视角&#xff0c;看看一个后端技术团队会遇到的一些难题。虽然&#xff0c;技术…

怎么查看指定app日志_Linux系统查看系统信息和日志有哪些常用的命令

请关注本头条号&#xff0c;每天坚持更新原创干货技术文章。如需学习视频&#xff0c;请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言本文主要讲解Linux系统有哪些日志文件以及如果查看和分析这些日志文件。查看linux日志的方法2. Linux日志文件有哪些我们来看看L…