matlab | BSDS500/BSDS300分割数据集的下载以及简单处理

转自:https://blog.csdn.net/u014722627/article/details/60140789

这两个是berkely (伯克利大学)computer vision group提供的数据集,用来做segmentation(图像分割)或contour detection(轮廓检测)的,还有人拿这个做super resolution(超分重建)的


BSDS500:

数据库包含200张训练图,200张侧视图,100张检验图。ground truth是人工标识的,已数据库图片id为单位,保存成mat格式文件,一个文件包含多个标记者的标记信息。有轮廓和分割信息,用matlab读取很方便,直接load就行。

  • 原资源页面链接 
    这个页面还包括了globalPb算法的源码,release版本(linux平台)
  • 数据库下载链接 
    其实是上面那个页面里面的,直接下载点这里
  • 百度云数据库下载链接 
    原链接实在是不好下载,我就提供一下百度云版本吧,包含我处理过后的ground truth,可视化了一下。

链接:://zhuanlan.zhihu.com/p/662344245

链接:https://pan.baidu.com/s/1ywN-0N7KbCbpWTz-3ICzcA?pwd=3sl6
提取码:3sl6


BSDS300:

BSD500其实是BSD300的扩展版本。BSD300有200张训练图,100张测试图,ground truth分为color和gray两个文件夹,这两个文件夹里面又有以标记者id(uid)命名的子文件夹,里面是每个标记者提供的分割信息,以图片id命名,保存为.seg文件。


BSDS500处理脚本:

生成轮廓可视化图:

% make_gt_bondary_image.m
% bsdsRoot 需包含train、test 两个文件夹,生成的结果也放在这两个文件夹的bon子文件夹里
state = 'test';%修改为test或train,分别处理两个文件夹 
file_list = dir(fullfile(bsdsRoot,state,'*.mat'));%获取该文件夹中所有jpg格式的图像
for i=1:length(file_list)
    mat = load(file_list(i).name);
    [~,image_name,~] = fileparts(file_list(i).name);
    gt = mat.groundTruth;
    for gtid=1:length(gt)
        bmap = gt{gtid}.Boundaries;
        if gtid==1
            image = bmap;
        else
            image(bmap==true)=true;
        end

    end
    %黑底白边
    imwrite(double(image),fullfile(bsdsRoot,'bon',state,[image_name '.jpg']));
    %白底黑边
    %imwrite(1-double(image),fullfile(bsdsRoot,state,'bon',[image_name '.jpg']));

end

生成分块可视化图:

% make_gt_seg_image.m
% bsdsRoot 需包含train、test 两个文件夹,生成的结果也放在这两个文件夹的seg子文件夹里
state = 'train';
file_list = dir(fullfile(bsdsRoot,state,'*.mat'));%获取该文件夹中所有jpg格式的图像
for i=1:length(file_list)
    mat = load(file_list(i).name);
    [~,image_name,~] = fileparts(file_list(i).name);
    gt = mat.groundTruth;
    for gtid=1:length(gt)
        seg = double(gt{gtid}.Segmentation);
        seg = seg/max(max(seg));
        if gtid == 1
            image = seg;
        else
            image = image+seg;
        end
    end
    image = image/length(gt);
    imwrite(double(image),fullfile(bsdsRoot,state,'seg',[image_name '.jpg']));

end

BSDS300处理脚本:

记得先下载官方提供的处理脚本~

%make_gt_image.m
%bsdsRoot包含human文件夹
state = 'train';
present = 'color';
list = imgList(state); 
for iid=1:length(list)
    [segs,uids] = readSegs(present,list(iid));
    for seg=1:length(segs)
        bmap = seg2bmap(segs{seg});
        if seg==1
            image = bmap;
        else
            image(bmap==true)=true;
        end

    end
    imwrite(double(image),fullfile(bsdsRoot,'human',present,state,[num2str(list(iid)) '.jpg']));

end
  • 效果如下 

原图

单张图片所有轮廓信息叠加

分块信息 
我把单张图片所有用户的提供的轮廓信息叠加了,分割信息求了平均,当然你也可以选择其他处理方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值