医疗影像方向数据
- DICOM (Digital Imaging and Communications in Medicine): DICOM是医学图像和相关信息的国际标准格式。它通常用于存储和传输医学影像数据,
如X射线、MRI、CT等。使用Python中的PyDICOM库来加载和处理DICOM文件,并将其转换为图像。 - NIfTI(Neuroimaging Informatics Technology Initiative): NIfTI是一种常用的神经影像数据格式,主要用于存储脑部成像数据,如结构磁共振成像
(MRI)、功能性磁共振成像(fMRI)等。使用Python中的nibabel库来读取和处理NIfTI文件,并将其转换为图像。 - 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] #选择哪个方向的切片
遥感方向数据
- GeoTIFF(.tif):这是最常见的遥感图像格式,它可以包含地理空间信息和多个波段的数据。
- ENVI(.hdr):ENVI格式通常与一个HDR文件一起使用,包含了图像元数据和波段数据。
- NetCDF(.nc):NetCDF是一种常见的科学数据格式,可以存储多维数组和相关元数据。
- 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类拿出人,来识别大人小孩。专门识别大象。在真实的数据中,利用真实的方法做具体的文章是可以的。