.dcm格式文件软件读取及python处理详解


Posted in Python onJanuary 16, 2020

要处理一些.DCM格式的焊接缺陷图像,需要读取和显示.dcm格式的图像。通过搜集资料收集到一些医学影像,并通过pydicom模块查看.dcm格式文件。

若要查看dcm格式文件,可下Echo viewer 进行查看。

若用过pycharm进行处理,可选用如下的代码:

# -*-coding:utf-8-*-
import cv2
import numpy
import dicom
from matplotlib import pyplot as plt

dcm = dicom.read_file("dcm")
dcm.image = dcm.pixel_array * dcm.RescaleSlope + dcm.RescaleIntercept

slices = []
slices.append(dcm)
img = slices[int(len(slices) / 2)].image.copy()
ret, img = cv2.threshold(img, 90, 3071, cv2.THRESH_BINARY)
img = numpy.uint8(img)

im2, contours, _ = cv2.findContours(img, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
mask = numpy.zeros(img.shape, numpy.uint8)
for contour in contours:
  cv2.fillPoly(mask, [contour], 255)
img[(mask > 0)] = 255

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (2, 2))
img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

img2 = slices[int(len(slices) / 2)].image.copy()
img2[(img == 0)] = -2000

plt.figure(figsize=(12, 12))
plt.subplot(131)
plt.imshow(slices[int(len(slices) / 2)].image, 'gray')
plt.title('Original')
plt.subplot(132)
plt.imshow(img, 'gray')
plt.title('Mask')
plt.subplot(133)
plt.imshow(img2, 'gray')
plt.title('Result')
plt.show()

也可用如下代码:

import pydicom
import os
import numpy
from matplotlib import pyplot, cm
# 用lstFilesDCM作为存放DICOM files的列表
PathDicom = "dicom/2" #与python文件同一个目录下的文件夹
lstFilesDCM = []
for dirName,subdirList,fileList in os.walk(PathDicom):
  for filename in fileList:
    if ".dcm" in filename.lower(): #判断文件是否为dicom文件
      print(filename)
      lstFilesDCM.append(os.path.join(dirName,filename)) # 加入到列表中
## 将第一张图片作为参考图
RefDs = pydicom.read_file(lstFilesDCM[0])  #读取第一张dicom图片
# 建立三维数组
ConstPixelDims = (int(RefDs.Rows),int(RefDs.Columns),len(lstFilesDCM)) # 得到spacing值 (mm为单位)
ConstPixelSpacing = (float(RefDs.PixelSpacing[0]), float(RefDs.PixelSpacing[1]), float(RefDs.SliceThickness))
# 三维数据
x = numpy.arange(0.0, (ConstPixelDims[0]+1)*ConstPixelSpacing[0], ConstPixelSpacing[0]) # 0到(第一个维数加一*像素间的间隔),步长为constpixelSpacing
y = numpy.arange(0.0, (ConstPixelDims[1]+1)*ConstPixelSpacing[1], ConstPixelSpacing[1]) #
z = numpy.arange(0.0, (ConstPixelDims[2]+1)*ConstPixelSpacing[2], ConstPixelSpacing[2]) #
ArrayDicom = numpy.zeros(ConstPixelDims, dtype=RefDs.pixel_array.dtype)
for filenameDCM in lstFilesDCM:
  ds = pydicom.read_file(filenameDCM)
  ArrayDicom[:, :, lstFilesDCM.index(filenameDCM)] = ds.pixel_array # 轴状面显示
  pyplot.figure(dpi=300)
  pyplot.axes().set_aspect('equal', 'datalim')
  pyplot.set_cmap(pyplot.gray())
  pyplot.pcolormesh(x, y, numpy.flipud(ArrayDicom[:, :, 2])) # 第三个维度表示现在展示的是第几层
  pyplot.show()

这两个代码都是可以进行读取的。但是不知道为什么在焊接检测中的dcm图像却无法进行读取。

以上这篇.dcm格式文件软件读取及python处理详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
linux系统使用python获取内存使用信息脚本分享
Jan 15 Python
python实现获取序列中最小的几个元素
Sep 25 Python
使用pdb模块调试Python程序实例
Jun 02 Python
详解python如何调用C/C++底层库与互相传值
Aug 10 Python
Python中模块string.py详解
Mar 12 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
python自动生成model文件过程详解
Nov 02 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
Python autoescape标签用法解析
Jan 17 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
Python 用户输入和while循环的操作
May 23 Python
用python解压分析jar包实例
Jan 16 #Python
Python3 实现爬取网站下所有URL方式
Jan 16 #Python
python3爬取torrent种子链接实例
Jan 16 #Python
Python 实现自动获取种子磁力链接方式
Jan 16 #Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 #Python
Python简单实现区域生长方式
Jan 16 #Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 #Python
You might like
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
原生JS实现烟花效果
2020/03/10 Javascript
python判断字符串是否包含子字符串的方法
2015/03/24 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
Laravel中Kafka的使用详解
2021/03/24 PHP
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
文字自荐书范文
2014/02/10 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
2014年护士长工作总结
2014/11/11 职场文书
学生检讨书范文
2015/01/27 职场文书
2015年导购员工作总结
2015/04/25 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA