Find knee/elbow of a curve
88 views (last 30 days)
Show older comments
Dear all, i splited my image into sub blocks, i counted the aces of each one and then i stored all them into an array,.
Then i made a histogram, on xx' i have all the values of the aces and on yy' i have the number of "how many time every point is appeared"
image 1 histogram
image 2 histogram
Then i did the cumulative function for all the above points. I try to find the knee/elbow point of this cumulative plot.
I used this code but it didn't wokred well ,then i used this code and i have the below results, which i think are quite good. The red curcle is the knee point
image 1 cumulative func
.
image 2 cumulative func
The result is not good for the first image but works for the second.
Does any one know any other solution to find the knee/elbow of the curve? Any other code to be suggested?
Thank you
0 Comments
Answers (3)
Image Analyst
on 27 Nov 2019
To find a knee/elbow/kink in a curve, I prefer the triangle threshold method. The way this intuitive method works is to draw a hypoteneuse from the far bottom (lowest point) to the top (highest point) of the signal curve, and draw lines perpendicular to that hypoteneuse until they intersect the signal curve.. Where the perpendicular line is longest is the x value to use. I attach the triangle method.
You can also see the FAQ: How can I find "kinks" in a curve?
0 Comments
darova
on 7 Oct 2019
What about imdilate()?
clc,clear
I = imread('nett.jpg');
I1 = im2bw(I);
I2 = imdilate(I1,ones(20));
Z = 1.0*cat(3,I1,I2,I1*0);
imshow(Z)
→
→
Then just use bwlabel or something to get blobs (or regionprops to find centers)
See Also
Categories
Find more on Histograms 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!