要处理一些.DCM格式的焊接缺陷图像,需要读取和显示.dcm格式的图像。通过搜集资料收集到一些医学影像,并通过pydicom模块查看.dcm格式文件。若要查看dcm格式文件,可下Echo viewer 进行查看。若用过pycharm进行处理,可选用如下的代码:

# -*-coding:utf-8-*-
import cv2
import numpy
import dicom
from matplotlib import pyplot as pltdcm = dicom.read_file("dcm")
dcm.image = dcm.pixel_array * dcm.RescaleSlope + dcm.RescaleInterceptslices = []
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)] = 255kernel = 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)] = -2000plt.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处理相关推荐

  1. pydicom读取头文件_.dcm格式文件软件读取及python处理详解

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

  2. 关于医疗影像的mhd和dcm格式图像的读取和坐标转换

    本篇博客主要对近年来大赛(Luna16,kaggle,天池)中使用的肺部图像的读取和坐标转换进行整理,如果有错误,欢迎批评指正,谢谢. 1 介绍mhd格式的数据: 数据可以在Luna16(https: ...

  3. mhd格式三维图像显示_关于医疗影像的mhd和dcm格式图像的读取和坐标转换

    本篇博客主要对近年来大赛(Luna16,kaggle,天池)中使用的肺部图像的读取和坐标转换进行整理,如果有错误,欢迎批评指正,谢谢. 1 介绍mhd格式的数据: 数据可以在Luna16(https: ...

  4. 把img映象文件转化为dcm格式文件

    上一篇说到用matlab和spm软件将医学图片dcm格式转为img格式,想到反过来该怎么做,见有人做过就刚好转一下学习.跟用软件不同的是这里是用matlab编程获得,就是把三维的img图像分离出多个二 ...

  5. python打开文件并读取内容-python怎么打开文件读取数据

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  6. python 日志输出为json格式文件_Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)...

    一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据 ...

  7. .nii格式文件python_python 读取.nii格式图像实例

    我就废话不多说了,大家还是直接看代码吧~ # encoding=utf8 ''' 查看和显示nii文件 ''' import matplotlib matplotlib.use('TkAgg') fr ...

  8. python打开文件并读取内容-Python实现的读取文件内容并写入其他文件操作示例

    本文实例讲述了Python实现的读取文件内容并写入其他文件操作.分享给大家供大家参考,具体如下: 文件目录结构,如图: read_file.py是工作文件,file_test.py是读取文件源,wri ...

  9. 下列哪项不是python中对文件的读取操作-Python—文件读写操作

    初识文件操作 使用open()函数打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了,根据打开文件的方式不同能够执行的操作也会有相应的差异. 打开文件的方式: r, w, a, ...

最新文章

  1. Oracle设置date数据比较,ORACLE DATE和TIMESTAMP数据类型的比较
  2. go语言设计模式 - 建造者模式
  3. 1.第一个java程序,Hello world
  4. msdn library api调用问题
  5. 基于Flink+ClickHouse构建实时游戏数据分析最佳实践
  6. Android activity启动模式
  7. 2-5:C++快速入门之引用,引用和指针的区别
  8. 联发科技嵌入式_【MTK联发科技嵌入式面试】联发科技校招最新面试经验-看准网...
  9. 创业15年,我对自己第一次的反省
  10. 商务图表案例——仿经济学人分组漏斗图~
  11. DataBase简答题
  12. mysql数据库中文选什么数据类型_Mysql 数据类型及选择原则
  13. Wind River workbench介绍
  14. 「论文阅读」Rethinking Network Design and Local Geometry in Point Cloud:A Simple Residual MLP Framework
  15. Excel中反转一列数据的几种方法
  16. 关于Mac版Mysql的my.cnf配置文件
  17. vue 路由重复跳转报错问题
  18. 地方出现新一轮救市 北广深或跟进释放住房需求
  19. 【Git技巧】第三篇 删除冗余的本地或远程的操作分支
  20. 3分钟告诉你如何成为一名黑客?|零基础到黑客入门指南,你只需要掌握这五点能力

热门文章

  1. VisualGDB 5.6 R8 Crack-new-10-01
  2. 【手机变身无线音箱-WIFI流媒体传输】--音乐在PC和手机间双向播放-详解Android DLNA使用-使用DLNA实现不同设备间媒体共享...
  3. http请求过程(访问一个页面,发生了怎样的网络请求?)
  4. Nordic SDK14.2 S332 multiprotocol例程iphone不能连接问题2种解决方案
  5. 微信小程序和uniapp高频面试题
  6. Win10系统,如何让我的电脑显示在桌面上?
  7. Saber2016安装教程
  8. swift 计时器timer
  9. IBM Rational Functional Tester用户手册(一)
  10. java 行政区划数据库_全国行政区域api 最新最全的全国行政区域查询