医学数据处理及多目标分割处理汇总
正文
持续更新,各种有关医学影像处理但工具代码
先给一波引用包1
2
3
4
5
6
7
8
9
10
11from collections import Counter
import nibabel as nib
import numpy as np
import cv2
import random
import shutil
import os
import numpy as np
import json
import base64
一、nii 3维数组,转2维图像显示、保存
在医学图像处理中,我们经常使用一种NIFTI(Neuroimaging Informatics Technology Initiative,神经影像信息技术倡议)格式图像(.nii文件)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27def read_data(image_path,label_path):
# load data
image_data = nib.load(image_path)
label_data = nib.load(label_path)
# Convert them to numpy format,
image = image_data.get_fdata()
label = label_data.get_fdata()
## only image
# clip the images within [-125, 275]
data_clipped = np.clip(image, -125, 275)
# normalize each 3D image to [0, 1], and
data_normalised = (data_clipped - (-125)) / (275 - (-125))
images = []
labels = []
# extract 2D slices from 3D volume for training cases while
for i in range(data_clipped.shape[0]): # note some dataset slice 0 channels, some dataset slice -1 channels
# slice
img_slice = data_normalised[i, :, :] * 255
label_slice = label[i, :, :] # 0:background 1:kidney 2:carcinoma
if len(Counter(label_slice.flatten()))>1:
images.append(img_slice)
labels.append(label_slice)
return images, labels
文件夹创建
用于创建某个路径文件夹
因为python必须有父文件夹才能创建子文件夹否则报错,所以写了个回掉函数来创建文件夹1
2
3
4
5def create_dir(path):
if not os.path.exists(path):
subpath = '/'.join(path.split('/')[:-1])
create_dir(subpath)
os.makedirs(path)
多类别分割结果可视化
1 |
|
数据集随机分割
将图像数据集按比例随机分成训练集和测试集1
2
3
4
5
6
7
8
9
10
11
12def cut_train_test_data(path,target):
create_dir(os.path.join(target,'images'))
create_dir(os.path.join(target,'labels'))
imgs = os.listdir(path+'/images') # 获取图像列表
imgs = random.sample(imgs,int(len(imgs)*0.1)) # 按比例随机抽出一部分作为测试集
for img in imgs:
shutil.move('%s/images/%s'%(path,img),'%s/images/%s'%(target,img))
shutil.move('%s/labels/%s'%(path,img),'%s/labels/%s'%(target,img))
labelme生成json文件转mask图像标签
目前在做医学影像分割,采用labelme进行数据标注,标注后的数据为json格式,包含了大量标注点数据信息。
现通过代码形式批量将json数据转换为mask图像数据。labelme自带的转换工具不知道为啥只会根据点集形成连接到线条而不会生成mask图,所以干脆自己写了一个。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!