BSDS500边缘检测,评估代码使用方法.

1.代码(用hed中eval文件夹中matlab软件进行)

  1. 代码文件eval_edge.m中,内嵌了NMS处理流程,无需再查找其他代码,简单的修改即可得到评估结果
  2. 代码链接:https://github.com/xwjabc/hed

2.软件

  • 代码语言:MATLAB 软件版本:MATLABR2021b(建议使用2016之前的版本,但是经过对代码的修改之后的版本也没什么问题)

3代码的使用

  1. 代码环境的配置
  2. 经过我对代码的修改以及他人运行验证,该代码可以完美运行。 运行评估代码需要安装pdollar
    toolbox和pdollar_edges两个工具箱,在刚才下载的hed文件夹中已经包含了,即edges和toolbox.badacost.public两个文件夹,并且在eval_edge.m文件的开头位置将这两个工具箱的位置添加进了matlab系统路径。

下面是我运行成功的代码,只需将对应的检测地址更换。
**data_dir是数据文件夹
mat_dir是检测待NMS转换的mat文件夹
nms_dir是转换后文件夹
gtDir 是真实值文件夹

**

% Section 1: NMS process (formerly nms_process.m from HED repo).
disp('NMS process...')%输出字符串
data_dir = 'C:\Users\514-123\Downloads\hed-master\hed-master\eval\data';
mat_dir = fullfile(data_dir, 'mat'); %拼接文件路径
nms_dir = fullfile(data_dir, 'nms');
mkdir(nms_dir)

files = dir(mat_dir);%获得所有子文件夹和文件并返回结构体,第一行和第二行是当前目录和上一级目录
files = files(3:end,:);  % It means all files except ./.. are considered.
mat_names = cell(1,size(files, 1));%size(files, 1)返回files的行数,cell(1,n)返回1*n的元胞数组
nms_names = cell(1,size(files, 1));
for i = 1:size(files, 1)
    mat_names{i} = files(i).name;
    nms_names{i} = [files(i).name(1:end-4), '.png']; % Output PNG files.
end

for i = 1:size(mat_names,2)
    matObj = matfile(fullfile(mat_dir, mat_names{i})); % Read MAT files.
    varlist = who(matObj);%将文件名称存在元胞数组varlist中
    x = matObj.(char(varlist));
    if iscell(x)
        x=x{1}
        x = x.Boundaries;  % 提取 'Boundaries' 字段的数值矩阵
    end
    E=convTri(single(x),1);
    [Ox,Oy]=gradient2(convTri(E,4));
    [Oxx,~]=gradient2(Ox); [Oxy,Oyy]=gradient2(Oy);
    O=mod(atan(Oyy.*sign(-Oxy)./(Oxx+1e-5)),pi);
    E=edgesNmsMex(E,O,1,5,1.01,4);
    imwrite(uint8(E*255),fullfile(nms_dir, nms_names{i}))
end
% Section 2: Evaluate the edges (formerly EvalEdge.m from HED repo).
disp('Evaluate the edges...');
gtDir  = 'C:\Users\514-123\Downloads\hed-master\hed-master\eval\data\test';
resDir = fullfile(data_dir, 'nms');
edgesEvalDir('resDir',resDir,'gtDir',gtDir, 'thin', 0, 'pDistr',{{'type','parfor'}},'maxDist',0.0075);

figure; edgesEvalPlot(resDir,'HED');


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值