Indexing points along curve in matrix in order from one endpoint to the other
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Image Analyst
2012-7-17
编辑:Image Analyst
2012-7-17
Is interparc what you're looking for? http://www.mathworks.com/matlabcentral/fileexchange/34874-interparc Or you might try bwboundaries() or bwtraceboundary().
5 个评论
Sean de Wolski
2012-7-18
Combine this with the endpoints that I suggested and you can extract exactly what you need!
更多回答(1 个)
Sean de Wolski
2012-7-17
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 个评论
Sean de Wolski
2012-7-18
I don't see how bwdist can be of any assistance to you. Every point on the line will be returned as a zero. I would give my approach with bwmorph and endpoints a try.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!