数据集的使用

本文介绍了如何使用Python处理医学影像数据(如DICOM和NIfTI),包括文件转换、图像显示和文件夹重命名。同时涉及物联网时间序列数据的预处理以及遥感数据的处理,如GeoTIFF的读取和转换。
摘要由CSDN通过智能技术生成

医疗影像方向数据

  1. DICOM (Digital Imaging and Communications in Medicine): DICOM是医学图像和相关信息的国际标准格式。它通常用于存储和传输医学影像数据,
    如X射线、MRI、CT等。使用Python中的PyDICOM库来加载和处理DICOM文件,并将其转换为图像。
  2. NIfTI(Neuroimaging Informatics Technology Initiative): NIfTI是一种常用的神经影像数据格式,主要用于存储脑部成像数据,如结构磁共振成像
    (MRI)、功能性磁共振成像(fMRI)等。使用Python中的nibabel库来读取和处理NIfTI文件,并将其转换为图像。
  3. PNG、JPEG等图像格式:某些医疗数据集可能已经以图像文件的形式存在,如PNG、JPEG等常见的图像格式。
  • .dcm转.png
import os
import pydicom
from matplotlib import pyplot as plt

# 1. 读取DICOM文件
dicom_directory = "/Users/jiangxiyu/Downloads/12.23第四节/I238619"#原dcm文件路径
output_directory = "image"#png图片保存路径
if not os.path.exists(output_directory):
    os.makedirs(output_directory)
 
# 2. 转换DICOM文件
for root, dirs, files in os.walk(dicom_directory):
    for file in files:
        if file.endswith(".dcm"):
            dicom_file_path = os.path.join(root, file)
            ds = pydicom.dcmread(dicom_file_path)
            pixel_array_numpy = ds.pixel_array
 
            # 3. 保存为PNG
            output_path = os.path.join(output_directory, file.replace(".dcm", ".png"))
            plt.imsave(output_path, pixel_array_numpy, cmap='gray')
 
# 4. 将文件夹命名为test,按需替换
os.rename(output_directory, os.path.join(os.path.dirname(output_directory), '9'))
  • 命名
# -*- coding:utf8 -*-

import os

class BatchRename():
    '''
    批量重命名文件夹中的图片文件

    '''
    def __init__(self):
        self.path = r'/Users/jiangxiyu/Downloads/12.23第四节/pymedical/9'  #表示需要命名处理的文件夹

    def rename(self):
        #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序
        filelist = os.listdir(self.path)
        total_num = len(filelist) #获取文件夹内所有文件个数
        i = 1 #表示文件的命名是从1开始的
        for item in filelist:
            if item.endswith('.png'):
            #初始的图片的格式为jpg格式的(或者源文件是png格式及其他格式,后面的转换格式就可以调整为自己需要的即可)
                src = os.path.join(os.path.abspath(self.path), item)
                dst = os.path.join(os.path.abspath(self.path),'DT'+str(i) + '.png')
                #处理后的格式也为jpg格式的,当然这里可以改成png格式
                #dst = os.path.join(os.path.abspath(self.path), '0000' + format(str(i), '0>3s') + '.jpg')
                
                try:
                    os.rename(src, dst)
                    print ('converting %s to %s ...' % (src, dst))
                    i = i + 1
                except:
                    continue
        print ('total %d to rename & converted %d jpgs' % (total_num, i))

if __name__ == '__main__':
    demo = BatchRename()
    demo.rename()
  • nii某维度转png
import cv2
import numpy as np
import os #遍历文件夹
import nibabel as nib
import imageio #转换成图像

def nii_to_image(filepath,flag="image"):
    filenames = os.listdir(filepath)  #读取nii文件
    slice_trans = []

    for f in filenames:
        #开始读取nii文件
        img_path = os.path.join(filepath, f)
        img = nib.load(img_path)  #读取nii
        img_fdata = img.get_fdata()
        fname = f.replace('.nii', '') #去掉nii的后缀名
        img_f_path = os.path.join(newfilepath, fname)
        # 创建nii对应图像的文件夹
        if not os.path.exists(img_f_path):
            os.mkdir(img_f_path)  #新建文件夹
        if(flag=="image"):
            img_fdata=(img_fdata-img_fdata.min())/(img_fdata.max()-img_fdata.min())*255
        #开始转换图像
        (x,y,z) = img.shape
        for i in range(x):   #是z的图象序列
            slice = img_fdata[i, :, :]  #选择哪个方向的切片自己决定
            print(os.path.join(img_f_path, '{}.png'.format(i)))
            cv2.imwrite(os.path.join(img_f_path, '{}.png'.format(i)), slice)

if __name__ == '__main__':
    oldfilepath = '/Users/jiangxiyu/Downloads/12.23第四节/niishuju'#nii文件所在的文件夹路径
    newfilepath = '/Users/jiangxiyu/Downloads/12.23第四节/pngshuju'#转化后的png文件存放的文件路径
    nii_to_image(oldfilepath,"label")

   for i in range(x):   #是z的图象序列
   slice = img_fdata[i, :, :]  #选择哪个方向的切片
   for i in range(y):   #是z的图象序列
   slice = img_fdata[: , i , :]  #选择哪个方向的切片
   for i in range(z):   #是z的图象序列
   slice = img_fdata[: ,:, z]  #选择哪个方向的切片

遥感方向数据

  1. GeoTIFF(.tif):这是最常见的遥感图像格式,它可以包含地理空间信息和多个波段的数据。
  2. ENVI(.hdr):ENVI格式通常与一个HDR文件一起使用,包含了图像元数据和波段数据。
  3. NetCDF(.nc):NetCDF是一种常见的科学数据格式,可以存储多维数组和相关元数据。
  4. JPEG2000(.jp2):JPEG2000是一种无损压缩的图像格式,常用于高分辨率遥感图像。
import rasterio
from PIL import Image
import numpy as np

# 读取GeoTIFF格式的图像
with rasterio.open('samples_0.tif') as dataset:
    # 获取图像的波段数量和大小
    num_bands = dataset.count
    image_width = dataset.width
    image_height = dataset.height
    
    # 读取所有波段的数据
    image_data = dataset.read()

# 将图像数据转换为8位整数类型
image_data = (image_data / image_data.max() * 255).astype('uint8')

# 创建一个空的RGB图像
rgb_image = np.zeros((image_height, image_width, 3), dtype=np.uint8)

# 将数据的不同波段分配给RGB通道
rgb_image[:, :, 0] = image_data[0]  # Red通道
rgb_image[:, :, 1] = image_data[1]  # Green通道
rgb_image[:, :, 2] = image_data[2]  # Blue通道

# 创建PIL Image对象
pil_image = Image.fromarray(rgb_image)

# 保存图像为JPEG格式
pil_image.save('output.jpg')

时间序列方向数据

物联网(loT):物联网产生的数据通常是时间序列数据,例如传感器数据、设备日志等。在处理物联网数据时,可能需要进行填补缺失值、降噪、异常检测等预处理操作。
能源和电力系统:能源和电力系统产生大量的测量数据,如电压、功率、负载等。可能需要进行异常检测和噪声过滤等。

在这里插入图片描述

  • COCO数据集里有很多类别,可以拿出一个类别做具体的研究,180类拿出人,来识别大人小孩。专门识别大象。在真实的数据中,利用真实的方法做具体的文章是可以的。
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蒋的学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值