最小二乘法椭圆拟合

最小二乘法椭圆拟合

设平面任意位置椭圆方程为:
x^2+Axy+By^2+Cx+Dy+E=0
设P_i (x_i,y_i )(i=1,2,…,N)为椭圆轮廓上的N(N≥5) 个测量点,依据最小二乘原理,所拟合的目标函数为:
这里写图片描述
欲使F为最小,需使
这里写图片描述
由此可以得方程:
这里写图片描述
解方程可以得到A,B,C,D,E的值。
根据椭圆的几何知识,可以计算出椭圆的五个参数:位置参数(θ,x_0,y_0 )以及形状参数(a,b)。
这里写图片描述


matlab程序

function [J,x0, y0, L_axis, S_axis, phi] = ellipse_fit_x(x,y)

[N,N1] = size(x);
x = x(:);
y = y(:);
% % x^2+a*x*y+b*y^2+c*x+d*y+e = 0;
M = [sum(x.^2.*y.^2) sum(x.*y.^3) sum(x.^2.*y) sum(x.*y.^2) sum(x.*y)
     sum(x.*y.^3) sum(y.^4) sum(x.*y.^2) sum(y.^3) sum(y.^2)
     sum(x.^2.*y) sum(x.*y.^2) sum(x.^2) sum(x.*y) sum(x)
     sum(x.*y.^2) sum(y.^3) sum(x.*y) sum(y.^2) sum(y)
     sum(x.*y) sum(y.^2) sum(x) sum(y) N] ;
 B = -[sum(x.^3.*y) sum(x.^2.*y.^2) sum(x.^3) sum(x.^2.*y) sum(x.^2)]';

g = M\B;
[a,b,c,d,e] = deal(g(1),g(2),g(3),g(4),g(5));
J = [a,b,c,d,e] ;
delta = a^2-4*b; 
x0 = (2*b*c-a*d)/delta;
y0 = (2*d-a*c)/delta;
nom = 2 * (a*c*d - b*c^2 - d^2 + 4*b*e - a^2*e);
s = sqrt(a^2+(1-b)^2);

% s1 = nom/(delta*(b-s+1));
% s2 = nom/(delta*(b+s+1));

% if s1<0 ||s2<0
%    return
% end
a_prime = sqrt(nom/(delta*(b-s+1))); 
b_prime = sqrt(nom/(delta*(b+s+1))); 
% nom = b*c^2-a*c*d +d^2 - 4*b*e+ a^2*e;
% s = sqrt(a^2+(1-b)^2);
% a_prime = sqrt((nom/delta)*(2*(b+s+1)/delta)); 
% b_prime = sqrt((nom/delta)*(2*(b-s+1)/delta)); 

L_axis = max(a_prime, b_prime); 
S_axis = min(a_prime, b_prime); 
% phi = atan(sqrt((a_prime^2-b_prime^2*b)/(a_prime^2*b-b_prime^2)));

phi = 0.5*atan(a/(1-b));
%  if (a_prime<b_prime) 
%       phi = pi/2 - phi;

% end

  • 11
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
FPGA最小二乘法椭圆拟合是一种在可编程逻辑器件上实现的椭圆拟合算法。最小二乘法是一种数学优化方法,旨在通过最小化误差平方和来拟合数据点到最合适的椭圆模型。 在FPGA中实现最小二乘法椭圆拟合可以通过以下步骤进行: 1. 数据采集:首先,需要从传感器或其他数据源收集到一组数据点,这些数据点包含了待拟合椭圆形状。 2. 数据预处理:在进行椭圆拟合之前,需要对收集到的数据进行预处理。这包括去除噪声、检测离群点、数据归一化等处理步骤。 3. 椭圆参数求解:在FPGA中,可以使用最小二乘法算法,通过迭代方式计算出最合适的椭圆参数。这些参数包括椭圆的位置、长轴和短轴长度、椭圆的旋转角度等。 4. 拟合结果输出:一旦椭圆参数被计算出来,可以将这些参数输出到外部设备或者用于其他后续处理。 使用FPGA实现最小二乘法椭圆拟合可以带来一些优势。FPGA具有并行计算的能力,可以加速数据处理过程。此外,FPGA的低功耗和可重构性使得其适用于嵌入式系统和实时应用,例如在机器视觉领域中的应用。 然而,FPGA的设计过程需要具备一定的硬件描述语言和数字电路设计知识,以及对拟合算法的理解。此外,FPGA的资源有限,需要综合考虑资源利用和计算性能之间的平衡。 总之,FPGA最小二乘法椭圆拟合是一种在可编程逻辑器件上实现的优化算法,通过并行计算加速了数据处理过程,并且在嵌入式系统和实时应用中具有广泛的应用前景。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值