| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
|
|
| 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 |
|
|