VLFeat - Documentation > vl_demo_imdisttf

# VLFeat.org

Documentation> vl_demo_imdisttf

# Source code for ``vl_demo_imdisttf.m

This file is located in the ``toolbox/demo folder in VLFeat package.

    % VL_DEMO_IMDISTTF Demonstrates image distance transform

    % load image
    im = imread(fullfile(vl_root, 'data', 'roofs1.jpg')) ;
    im = im(100:200,100:200,:) ;
    imSize = [size(im,1) size(im,2)] ;

    % creates an edge map
    edges = zeros(imSize) + inf;
    edges(edge(rgb2gray(im), 'canny')) = 0 ;

    % compute distance transform
    [distanceTransform, neighbors] = vl_imdisttf(single(edges)) ;

    % plot
    [u,v] = meshgrid(1:imSize(2),1:imSize(1)) ;
    [v_,u_] = ind2sub(imSize, neighbors) ;

    % avoid cluttering the plot too much
    u = u(1:3:end,1:3:end) ;
    v = v(1:3:end,1:3:end) ;
    u_ = u_(1:3:end,1:3:end) ;
    v_ = v_(1:3:end,1:3:end) ;

    figure(1) ; clf ; imagesc(im) ; axis off image ;
    figure(2) ; clf ; imagesc(edges) ; axis off image ;
    figure(3) ; clf ; imagesc(edges) ; axis off image ;
    hold on ; h = quiver(u,v,u_-u,v_-v,0) ; colormap gray ;
    figure(4) ; clf ; imagesc(sqrt(distanceTransform)) ; axis off image ;

    figure(1) ; vl_demo_print('imdisttf_src') ;
    figure(2) ; vl_demo_print('imdisttf_edge') ;
    figure(3) ; vl_demo_print('imdisttf_neigh') ;
    figure(4) ; vl_demo_print('imdisttf_dist') ;