二值化后椭圆拟合matlab,科学网—椭圆拟合及坐标扶正 - 黄川的博文

拟合椭圆更一般就是对圆锥曲线拟合,椭圆、双曲线、抛物线区在方程中区别在于偏心率同“

1

”的比较。下文对于椭圆的拟合,可以更一般的推广到其它圆锥曲线的拟合中去。

在二维平面

xy

坐标系中有一离散的点集

fa10500be99d5a373a17d7add9300e39.gif

i

=0,1,2,3…n-

1

,这

n

个点分布在椭圆曲线方程

d8dbf01a000087f7101f40528827614e.gif

上,其中

df66fbb70f03fce8d56dde069ebba00f.gif

为点与拟合的期望方程eaa52d58031479782c7acc4057047588.gif

的偏差。

xy

坐标系中,椭圆方程的基本形式是:

6243241d6ea0af67ea221f782f6c8354.gif

证明如下:

圆锥曲线上的每一点

d41fe9ccf5df0cee5bf244976bc908f9.gif

与曲线外的某点

11148596dce111d83d68e449b143fbe5.gif

的距离,与其到某直线

l

:

b3ab824a53fd2eb592b9816432057e26.gif

的距离之比为常数

44bccefcb7dfd3d22e4d5e18ec363a0d.gif

,偏心率的大小也就决定了圆锥曲线的类型。

那么有:

2ce1f9c1180134ed5ede2d6abf2d5d98.gif

;

等价 :

79735008f4a197b2aa6496d0bc9242c2.gif

;

所以圆锥曲线满足形式:

02bcf9439c66b49f39726c6697729af3.gif

。证毕

曲线的拟合方程的原则是:

7492fee27e1cd1e02b4bcda8a0090de5.gif

6d41eb8cbd671e1a688767c3d09c3aeb.gif

e4d66a54331db64e35d73cd61c72b832.gif

f5fdf1e7eade1612341d051c69dbcfcc.gif

6eee4d77bb9b763391f5b1305c985f98.gif

3a9887eceb38451883f50b7db827e85b.gif

3349574e8f7088e3052589cb99cbb2c6.gif

之间线性无关,所以可以使问题转化为最小二乘线性拟合问题,如下:

f7565610721e3b50cb5af10c9fef83e4.gif =

ae940961da19b1c9dc3bebe40ac7b883.gif

;

61064c8ce846bcedc0a81d9a9ba46dce.gif =

695f6628fb68b91a85e31e95f9869436.gif

;

0ed45775865121990a3e7a865fd55cbd.gif =

508526bbb1f482a5bf5dc581f4dfd496.gif

;

有:

f18d05d2d077f2e6c1f852b942843ba9.gif

;

为了得到系数矩阵

X

,使得曲线方程

81e1c71799dce6824fa71adadfbbe032.gif

7954be7d3de70d3d31ec24518a13f83e.gif

,对期望求导,得到最小二乘的矩阵表达式:

02f169b84a904c66809a0c4f35f40e1f.gif

,点集的数量

n

大于

5

时,得到矩阵

a5de2d05250a14b48e733e999dbbf7ff.gif

2

范数为距离度量规则的最小解。当

97009802faeedbb26b2768ab1d3ab50d.gif

可逆时

69ab8135eb16f8c34c128e9b41a430d6.gif

MATLAB

代码:

function

[F]=ellipsefit(X,Y)

X=X';

Y=Y';

M=[X.^2,Y.^2,X.*Y,X,Y];

temp=M'*M;

temp=inv(temp);

n=size(X,1);

F=temp*M'*ones(n,1);

end

Position: (-3.8

,-1)

(-4.5

,3.27)

(0.7701,-0.084)

(-1.32,-2.19)

(-4,0.05)

(1.054,3.32)

(-0.9196,6.8342)

(-3.59,6.17);

Return F:

F =[ 0.3008 ,0.1097,0.0154,0.9925,-0.4985];

7bda096d2e19c03639b29909920373bc.gif

椭圆方程拟合结束后,对于图像处理来说,通常需要把其“扶正”。

可以通过

xy

坐标系旋转来扶正,椭圆方程:

cf7008a56ceda6b88000ba0a77e4f55c.gif

,改写成矩阵形式:

015e5b67aaf04761a085c9531ff60ccc.gif

其中:

98e9aabecbfc6d0228f8000e29215b0a.gif

对其扶正,也就是寻找旋转矩阵:

1fe7e4c47e0cc5262413178d398a600d.gif

使得:

9fda3c1d61dd4ccd758161a45c77f3f2.gif

以使椭圆可以表达为如下形式:

60069f3deb19fbb6298c16c4e9560a86.gif

求解如下:

寻找

9762563ed2c59b9cdf1e5c022da4e125.gif

使正交阵

P

满足:

1c62808fec6f63066d413c09347143cd.gif

而由对称关系得出:

43b5b08d66eb9b07076131e6fd67152f.gif

43f8d4ed75547032e6f547f4d323511d.gif

;

再而求得

35bfe58bb03b2fb2be6929a4c06c7e4b.gif

,这便是坐标轴扶正所需旋转的角度的正切值。

由上文中拟合的的数据可以得到

3d598adf48fe0df546d279811ad9b000.gif

153f7054132b9dec1984e37674ec24b1.gif

以上便是圆锥曲线拟合和扶正的全过程。

转载本文请联系原作者获取授权,同时请注明本文来自黄川科学网博客。

链接地址:http://blog.sciencenet.cn/blog-567861-436167.html

下一篇:整数分拆matlab代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值