How to detect the critical points on the boundary..?

1 view (last 30 days)
Hello, I want to detect the critical pints on the object boundary, i am not getting how to code it in the MATLAB, My algorithm is given below let ....x-3,x-2,x-1,x,x+1,x+2,x+3... are the points on the boundary if the perpendicular distance from the x and straight line joining x-1 & x+1, is greater than the threshold then x-1 and x+1 will be our critical points and if it is less than the threshold then we progressively examine the neighbors, like x-2,x-1,x,x+1,x+2,x+3 again if it is greater than the threshold then x-2 and x+2 will be critical points and if it is less then then follow the same process, let our first set of critical points on the boundary are X+5 and X-5. Then for finding out next critical points i have to check the perpendicular distance between x+6 and straight line joining the x+5 and x+7,and again if it is less than the threshold i have to continue the process.
i would like to know how code it with the less number of for loops,i Also like to know how to save the co-ordinates of critical points after finding it. If possible please help i am beginner in MATLAB programming, Thanks in advance
  2 Comments
Image Analyst
Image Analyst on 5 Dec 2015
What perpendicular distance? This is a 1-D problem. There is no y, is there? So how can anything be perpendicular when everything lies along a 1-D number line? Can you provide a diagram of this?
harshal j
harshal j on 5 Dec 2015
Thanks for the comment, this program is not 1-D program,This is 2-D programming each point is having x and y co-ordinates,
for your reference consider the points b-3,b-2,b-1,b,b+1,b+2,b+3. Where b is the point on the boundary with coordinate (x,y. each point on the boundary is 2-D. for your reference i have included the figure of the object.

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 5 Dec 2015
I'd just put that into a for loop - nothing wrong with for loops for tiny amounts of data like this.
  3 Comments
Image Analyst
Image Analyst on 5 Dec 2015
Have a separate loop counter
numCritical = 1;
for k = 1 : length(X)
% Code...
if itsACriticalPoint
% Save x and y values of this point into the criticalPoints array.
criticalPoints(numCritical, 1) = X(k);
criticalPoints(numCritical, 2) = Y(k);
numCritical = numCritical + 1;
end
end
harshal j
harshal j on 6 Dec 2015
Thank u so much for the answer it will solve my problem.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!