最小二乘法拟合与贝塞尔曲线到底有什么关系啊

wudir 2010-01-13 01:14:57
三次方贝塞尔曲线是这样定义的:
P0、P1、P2、P3 四个点在平面或在三维空间中定义了三次方贝塞尔曲线。曲线起始于 P0 走向 P1,并从 P2 的方向来到 P3。一般不会经过 P1 或 P2;这两个点只是在那里提供方向资讯。 P0 和 P1 之间的间距,决定了曲线在转而趋进 P3 之前,走向 P2 方向的“长度有多长”。

三次方贝塞尔曲线的参数形式为:

B(t)=P0*(1-t)^3 + 3*P1*t*(1-t)^2 + 3*P2*t^2*(1-t) +P3*t^3 , 1>=t>=0

现在知道平面上一系列的点,比如说十个点吧
X[0..9]
Y[0..9]

现在想求一段三次方贝塞尔曲线,曲线最迫近这十个点!

就是求出曲线中的P0,P1,P2,P3这四个点的X和Y坐标(8个参数)

我已经看了一天的曲线拟合相关内容了,但是无法理解拟合曲线和贝塞尔曲线之间的关系是什么?

求救呀~~~
...全文
2055 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudir 2012-07-19
  • 打赏
  • 举报
回复
到最后还是没有解决这个问题~看来高手真的很少啊!
无水先生 2011-04-30
  • 打赏
  • 举报
回复
知道凸平均的概念吗?最小二乘与besel是两种拟合无关系
  • 打赏
  • 举报
回复
看了3个地方的内容(算上你这个),再加上同事的讲解,
终于大概明白了,


贝赛尔曲线 是如何用最小二乘法拟合出来的了。
McFlycobe 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wudir 的回复:]
f(x)=2-2x^3+3ax-3ax^3+3bx^2-3bx^3+5x^3 拟合

已知数据点
x1=1,y1=25
x2=4,y2=40
z3=7,y3=55
怎样求函数拟合f(x)=2-2x^3+3ax-3ax^3+3bx^2-3bx^3+5x^3
中的a,b


请指教!
[/Quote]

直接把数据点代入公式,求方程组就行了
wudir 2010-01-19
  • 打赏
  • 举报
回复
f(x)=2-2x^3+3ax-3ax^3+3bx^2-3bx^3+5x^3 拟合

已知数据点
x1=1,y1=25
x2=4,y2=40
z3=7,y3=55
怎样求函数拟合f(x)=2-2x^3+3ax-3ax^3+3bx^2-3bx^3+5x^3
中的a,b


请指教!
梧桐168 2010-01-18
  • 打赏
  • 举报
回复
一般用的是分段贝塞尔曲线,总的点数是3*n + 1, 每四个点控制一段三次贝塞尔曲线。
word里就是如此,
arong1234 2010-01-16
  • 打赏
  • 举报
回复
关于贝塞尔更多的知识:http://baike.baidu.com/view/60154.htm
arong1234 2010-01-16
  • 打赏
  • 举报
回复
我此前没研究过贝塞尔,所以说的可能不准确

根据你顶帖中的定义(见引用部分),这是一种不准确绘制曲线的方法,是一种拟合方法。

首先说说什么是曲线拟合。曲线拟合是指只知道曲线上(往往有误差,所以曲线上真正情况是曲线附近)某些点(称为采样点),或者和曲线相关的某些特征,来绘制曲线的方法。因为这种情况下你根本不知道曲线的全部信息,因此你绘制的曲线不可能和真正的曲线一摸一样。在工程应用领域和数学领域,我们往往不要求曲线完全准确,只要我们绘制的曲线和真实的曲线直接满足一定的关系即可。

最小二乘拟合,它的原理是:曲线的座标满足一个方程y=ag(x)+b,其中g是已知函数,a,b是待定参数。对于一个已知的采样点x1,y1,我们如果已经知道a,就可以得出e=y1 -ag(x1)-b。如果采样很准确(也就是x1,y1在曲线上),那么e应该等于0。但是由于采样总是有误差的,所以e一般都不等于0。最小二乘的目标就是找到一个合适的a,b,使得所有的这些e的平方和最小。这样的曲线可以认为是物理上最接近真实曲线的曲线。

对于一般的物理系统,这种最小二乘方法是比较准确的,但是计算量可能比较大,因此业界又有了一些基于“基函数”的拟合方法(希望楼主懂得基函数)。B样条就是其中一种。楼主可以看看这个文章理解B样条:http://blog.vckbase.com/arong/archive/2004/05/27/286.html

基样条的特点是:拟合的曲线是经过各个采样点的。我的理解是,这种基样条计算量依然很大,而“经过各个点”也并不是有些系统必须满足的条件。从楼主给出的贝塞尔拟合的定义,它是一种计算量更小的基函数拟合方法。

看看下面的函数:

B(t)=P0*(1-t)^3 + 3*P1*t*(1-t)^2 + 3*P2*t^2*(1-t) +P3*t^3 , 1>=t>=0

我们知道B(0) = P0, B(1) = P3,因此它保证了拟合后的曲线必然经过P0点和P3点
当t从0变化到3的过程中,你可以想象是有一支笔从点P0按照上述方程平滑的移动到P3,形成一个连续的曲线,这个曲线就是真实曲线的拟合。

如下文所述,“(拟合曲线)一般不会经过 P1 或 P2;这两个点只是在那里提供方向资讯”,那么P1和P2到底提供什么样子的方向信息呢?

我们假定没有P1,P2, B(t)是经过P0和P3的三次函数,那么一个最简单的拟合方程就是(不知道是否唯一,楼主可以自己找资料)

B'(t) = ((1-t)* sqrt3(P0) + t sqrt3(P3)) ^3 --sqrt3 表示三次方根

展开后就是B'(t) = P0*(1-t)^3 + 3*sqrt3(P0*p0) *sqrt3(p1)*t*(1-t)^2 + 3*sqrt3(P3*p3) *sqrt3(p0)*t^2*(1-t) +P3*t^3

从这个方程看,在曲线靠近P0的方向,B(t)更多首P0控制,靠近P3部分则由它控制。

和B(t)=P0*(1-t)^3 + 3*P1*t*(1-t)^2 + 3*P2*t^2*(1-t) +P3*t^3

相比,可以看出P1和P2控制了曲线中间的点的值,从而控制了曲线的走向。至于怎么控制和控制后曲线和原始曲线直接的关系,楼主可能要找贝塞尔曲线的理论看看了。

总结:最小二乘和贝塞尔没有关系,他们是两种不同的曲线拟合方法

[Quote=引用楼主 wudir 的回复:]
三次方贝塞尔曲线是这样定义的:
P0、P1、P2、P3 四个点在平面或在三维空间中定义了三次方贝塞尔曲线。曲线起始于 P0 走向 P1,并从 P2 的方向来到 P3。一般不会经过 P1 或 P2;这两个点只是在那里提供方向资讯。 P0 和 P1 之间的间距,决定了曲线在转而趋进 P3 之前,走向 P2 方向的“长度有多长”。


[/Quote]
wudir 2010-01-16
  • 打赏
  • 举报
回复
谢谢arong1234(阿荣) 你写得这样详细,问题的结论也得到了,但最终问题还是一点进展也没有。请允许我用几天时间考虑一下能不能找到问题的解决办法。
wudir 2010-01-15
  • 打赏
  • 举报
回复
你说将这两条方程
B.X(t)=P0.X*(1-t)^3 + 3*P1.X*t*(1-t)^2 + 3*P2.X*t^2*(1-t) +P3.X*t^3
B.Y(t)=P0.Y*(1-t)^3 + 3*P1.Y*t*(1-t)^2 + 3*P2.Y*t^2*(1-t) +P3.Y*t^3
合起来转为B.X与B.Y的关系,类似于多项式?行么???

唉呀,好像不行因为t的值是不能确定的。。而且不能消去。
wudir 2010-01-15
  • 打赏
  • 举报
回复
高手!高手在哪里?
aaaa3105563 2010-01-14
  • 打赏
  • 举报
回复
up
wudir 2010-01-14
  • 打赏
  • 举报
回复
昨天看了那个三次B样条拟合,它是用插值方法通过所有的数据点,每两个数据点之间区间生成一条样条。不符合这个方法!!
lsvine 2010-01-13
  • 打赏
  • 举报
回复
这个问题真是会把头搞大 谁让咱们没好好学数学呢
vclongking 2010-01-13
  • 打赏
  • 举报
回复
路过 学习
degree_37 2010-01-13
  • 打赏
  • 举报
回复
最小二乘法拟合是一种全局拟合 它拟合出的曲线是一种插值拟合,也就是让所有数据点距离拟合曲线的平方和相加最小

贝塞尔曲线是把每个数据点都当成是控制点,它可以根据曲线阶数有不同的形式,当运用一些数据点做为控制点拟合出一段一段的曲线,后进行拼接时,它可以是局部拟合,如果所有数据点都做为控制点一起拟合出高次的贝塞尔曲线,它也就是全局拟合

要根据不同的需求使用不同的曲线
wudir 2010-01-13
  • 打赏
  • 举报
回复
问题未解决!苦心找两个图再来问清楚一点!!!

请看图1.

http://i3.6.cn/cvbnm/ba/e3/86/0aaf82afd7c907c402b38e8dae217681.jpg

图中8个圆的圆心为输入数据点。
这是UG中的一个功能,叫做拟合样条,可以设定用次数为三阶次段数为一段来拟合通过数据点。那么便

能生成一条三次贝塞尔曲线,使曲线最接近这些数据点。


请看图2.

http://i3.6.cn/cvbnm/a6/19/58/2663fe6825f12d94c348f5b774ed01c9.jpg

因为图1中看起来的效果像是生成的曲线通过所有的点一样,为了让大家看清楚,图2中我们把这些点的

位置作了变动。再次生成曲线。

我们可以看出,曲线的起点(控制点P0)为第一个数据点,即P0.x=X[0],P0.y=Y[0];曲线的终点(控制点P3)

为最后一个数据点,即P3.x=X[n-1],P3.y=Y[n-1]。但曲线并不一定通过其它的数据点。只是生成的曲线是

最优的解,(就是所说的“所有数据点距离拟合曲线的平方和相加最小”)。所以我才找到拟合这个说法



我看了很多资料,都似乎是关于多项式函数拟合,即:
y=a*X^3+b*X^2+c*X+d

实在看不出这式子和三次贝塞尔曲线那条式子有任何相似的地方。因为这个式子是X与Y的关系。而贝塞尔

式子中是指t在0至1之间时XY点的数值变化。。。。

而且据我理解多项式拟合曲线并不一定经过第一个数据点和最后一个数据点。而UG里的拟合样条就经过

第一个数据点和最后一个数据点,这个也是不同的地方。

读的书少,说得太多,总之我想了解UG如何实现的这个用一段贝塞尔曲线迫近数据点的???最终是求

出剩下两个控制点P1,P2的值(P1.x,P1,y,P2.x,P2.y)

希望大家来讨论一下!!!
chenyuntian 2010-01-13
  • 打赏
  • 举报
回复
曲线拟合
一条晚起的虫 2010-01-13
  • 打赏
  • 举报
回复
// 求出的拟合曲线要最接近贝塞尔曲线。
// 贝塞尔曲线是目的。

19,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧