2015_BOE_Chiu2 杜克大学oct数据集

2015_BOE_Chiu2 杜克大学oct数据集

数据集的获取与读取

这是一个用来做oct层分割和积液分割的数据集,格式为mat。一共有10位受试者的oct图,一位有61张,总共10*61=610张oct照片。

下载地址

http://www.duke.edu/~sf59/Datasets/2015_BOE_Chiu2.zip
数据集下载不了的可以留言我看到就回

数据集读取

下载解压后,使用matlab查看
10个受试者的mat数据
查看某一个subject的数据

load('Subject_01.mat')

Subject_01包含的数据
可以看到Subject_01包含了7类数据
图片–images
层的人工标注–manualLayers1,manualLayers2
层的自动标注–automaticLayersDME,automaticLayersNormal
积液的人工标注–manualFluid1,manuaFluid2
积液的自动标注–automaticFluidDME

以images为例子,496×768×61,意味着里面有61张496×768的图片。

图片的查看

frame_number=6;%取值为1-61
figure;imagesc(images(:,:,frame_number));colormap(gray)

在这里插入图片描述

python获取图片与积液的标注

图像与积液都可以直接保存得到,只需更改类别即可,需要关注的是,积液的值是[0,1],保存之前需要讲值转换为[0,255]才可以看见积液,否则保存下来的图片是黑的。

#对BOE .MAT格式文件处理成图片
import cv2
import scipy.io as scio
import os

def mkr(save_path):
    if not os.path.exists(save_path):
        os.makedirs(save_path)

srcdst = 'BOE/2015_BOE_Chiu'
path = os.listdir(srcdst)
imgdst = 'BOE/img/'
mkr(imgdst)  

for mat in path:
    filename, _ = os.path.splitext(mat)#将路径的文件名和后缀名分割
    print('名称:',filename)
    mat = os.path.join(srcdst, mat)
    array_struct = scio.loadmat(mat)

    img_data = array_struct['images'] # 可根据需要改类别
    img_count = img_data.shape[2] #图像个数
    for i in range(img_count):
        cv2.imwrite(imgdst + filename+'_'+str(i+1)+ '.jpg', img_data[:, :, i])

层标注的获取

层标注不太一样,是8*768,意味着给的不是像素值,给的是每一层标注的坐标值,值得注意的是,并不是所有的图片都有标注,里面有空值。
1.查看
随机挑选一个subject

load("Subject_01.mat");
frame_number=10;%一共61张,随机挑选一张
a=manualLayers1(:,:,frame_number)
figure;imagesc(images(:,:,frame_number));colormap(gray);
hold on;
for i = 1:8
	plot(manualLayers1(i,:,frame_number),'b')%一共8层
end

结果:如下所示,没有画出来,只有图片,不显示层标注,查看a的值 为空值
在这里插入图片描述
在这里插入图片描述

可知这张图片没有给出层标注,因此并不是61张都有层标注,需要先进行判断,如第二步所示。
以下为坐标不是空值的效果,可知所给坐标值的横坐标不是从0开始,也不是768结束。
在这里插入图片描述

2.获取有分层坐标的图片的下标

def get_valid_idx(manualLayer):
    idx = []
    num = 
    for i in range(0,61):#61是一个subject有61张,可根据需要更改
        temp = manualLayer[:,:,i]
        if np.sum(temp) != 0:
            idx.append(i)
    return idx
    
file_path="/.../"
for dirName, subdirList, fileList in sorted(os.walk(file_path)):
    for filename in fileList:
        print('正在处理:',filename[:-4])
        if ".mat" in filename.lower():
            mat_contents = loadmat(file_path + filename)
            layers1 =np.array(mat_contents['manualLayers1'], dtype=np.uint16)  
            valid_idx = get_valid_idx(layers1)
        print(valid_idx)
       
            

3.烂尾了

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值