.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 相关文章推荐
使用Django和Python创建Json response的方法
Mar 26 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
Python中的 enum 模块源码详析
Jan 09 Python
python数据归一化及三种方法详解
Aug 06 Python
django基础学习之send_mail功能
Aug 07 Python
python函数修饰符@的使用方法解析
Sep 02 Python
python 表格打印代码实例解析
Oct 12 Python
Centos7 下安装最新的python3.8
Oct 28 Python
python制作朋友圈九宫格图片
Nov 03 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
进行数据处理的6个 Python 代码块分享
Apr 06 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
Protoss魔法科技
2020/03/14 星际争霸
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
js 字符串操作函数
2009/07/25 Javascript
jQuery 使用手册(七)
2009/09/23 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
简化版的vue-router实现思路详解
2018/10/19 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
python解析json实例方法
2013/11/19 Python
Python素数检测实例分析
2015/06/15 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
python K近邻算法的kd树实现
2018/09/06 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
python with语句的原理与用法详解
2020/03/30 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
招商经理岗位职责
2013/11/16 职场文书
创文明城市标语
2014/06/16 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
MongoDB balancer的使用详解
2021/04/30 MongoDB
详解JAVA的控制语句
2021/11/11 Java/Android