| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | function [] = PostprocessHED(hed_mat_dir, edge_dir, image_width, threshold, small_edge) |
| |
|
| | if ~exist(edge_dir, 'dir') |
| | mkdir(edge_dir); |
| | end |
| | fileList = dir(fullfile(hed_mat_dir, '*.mat')); |
| | nFiles = numel(fileList); |
| | fprintf('find %d mat files\n', nFiles); |
| |
|
| | for n = 1 : nFiles |
| | if mod(n, 1000) == 0 |
| | fprintf('process %d/%d images\n', n, nFiles); |
| | end |
| | fileName = fileList(n).name; |
| | filePath = fullfile(hed_mat_dir, fileName); |
| | jpgName = strrep(fileName, '.mat', '.jpg'); |
| | edge_path = fullfile(edge_dir, jpgName); |
| |
|
| | if ~exist(edge_path, 'file') |
| | E = GetEdge(filePath); |
| | E = imresize(E,[image_width,image_width]); |
| | E_simple = SimpleEdge(E, threshold, small_edge); |
| | E_simple = uint8(E_simple*255); |
| | imwrite(E_simple, edge_path, 'Quality',100); |
| | end |
| | end |
| | end |
| |
|
| |
|
| |
|
| |
|
| | function [E] = GetEdge(filePath) |
| | load(filePath); |
| | E = 1-edge_predict; |
| | end |
| |
|
| | function [E4] = SimpleEdge(E, threshold, small_edge) |
| | if nargin <= 1 |
| | threshold = 25.0/255.0; |
| | end |
| |
|
| | if nargin <= 2 |
| | small_edge = 5; |
| | end |
| |
|
| | if ndims(E) == 3 |
| | E = E(:,:,1); |
| | end |
| |
|
| | E1 = 1 - E; |
| | E2 = EdgeNMS(E1); |
| | E3 = double(E2>=max(eps,threshold)); |
| | E3 = bwmorph(E3,'thin',inf); |
| | E4 = bwareaopen(E3, small_edge); |
| | E4=1-E4; |
| | end |
| |
|
| | function [E_nms] = EdgeNMS( E ) |
| | E=single(E); |
| | [Ox,Oy] = gradient2(convTri(E,4)); |
| | [Oxx,~] = gradient2(Ox); |
| | [Oxy,Oyy] = gradient2(Oy); |
| | O = mod(atan(Oyy.*sign(-Oxy)./(Oxx+1e-5)),pi); |
| | E_nms = edgesNmsMex(E,O,1,5,1.01,1); |
| | end |
| |
|