Detecting shortest path on binary image
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
sooljex
el 29 de Nov. de 2019
I'm trying to detect the shortest path from certain point on the image P in certain radius of searching, as shown on the picture. I was using linear equation y=ax+b,
x=400;
y=600;
switch direction
case 'right'
while(impixel(image,x,y)==[0,0,0])
x=x+1;
%y=600 stays the same
end
case 'left'
while(impixel(image,x,y)==[0,0,0])
x=x-1;
end
%(...)
end
which is easy to use with horizontal line (a=0,b=x), but problem appears when I want to rotate the line with point P as origin. Since the pixel P is not the origin (0,0) of the image, its not enough to just change the 'a' parameter, but also somehow calculate 'b' for full linear equation.
Maybe there is some helpfull command that allows to detect the clostest binary object in given direction? If not, I'd appreciate any suggestions how can I calculate a and b parameters for the line equations.
2 comentarios
KALYAN ACHARJYA
el 29 de Nov. de 2019
The question is:
Are you looking for the distance between yellow point and nearest white pixel towards right hand side?
Right?
Respuesta aceptada
Image Analyst
el 29 de Nov. de 2019
Steve Eddins has a whole blog series on this. I suggest you read it: Exploring shortest paths
To detect the boundary point closest to (x1, y1) you'll need to do this:
mask = bwareafilt(mask, 1); % Make sure there is only one blob.
boundaries = bwboundary(mask);
boundaries = boundaries{1}; % Extract from cell. Data is [rows, columns], not [x, y]
% Find rows
yRows = boundaries(:, 1);
% Find columns (x)
xColumns = boundaries(:, 2);
% Find distances from (x1, y1) to all other points.
distances = sqrt((xColumns - x1).^2 + (yRows - y1).^2);
% Find the closest
[minDistance, indexOfMin] = min(distances);
% Find the coordinates
xColumnClosest = xColumns(indexOfMin)
yRowClosest = yRows(indexOfMin)
1 comentario
Más respuestas (0)
Ver también
Categorías
Más información sobre Graph and Network Algorithms en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
