# Indexing points along curve in matrix in order from one endpoint to the other

5 Ansichten (letzte 30 Tage)
Ryan am 17 Jul. 2012
I have a logical image with many 1-px wavy curve segments and I am trying to fit a curve to these segments to find the orientation along the curve through derivative information. To do this I am planning on using the indexed points from the curves and something such as cubic splines, but "PixelList" and "find" return the points in order of appearance in the matrix, not order of appearance in the line.
Is there a method in MATLAB to index the points in the matrix in an order starting from one endpoint to the other endpoint.
For example given:
A = [0 1 1 1 0; 1 0 0 0 1; 1 0 0 0 0; 1 0 0 0 1; 0 1 0 1 0; 0 0 1 0 0];
% A =
% 0 1 1 1 0
% 1 0 0 0 1
% 1 0 0 0 0
% 1 0 0 0 1
% 0 1 0 1 0
% 0 0 1 0 0
[rows cols] = find(A==1); %This gives the following [row,col] pairs:
(2,1),(3,1),(4,1),(1,2),(5,2)... etc
I would like the points in this order ([row,col] again):
(2,5),(1,4),(1,3),(1,2),(2,1),(3,1),(4,1)... etc
% Or starting from the other endpoint
##### 0 Kommentare-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Image Analyst am 17 Jul. 2012
Bearbeitet: Image Analyst am 17 Jul. 2012
Is interparc what you're looking for? http://www.mathworks.com/matlabcentral/fileexchange/34874-interparc Or you might try bwboundaries() or bwtraceboundary().
##### 5 Kommentare4 ältere Kommentare anzeigen4 ältere Kommentare ausblenden
Ryan am 18 Jul. 2012
Bearbeitet: Ryan am 18 Jul. 2012
I may switch to endpoints to see if it's faster, but I initially just wrote an if statement + for loop combo that finds the points that repeat 1 spot from where it first occurs and then clip the array appropriately.
It's worth noting that interparc is a great interpolation function for after bwboundaries gets me the point values!

Melden Sie sich an, um zu kommentieren.

### Weitere Antworten (1)

Sean de Wolski am 17 Jul. 2012
Use the 'endpoints' option in bwmorph to find the end points. Pick an end point and then traverse your 'pixellist' selecting points adjacent to each selected pixel repeating until you reach the other end.
##### 3 Kommentare2 ältere Kommentare anzeigen2 ältere Kommentare ausblenden
Ryan am 18 Jul. 2012
I misunderstood what bwdist calculated, I will hopefully get a chance to test these solutions soon, thanks again.

Melden Sie sich an, um zu kommentieren.

### Kategorien

Find more on Region and Image Properties in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by