How can I find the radius of this object, preferably at multiple x,y points for a consistent output?
3 ビュー (過去 30 日間)
古いコメントを表示
Hi,
Using the grid as a scale and performing spatial calibration on Matlab, I have managed to find the radius using r = s^2+L^2/2*s^2. However this only uses 3 data points. I was looking for a more "robust" method of doing this - i.e fitting multiple points in the image and finding multiple radius/curv values that should ideally all be the same since x^2+y^2 = r^2.
Any advice please?
2 件のコメント
Dyuman Joshi
2024 年 2 月 7 日
Have you tried searching on the forum for similar questions asked (and answered) before?
採用された回答
Matt J
2024 年 2 月 7 日
編集済み: Matt J
2024 年 2 月 7 日
You can use circularFit() from this FEX download,
It will allow you to fit the arcs based on more than 3 points. However, it will only fit one object at a time. So, if you have multiple arcs from different objects, you must process them separately.
Also, bear in mind that the circularity of the arcs in your image may be warped depending on the perspective of the camera. The fitting tool doesn't take camera perspective into account.
その他の回答 (1 件)
Image Analyst
2024 年 2 月 7 日
2 件のコメント
Matt J
2024 年 2 月 7 日
編集済み: Matt J
2024 年 2 月 7 日
Comparing the fitting performances of the two methods is a bit subjective, I suppose, seeing as it's such a short arc. But, I like mine better ;-)
load xytrial
cf1=circularFit(xy); %Matt J
[xCenter, yCenter, radius] = circlefit(xy(1,:), xy(2,:));
cf2=circularFit.groundtruth([],[xCenter,yCenter], radius); %Image Analyst
%%Compare
H(1)=plot(cf1);
hold on;
H(2)=plot(cf2,{'Color','g','LineStyle','--'});
hold off
legend(H,'Matt J','Image Analyst','Location','SE')
axis([1.2180 3.0 1.6036 3.3441]*1000); axis equal
参考
カテゴリ
Help Center および File Exchange で Convert Image Type についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!