读取图片文件和dicom文件读取转化

医学图像预处理(一)——读取图片(dcm,nii,PIL,skimage,cv2) 总结一下目前遇到的一些医学图像预处理步骤,但才开始自学两周,所以很多东西或许不对或者不全面,以后争取每两周回顾以前的文章,将内容完善,并提高质量。(2019-3-5) 由于篇幅原因,将预处理的步骤分开来,这一篇将总结读取图片的方法。 文章目录读取DICOM格式读取普通的图片案例一:skimage读取图片案例二,PIL读取图片读取nii格式 读取DICOM格式 用到的包:pydicom 例如,以公共... 阅读详情

读取图片文件

第一种:

import tensorflow as tf
import pathlib

data_path = pathlib.Path(r'D:\qwq\images_001')
all_image_paths = list(data_path.glob('*/*')) #将目录下所有东西做成列表
all_image_paths = [str(path) for path in all_image_paths]

image_count = len(all_image_paths)
print(image_count)
print(all_image_paths[:5])

4999
['D:\\qwq\\images_001\\images\\00000001_000.png', 'D:\\qwq\\images_001\\images\\00000001_001.png', 'D:\\qwq\\images_001\\images\\00000001_002.png', 'D:\\qwq\\images_001\\images\\00000002_000.png', 'D:\\qwq\\images_001\\images\\00000003_000.png']

第二种:

import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import numpy as np
 
qwq = mpimg.imread('qwq.jpg') # 读取和代码处于同一目录下的图片
 
plt.imshow(qwq) # 显示图片
plt.show()

dicom文件读取

网上找到的代码,运行会报错,弄了半天也不知道怎么解决

import os
import SimpleITK
import dicom
import numpy as np
import cv2
from tqdm import tqdm
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

def is_dicom_file(filename):
    '''
       判断某文件是否是dicom格式的文件
    :param filename: dicom文件的路径
    :return:
    '''
    file_stream = open(filename, 'rb')
    file_stream.seek(128)
    data = file_stream.read(4)
    file_stream.close()
    if data == b'DICM':
        return True
    return False

def load_patient(src_dir):
    '''
        读取某文件夹内的所有dicom文件
    :param src_dir: dicom文件夹路径
    :return: dicom list
    '''
    files = os.listdir(src_dir)
    #print(files)
    slices = []
    for s in files:
        if is_dicom_file(src_dir + '/' + s):
            instance = dicom.read_file(src_dir + '/' + s)
            slices.append(instance)
        elif StopIteration:
            return
    slices.sort(key=lambda x: int(x.InstanceNumber))
    try:
        slice_thickness = np.abs(slices[0].ImagePositionPatient[2] - slices[1].ImagePositionPatient[2])
    except:
        slice_thickness = np.abs(slices[0].SliceLocation - slices[1].SliceLocation)

    for s in slices:
        s.SliceThickness = slice_thickness
    return slices

def get_pixels_hu_by_simpleitk(dicom_dir):
    '''
        读取某文件夹内的所有dicom文件,并提取像素值(-4000 ~ 4000)
    :param src_dir: dicom文件夹路径
    :return: image array
    '''
    reader = SimpleITK.ImageSeriesReader()
    dicom_names = reader.GetGDCMSeriesFileNames(dicom_dir)
    reader.SetFileNames(dicom_names)
    image = reader.Execute()
    img_array = SimpleITK.GetArrayFromImage(image)
    img_array[img_array == -2000] = 0
    return img_array

def normalize_hu(image):
    '''
           将输入图像的像素值(-4000 ~ 4000)归一化到0~1之间
       :param image 输入的图像数组
       :return: 归一化处理后的图像数组
    '''
    MIN_BOUND = -1000.0
    MAX_BOUND = 400.0
    image = (image - MIN_BOUND) / (MAX_BOUND - MIN_BOUND)
    image[image > 1] = 1.
    image[image < 0] = 0.
    return image

if __name__ == '__main__':
    dicom_dir = 'C:/Users/Lenovo/Desktop/IMAGES'
    # 读取dicom文件的元数据(dicom tags)
    slices = load_patient(dicom_dir)
    print('The number of dicom files : ', len(slices))
    # 提取dicom文件中的像素值
    image = get_pixels_hu_by_simpleitk(dicom_dir)
    for i in tqdm(range(image.shape[0])):
        img_path = "C:/Users/Lenovo/Desktop/IMAGES" + str(i).rjust(4, '0') + "_i.png"
        # 将像素值归一化到[0,1]区间
        org_img = normalize_hu(image[i])
        # 保存图像数组为灰度图(.png)
        cv2.imwrite(img_path, org_img * 255)


{学海无涯}【基于VTK的三维建模】——1.Dicom文件的读取与显示 学习中,记笔记是个好习惯。似乎有点晚了,不过没关系,从现在开始!这次要做的项目是老师给的,要从一批Dicom文件中读取头部模型的数据并进行三维建模。先是读取头部CT图片,再是读取头部MIR(核磁共振成像)图片。不过医学图像都是存储为Dicom格式。今天完成的效果图如下:Dicom 阅读详情

相关推荐

Dicom文件(.IMA)批量转化为NIFTI(.nii)文件

@toc 动机 因为NIFTI的文件是三维的图像,而DICOM的文件为二维的多张图像,所以相对于DICOM文件,NIFTI文件训练的张数更少、更加易用于机器学习。 文件概况 我的文件大概是图中的样子,在xuezhong文件夹中有一些子文件夹,……,储存着一些.IMA文件(.IMA文件其实就是Dicom文件的一种,可以直接按照Dicom文件进行操作)。 步骤 第一步:我们首先要获取存储影像图片的所有文件夹的路径; 第二步:将文件夹内的影像转化为.nii格式. 具体操作 第一步 我们首先利用os.list

River_J777的博客 7998

PNG、JPG如何转Dicom(dcm),那些年我踩过的坑(Python版)

Dicom作为医学影像的常见数据格式,是每个深耕于医疗AI的同学无法跳过的一个坑。虽然我只是一名扎根于算法部署方面的小白。但是也不可避免地接触到这类数据。这不,最近接到算法同学给出的算法,需要我自己找公开数据集进行测试。可是Dicom数据集并不常见(PS:测了1000张还嫌不够,大无语),因此只能将目光聚焦于PNG、JPG类型的数据集(直接用PNG、JPG训练的除外)。

m0_46303486的博客 1万+

MATLAB—医学DICOM图像处理

DICOM图像操作dicom图像读取dicom图像存为bmp格式dicom图像调节尺寸 dicom图像读取 I=dicomread(‘filename’); %读取图像 metadata = dicominfo(I); %显示图像的存储信息 imagesc(I); %显示出的是彩色图像(读取方式只能读取一张二维的CT图片) imshow(I, []); %显示灰度图像,注意一定要加 [] 注:imshow(I,[]) 显示灰度图像 I,根据 I 中的像素值范围对显示进行转换。iimshow 将 I 中的

weixin_45965683的博客 4829

dicom读取与处理

基本是看的这篇博客,稍微增删了一些东西 单张影像的读取 使用 pydicom.dcmread() 函数进行单张影像的读取,返回一个pydicom.dataset.FileDataset对象。 import os import pydicom # 调用本地的 dicom file folder_path = r"D:\Data" file_name = "PA1_0001.dcm" file_path = os.path.join(folder_path,file_name) ds = pydicom.dc

xiaobian_的博客 2788

python编程Demo:将dicom图片转换成jpg图片

主要原理:调整dicom的窗宽,使之各个像素点上的灰度值缩放至[0,255]范围内。使用到的python库:SimpleITK下面是一个将dicom(.dcm)图片转换成jpg图片的demo:import SimpleITK as sitk import numpy as np import cv2 def convert_from_dicom_to_jpg(img,low_window,hig...

IT_forlearn的博客 9146

【医学影像数据处理】 Dicom 文件格式处理汇总二(Python格式转换)

Dicom数据存储格式,是医学领域通用的数据传输形式,本文将围绕dicom与医学算法展开

钱多多先森 9339

dcmtk读取DICOM并进行体绘制渲染

今天的内容分为两个部分,一部分是使用dcmtk对dicom文件进行分析并且提取,第二个部分是使用vtk对dicom文件中的数据进行体绘制。 一、dicom文件读取 在读取文件的像素数据(PixelData)之前需要先预读取文件的信息,比如行列大小、像素间距、编码规则等等。 1.1、文件信息读取 void Read_Dicom_Info(ImageInfo& imageInfo) { std::string fileName = "Dc...

qq_33598781的博客 4747

c# vtk 读取dicom文件!

c# vtk 读取dicom文件!

DICOM文件读取及PNG格式图片展示

DICOM文件读取及PNG格式图片展示

Sagacity_1125的博客 1126

本程序可用于读取单幅CT图像并显示相应DICOM文件中头信息。

// 本例子可用于读取单幅CT图像并显示相应DICOM文件中头信息。 //滤波操作--高通滤波、低通滤波 //图像数据的缩放

VC实现DICOM文件打开

可以实现简单的dicom文件的打开,显示图像,以及可以读取dcm文件中的其他一些信息。

如何读取dicom文件并且转换成png

读取dicom文件并且转换成png 第一次写文章,这篇主要讲的是怎么处理dicom格式的医学影像文件,并且转换成png,这样利于我们对图像进行处理。 导入需要的模块,如果没安装,都可以用pip进行安装。SimpleITK、dicom是操作医学影像的模块。 import os import SimpleITK import dicom import numpy as np import cv2 fr...

qq_35358021的博客 1万+

DICOM.jl:Julia包,用于读写DICOM(医学数字成像和通信)文件

DICOM.jl:Julia包,用于读写DICOM(医学数字成像和通信)文件

python 读取dicom文件转化成图片,使用PyQt5展示

python 读取dicom文件转化成图片,使用PyQt5展示

shxhzxj的博客 563

DICOM TO IMAGE 转换器 = dicom2image(filename e,imagetype): 将任何 DICOM(.dcm) 文件转换为图像 (png,bmp,jpg,tif,gif 等..)-matlab开发

%%打开DICOM数据并将其保存为图像文件%变量%filename = 'filename' 括起来,要转换的 dicom 文件的名称%imagetype = 用“imagetype”括起来,输出图像类型的名称(png、bmp、jpg、png、tiff、gif 等。) 函数 dicom2image(文件名,图像类型) % Dicom 到图像转换器% 作者:兰斯·蒂诺% 版本:0.2 %% 输入错误检查%%%%%%%%%%%%%%%%%%%%%%%输入姓名%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%% 如果 ~exist('filename','var') % 不存在error('你需要一个输入名称!'); 结尾%%%%%%%%%%%%%%%%%%%%%%% 图像类型 %%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% 如果

从零构建机械臂规划栈:Pinocchio、OMPL与Ruckig的工程化融合实践

本文详细介绍了如何从零构建机械臂规划栈,通过融合Pinocchio、OMPL和Ruckig三大核心组件,实现高性能的机械臂运动规划与轨迹生成。文章深入探讨了技术选型、工程架构设计及实战优化技巧,特别针对逆解、路径规划和轨迹平滑等关键环节提供了实用解决方案,适用于工业场景中的高实时性需求。

weixin_29072299的博客 433

多个dicom文件转化为3D nii文件

这里使用python中的一个库 dicom2nifti 首先安装 dicom2nifti, 在终端使用pip安装 pip install dicom2nifti 然后两行代码即可搞定: import dicom2nifti dicom2nifti.dicom_series_to_nifti(original_dicom_directory, output_file, reorient_nif...

thunder_k的博客 6437

GitHub漏洞挖掘与CVE提交实战指南:从发现到编号的完整链路

GitHub开源项目是现代软件供应链的核心节点,其安全漏洞直接影响全球数百万系统的机密性、完整性与可用性。理解漏洞本质需回归CIA三元组原理,而真实可利用性依赖对协议解析层、配置加载区和依赖传递链等高危模块的精准识别。技术价值在于将模糊的‘可疑逻辑’转化为符合MITRE CVE标准的可验证事件,支撑SDL流程、威胁情报建设与供应链风险管理。典型应用场景包括甲方安全工程师推动供应商修复、独立研究者参与负责任披露,以及DevSecOps团队构建自动化风险坐标系。本文基于27次CVE提交经验,聚焦GitHub代码

weixin_33646989的博客 651

Dicom文件转mhd,raw文件格式

  最近在整理与回顾刚加入实验室所学的相关知识,那会主要是对DICOM这个医疗图像进行相应的研究,之前有一篇博客已经讲述了一些有关DICOM的基本知识,今天这篇博客就让我们了解一下如何将Dicom文件转为mhd,raw文件格式。      一、将Dicom文件转mhd,raw文件格式的原因      医学图像通常是通过dicom文件格式进行存储的,但为了便于读取和使用也常常将其转化为:每个病人一个...

li123128的博客 2134

LabVIEW 调用MATLAB 进行图像处理的实现

程机械及设备的变形、振动、冲击、粗糙度、刚度和强度等特性,还可用在土木结构、水利设施的变形测量[4][5]。因此,该技术在机械、土木、水利、电器、航空航天、兵器工业及生物医学等领域的检测中具有非常重要的地位。将物面前方空间的散斑用摄像设备记录下来,当物体运动或由于受力而变形时,这些随机分布的散斑图也随之在空间按一定的规律运动,因此能用记录的散斑图在计算机上分析物体的运动和变形,这就是电子散斑技术。当物体的漫反射表面被激光照射时,漫反射的光波在物体表面的前方相互干涉,由于漫反射光的。

qq_37971227的博客 3873

FPGA笔试题知识点汇总(21~40)

FPGA笔试题知识点汇总(21~40)

weixin_52487896的博客 5874
上一篇: pytorch实现神经网络中间层的可视化
下一篇: dicom读取与处理
琥珀色的琉璃夜
博客等级 码龄8年 24粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值