how to find the sharp turn in a 2d-line (curve)?
古いコメントを表示
Hi all,
I am trying to find the sharp turn in a 2d-line (curve). Line is constructed with two vectors, X and Y. In following link you can find a sample line with realized point at which there is sharp turn (red solid point).
I appreciate if you could help me out with this.
Thanks, Payam
採用された回答
その他の回答 (3 件)
Jan
2012 年 12 月 22 日
"Sharp" is relative. There is always a zoom level, which let a curve look smooth.
If you do not have a curve defined by a function, but a piecewise defined line, you are looking for neighboring elements with and included angle above a certain limit. But when such a piece has a length of 1e-200, while the others have a length of 1.0, can this have a "sharp turn"?!
But let's imagine, that you can control this fundamental problem by inventing some meaningful thresholds. Then this determines the angle between two lines:
angle = atan2(norm(cross(N1, N2)), dot(N1, N2))
Image Analyst
2012 年 12 月 21 日
Well for that example, just do
yAtTurn = min(y);
xAtTurn = find(y == yAtTurn);
If you need something more general, flexible, and robust, then you need to say how other curves might look different than the one example you supplied.
6 件のコメント
tafteh
2012 年 12 月 21 日
Image Analyst
2012 年 12 月 22 日
What is your data? Is it an image or a set of (x,y) coordinates?
tafteh
2012 年 12 月 26 日
Image Analyst
2012 年 12 月 26 日
編集済み: Image Analyst
2012 年 12 月 26 日
Perfect - then my code will work just fine. I put it under Roger's answer since it was really his idea for the algorithm - I just packaged it into a nice demo. Go ahead and mark it as the official "Answer".
Alessandro
2014 年 5 月 30 日
Hi Image Analyst... your code works fine for me but i have a bw image instead of a set of (x,y) points... so that, i've not an ordered set of (x,y)... how can i figure out? (my purpose is still find inflection points)
Image Analyst
2014 年 5 月 30 日
You can use bwboundaries() to get a list of (x,y) points.
Roger's Answer is in the FAQ http://matlab.wikia.com/wiki/FAQ#How_do_I_find_.22kinks.22_in_a_curve.3F
カテゴリ
ヘルプ センター および File Exchange で Line Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!