精华内容
下载资源
问答
  • matlab实现批量dicom转png 仅为学习交流,侵删!转载请注明出处! clc;clear;close all; file_path ='C:\Users\Desktop\in';% dicom文件路径 filepath_save='C:\Users\Desktop\out';% png保存路径 img_path_list=...

    仅为学习交流,侵删!转载请注明出处!

    目录

    clc;clear;close all;
    
    file_path ='C:\Users\Desktop\in';% dicom文件路径  
    filepath_save='C:\Users\Desktop\out';% png保存路径
    img_path_list=dir(strcat(file_path,''));%获取该文件夹中所有格式的图像 
    img_num = length(img_path_list);%获取图像总数量  
    for j = 3:img_num%逐一读取图像  
              image_name = img_path_list(j).name;% 图像名  
              imgName  = [file_path ,'\', image_name];
              imag=dicomread(imgName);
             % figure;imshow(imag,[0,255])
              img=double(imag); %将灰度级映射到0~255
              low=min(min(img));
              high=max(max(img));
              maxgray=high-low;%计算窗宽
              rate=256/maxgray;
              img=img*rate;
              img=img+abs(min(min(img)));%加窗
              img=uint8(img);%转化为8位的位图数据格
              my_save = [filepath_save ,'\', image_name,'.png'];
             
              img=imresize(img,[256,256]);
              
              imwrite(img,my_save);
    end 

    参考:https://blog.csdn.net/weixin_36114494/article/details/84838663

    展开全文
  • dicom转png代码

    2021-04-01 20:17:03
    import os from glob import glob import cv2 import pandas as pd import numpy as np import matplotlib.pyplot as plt import pydicom from pydicom.pixel_data_handlers.util ...dir, basename + ".png"), image)
    import os
    from glob import glob
    
    import cv2
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import pydicom
    from pydicom.pixel_data_handlers.util import apply_voi_lut
    from tqdm.notebook import tqdm
    import imageio
    from PIL import Image
    
    import warnings
    warnings.filterwarnings("ignore")
    
    def dicom2array(path, voi_lut=True, fix_monochrome=True):
        # Use the pydicom library to read the DICOM file
        dicom = pydicom.read_file(path)
    
        # VOI LUT (if available by DICOM device) is used to transform raw DICOM data to "human-friendly" view
        if voi_lut:
            data = apply_voi_lut(dicom.pixel_array, dicom)
        else:
            data = dicom.pixel_array
    
        # Depending on this value, X-ray may look inverted - fix that
        if fix_monochrome and dicom.PhotometricInterpretation == "MONOCHROME1":
            data = np.amax(data) - data
    
        # Normalize the image array
        data = data - np.min(data)
        data = data / np.max(data)
        data = (data * 255).astype(np.uint8)
    
        return data
    
    
    def resize(array, size, keep_ratio=False, resample=Image.LANCZOS):
        image = Image.fromarray(array)
    
        if keep_ratio:
            image.thumbnail((size, size), resample)
        else:
            image = image.resize((size, size), resample)
    
        return image
    
    image_ids = []
    height = []
    width = []
    
    load_dir = '/home/lincong/桌面/yxq/kaggle_new/bad_img'
    save_dir = '/home/lincong/桌面/yxq/kaggle_new/xml_img'
    
    os.makedirs(save_dir, exist_ok=True)
    
    image_paths = glob(os.path.join(load_dir, '*.dicom'))
    
    for image_path in image_paths:
        basename = os.path.basename(image_path).split('.')[0]
        image = dicom2array(image_path)
        #image_r = resize(image, size=SIZE, keep_ratio=True)
        imageio.imwrite(os.path.join(save_dir, basename + ".png"), image)
    
    

     

    展开全文
  • image = get_pixels_hu_by_simpleitk(dicom_dir) #print(len(image)) for i in tqdm(range(image.shape[0])): img_path = "./temp_dir/dicom_2_png/img/" + str(i).rjust(4, '0') + "_i.png" #将像素归一化到[0,1]...

    一、基础环境准备

    使用pip install XXX命令安装pydicom,SimpleITK,NumPy,opencv-python,tqdm几个模块。

    pydicom:pydicom is a pure python package for working with DICOM files. It was made for inspecting and modifying DICOM data in an easy "pythonic" way. The modifications can be written again to a new file.

    SimpleITK:Provide an abstraction layer to ITK that enables developers and users to access the powerful features of the InsightToolkit in a more simplified manner.

    NumPy:一个用python实现的科学计算,包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。

    opencv-python:The aim of this repository is to provide means to package each new OpenCV release for the most used Python versions and platforms.OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉机器学习软件库,可以运行在LinuxWindowsAndroidMac OS操作系统上。 [1]  它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

    tqdm:Tqdm 是 Python 进度条库,可以在 Python 长循环中添加一个进度提示信息。用户只需要封装任意的迭代器,是一个快速、扩展性强的进度条工具库。

    二、正式编码

    1.引入需要的库:

    import os
    import SimpleITK
    import pydicom
    import numpy as np
    import cv2
    from tqdm import tqdm

    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: diocm文件夹的路径
        :return: dicom list
        '''
        files = os.listdir(src_dir)
        slices = []
        for s in files:
            if is_dicom_file(src_dir + '/' + s):
                instance = pydicom.read_file(src_dir + '/' + s)
                slices.append(instance)
        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):
        '''
        读取某文件夹内的所有文件,并提取像素值(-4000,4000)
        :param dicom_dir: dicom文件夹路径
        :return: image array
        '''
        reader = SimpleITK.ImageSeriesReader()
        series_IDs = reader.GetGDCMSeriesIDs(dicom_dir)
        print(series_IDs)
        dicom_names = reader.GetGDCMSeriesFileNames(dicom_dir, series_IDs[1])
        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

    3.调用

    if __name__ == '__main__':
        dicom_dir = './data/dicom_demo/'
        #读取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)
        #print(len(image))
        for i in tqdm(range(image.shape[0])):
            img_path = "./temp_dir/dicom_2_png/img/" + str(i).rjust(4, '0') + "_i.png"
            #将像素归一化到[0,1]区间
            org_img = normalize_hu(image[i])
            #保存图像数组问灰度图(.png)
            cv2.imwrite(img_path, org_img * 255)
    展开全文
  • Dicom转png,jpg等,可处理压缩图像

    千次阅读 2018-07-13 15:21:19
    如下: file传入文件全路径 注意:这个处理不了压缩图... 10.24这个参数: 1024*1024的图,也可以自定义 import pydicom import matplotlib.pyplot as plt from skimage import exposure,img_as_float def dic...

    如下:

        file传入文件全路径

        注意:这个处理不了压缩图(维度较高的,如果需要通用化的请阅览到最后!!!!)

        10.24这个参数:转 1024*1024的图,也可以自定义

    import pydicom
    import matplotlib.pyplot as plt
    from skimage import exposure,img_as_float
    
    def dicom_2png(file):
        _currFile = file
        dcm = pydicom.dcmread(file)
        fileName = os.path.basename(file)
        imageX = dcm.pixel_array
        temp = imageX.copy()
        print("shape ----", imageX.shape)
        picMax = imageX.max()
        vmin = imageX.min()
        vmax = temp[temp < picMax].max()
        # print("vmin : ", vmin)
        # print("vmax : ", vmax)
        imageX[imageX > vmax] = 0
        imageX[imageX < vmin] = 0
        # result = exposure.is_low_contrast(imageX)
        # # print(result)
        image = img_as_float(imageX)
        plt.cla()
        plt.figure('adjust_gamma', figsize=(10.24, 10.24))
        plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)
        plt.imshow(image, 'gray')
        plt.axis('off')
        plt.savefig(fileName + '.png')
        time.sleep(1)

      PS:经过几个月研究,博主已处理好压缩的问题。

      原理是先将Dicom图压缩去掉,转通用图(主要是Dcm图显矩阵那块转换)

      转换后pydcm就可以读取 : imageX = dcm.pixel_array属性了

      不多说直接上地址,这个暂时未传至github,直接放我的码云了

      https://gitee.com/ocen/dcm_to_png

      主处理逻辑请读:AITBDCMService.py(被注释掉的是win服务注入不影响使用)

      依赖VC环境,请悉知,一般装到VS 2015或以上是没问题的

    展开全文
  • MATLAB实现dicom转换为png格式

    千次阅读 2018-12-05 16:32:12
    %从dicom文件中读取数据%首先获得指定文件夹下的所有文件的文件名 directory = uigetdir('','选择指定文件夹:'); dirs=dir(directory);%dirs结构体类型,不仅包括文件名,还包含文件其他信息。 dircell=struct2cell...
  • dicom数据转png格式

    千次阅读 2020-07-22 23:46:56
    增加创建文件夹,增加文件名操作 输出三通道图像 import os import SimpleITK import numpy as np import cv2 from tqdm import tqdm ...def convert_from_dicom_to_jpg(img,low_window,high_window,save_path):
  • Dicom Jpeg 支持3种不同的方式转换将dicom转成jpeg Jpeg 转Dicom, 可以将jpeg png等主流图片格式转为dicom文件
  • I'm trying to display a DICOM image in opencv-python.I am using the pydicom library,And then adding API's to create a full fledged DICOM viewer with DOTNET, that runs python(C# calls python with proce...
  • 如何读取dicom文件并且转换成png

    千次阅读 热门讨论 2018-09-26 17:45:33
    读取dicom文件并且转换成png 第一次写文章,这篇主要讲的是怎么处理dicom格式的医学影像文件,并且转换成png,这样利于我们对图像进行处理。 导入需要的模块,如果没安装,都可以用pip进行安装。SimpleITK、dicom是...
  • dicom转换

    2020-05-21 16:46:36
    opencv的imshow、imwrite 用了很久的imshow只会用,不知道原理。 发现一个问题把归一化后的图像imshow可以正常显示,此时的类型是float ...把原始的dicom转化成png import os import numpy as np imp
  • 这篇主要讲怎么处理dicom格式的医学影像文件,并且转换成png,这样利于我们对图像进行处理。 pydicom 目前取代了17年前的dicom库,更加的便捷 导入需要的模块,如果没安装,都可以用pip进行安装。SimpleITK、pydicom...
  • 利用DCMTK实现dcm文件图片 jpeg bmp dicom tiff pnm png 项目地址: CodeChina kissDicomViewer 详细介绍: CSDN 一个简单的 DICOM 浏览器 实现功能   DICOM浏览器自然少不了当前打开文件成图片的功能,可以...
  • dicom转png dicom转jpg 批量将DICOM文件转换成BMP文件,此源码为c#本版,自动过滤非DICOM格式的文件。 在转换bmp之前,可以对图像进行左右旋转90度、上下镜像、左右镜像、图像反色、设置dicom图像窗宽窗位、调整...
  • GDCM:cmyk的Png文件转dicom文件的测试程序GDCM:cmyk的Png文件转dicom文件的测试程序 GDCM:cmyk的Png文件转dicom文件的测试程序 #include "gdcmImageReader.h" #include "gdcmSequenceOfFragments.h" #include ...
  • 这篇文章主要是对之前使用的nii文件进行一些格式的转换,nii文件是之前用的LITS数据集,因为需要将其转为png图片和DICOM格式的二维图片。原理基本一致,先把需要转换的文件读取成numpy矩阵,然后再进行转化,主要是...
  • MATLAB实现dicom转换为png格式 %%MATLAB实现dicom转换为bmp格式 clc;clear;close all; file_path ='';% dicom文件路径 filepath_save='% bmp保存路径 img_path_list=dir(strcat(file_path,''));%获取该文件夹中...
  • nii2png import os import cv2 import numpy as np import nibabel as nib import SimpleITK as sitk from PIL import Image file_root = r'F:\' save_path = r'F:\' #file_list file_list = os.listdir(file_root...
  • 点击查看详细信息 bmp转Dicom Jpg转Dicom png转Dicom
  • I have a simple C# Console Application that places a dicom file into a stream and then Copies that stream to a .jpg file. My code creates the file but I'm unable to view the image. Below is the code ....
  • c# 实现Dicom解析(tag、png图像保存) 实际测试运行正常
  • c# 实现Dicom解析(tag、png图像) 实际测试运行正常
  • 图片(jpg,png,tif等)批量转dicom(dcm)格式-附件资源
  • Dicom心电图 绘制Dicom ECG的Python工具。 也可以将DICOM文件指定为studyUID seriesUID objectUID并从WADO服务器检索。 Github仓库: 该程序是在希望的情况下分发的,但没有任何形式的保证。 在线演示 您可以转换...
  • 自:https://developer.aliyun.com/article/672065 最近研究了一下DICOM和BMP文件转换的问题,也是很头大。度娘了很久,也在CSDN等论坛看到一些断断续续的文件,最主要的是代码只是片断,不是完整的实现。头大了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,823
精华内容 729
关键字:

dicom转png