Detecting shortest path on binary image
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
sooljex
am 29 Nov. 2019
Bearbeitet: sooljex
am 29 Nov. 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 Kommentare
KALYAN ACHARJYA
am 29 Nov. 2019
The question is:
Are you looking for the distance between yellow point and nearest white pixel towards right hand side?
Right?
Akzeptierte Antwort
Image Analyst
am 29 Nov. 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 Kommentar
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Graph and Network Algorithms finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
