polywords上测出了四个圆,怎么用四个圆心拟合成一个平面

polywords上测出了四个圆,怎么用四个圆心拟合成一个平面,第1张

给定多个点,根据最小二乘原理,可以拟合出一个圆形,拟合的精度很高,空间中的离散点得到拟合平面,其实这就是一个最优化的过程。即求这些点到某个平面距离和最小的问题。我们知道一个先验消息,那就是该平面一定会过众散点的平均值。接着我们需要做的工作就是求这个平面的法向量。

有一个思路供参考

设样本点(Xi, Yi)位于自变量为(x, y)的圆上, 圆方程为:

(x-x0)^2 + (y-y0)^2 = r^2

换一种思路, 上述方程可以看成关于(x0, y0, r)的方程, 以(x,y)为参量, 对应一个3维曲面

这样, 任意一个样本点都对应一个3维曲面

首先, 粗略限定(x0, y0, r)的范围

然后, 确定步长 将x0, y0离散化 这样, 一个(Xi, Yi), 能得到3个矩阵(分别与x0, y0, r对应)

然后, 对于全部的3维曲面, 搜索密度最大的区域

对于区域内部的点, 分别对x0, y0, r计算平均值 就是待求的圆心坐标(x0, y0)和半径r

一种是利用图像工具栏的放大功能,用肉眼读出。

具体做法为:不断放大目标点,直到坐标精度达到使用者的要求

第二种是利用ginput函数,从图中点击不同位置获取不同点的坐标值,但是这个坐标值是相对坐标,不是绝对坐标

a = ginput(1);disp(a);此时使用者只需在图中点击目标点,即可显示出目标点坐标。

最后一种是利用工具栏中的tip工具,插入数据点标注,这个功能不仅能精确得到点坐标,而且可以标识出来。

工具栏->insert->tip工具。点击待读入点即可,程序会自动定位至曲线上

如果想要一个完整的圆形:“圆”命令“三点(3P)”法,任意选取其中的三个点,作出一个圆。然后调整圆心位置、圆半径大小,使尽可能多的点落在圆周上(或更接近圆周)。这是很考验你的设计能力的。

如果不考虑圆形是否完整,试一试命令“样条曲线(SPLINE)”,看看结果是否是你想要的。

设该圆心坐标为r(x,y,z),半径为R,则拟合最优函数及其导数满足:

所要做的就是求解偏导数为0的4个非线性方程,可以用matlab的fsolve求解

用最小二乘法可以得出,圆心横坐标就是图上点的横坐标的平均值,圆心纵坐标就是图上的点的

坐标的平均值;(只找了左边的圆 右边的一样,坐标都是像素坐标)

clc,clear;

data=imread('roundPNG');

data1=double(data(:,1:250));

data2=double(data(:,251:506));

% figure(1)

% imshow(data1);

% figure(2)

% imshow(data2);

%对于第一个圆

% figure(3)

% mesh(data1)

[x,y]=find(data1>20);%第二个圆只需把data1换成data2

plot(x,y,'');

x0=mean(x);%圆心横坐标

y0=mean(y);%圆心纵坐标

hold on

plot(x0,y0,'');

r=mean(sqrt((x-x0)^2+(y-y0)^2))

hold on

xx=x0-r:x0+r;

y1=sqrt(r^2-(xx-x0)^2)+y0;

y2=-sqrt(r^2-(xx-x0)^2)+y0;

plot(xx,y1,'r')

plot(xx,y2,'r')

给你一个例子,供你参考。

clc,clear

A=[384 310;386 306;389 300;392 294;396 287;400 281;404 277;409

272;413 269;417 267;420 265;424 263;430 260;434 257;439 256];

X=A;

n=length(X(:,1));

y=ones(n,1);

b=[rand(1)1000 rand(1) rand(1)]

fun=inline('X(:,1)^2+X(:,2)^2+a(1)X(:,1)+a(2)X(:,2)+a(3)','a','X');

[a,r,J] = nlinfit(X,y,fun,b)

vpa(a,10)

%圆心

X1 =-a(1)/2,Y1 =-a(2)/2

%半径

R =sqrt(a(1)^2+a(2)^2-4a(3))/2

这例题是我前不久完成的。

以上就是关于polywords上测出了四个圆,怎么用四个圆心拟合成一个平面全部的内容,包括:polywords上测出了四个圆,怎么用四个圆心拟合成一个平面、各位,有没有拟合圆的较好的方法和代码,先、如何拟合计算出图像中光斑的圆心位置 matlab等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9843827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存