Shortest path in grayscale image
    4 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Zuzana Vavrova
 il 25 Mag 2017
  
    
    
    
    
    Risposto: George Abrahams
      
 il 18 Dic 2023
            How can I find the path with least intenzity between two points (A and B) like on image:

1 Commento
Risposta accettata
Più risposte (1)
  George Abrahams
      
 il 18 Dic 2023
        Hi Zuzana. Late to the party, but one way would be to use my bwgraph function on File Exchange. See the example below.
% im is the image intensity, mask is the allowed pixels.
im = imresize( im2gray( imread( 'eyeScan.jpg' ) ), [ 249 249 ] );
mask = logical( insertShape( zeros( size( im ) ), ...
    'FilledCircle', [ 125 125 118 ], 'Color', 'white', ...
    'Opacity', 1, 'SmoothEdges', false) );
mask = mask(:,:,1);
% Construct the graph of connected non-zero pixels, use im as weights.
G = bwgraph( mask, NodeWeights=im );
% Calculate the linear indices of the start and end pixels, which are 
% used to reference the respective node in G.
sz = size( im );
source = sub2ind( sz, 152, 86 );
target = sub2ind( sz, 132, 221 );
% Find the shortest path between the 2 nodes.
P = shortestpath( G, source, target );
% Calculate the respective pixels for each node in the path.
[ Pi, Pj ] = ind2sub( sz, P );
% Plot the image and path.
figure
imshow( im, [] )
hold on
plot( Pj, Pi, 'r-', 'LineWidth', 1 )

0 Commenti
Vedere anche
Categorie
				Scopri di più su Graph and Network Algorithms in Help Center e File Exchange
			
	Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



