最小二乘椭圆拟合算法实现 opencv
本人实现了最小二乘法拟合椭圆算法,跟你样本数据,计算出椭圆的五个参数,中心坐标,长半轴长,短半轴长和偏角,效果很好^_^
椭圆的目标函数:
F(A,B,C,D,E) = XiGeMa(xi^2 + A*xiyi+B*yi^2+C*xi+D*yi+E)^2
分别对A,B,C,D,E 求一阶偏导 并令其等于0
得到线性方程组:
|A1 B1 C1 D1 E1 | |A| = |resul1|
|A2 B2 C2 D2 E2 | |B| = |resul2|
|A3 B3 C3 D3 E3 | |C| = |resul3|
|A4 B4 C4 D4 E4 | |D| = |resul4|
|A5 B5 C5 D5 E5 | |E| = |resul5|
求得A,B,C,D,E.
椭圆的五个参数:
center.x = (2*B*C - A*D) /(A*A-4*B);
center.y = (2*D-A*D)/(A*A-4*B);
fenzi = 2*(A*C*D-B*C*C-D*D+4*E*B-A*A*E);
fenmu =(A*A-4*B) * (B- sqrt(A*A+ (1-B) * (1-B) ) +1);
femmu2 =(A*A-4*B) * (B+ sqrt(A*A+ (1-B) * (1-B) ) +1);
long =sqrt(fabs(fenzi/fenmu));
short =sqrt(fabs(fenzi/femmu2));
theta = atan(sqrt((center.x *center.x -center.y*center.y*B)/(center.x *center.x *B-center.y*center.y))+0.0001)*180/cv_pi;;
vector<double> getEllipsepar(vector<CvPoint> vec_point)
{
vector<double> vec_result;
double x3y1 = 0,x1y3= 0,x2y2= 0,yyy4= 0, xxx3= 0,xxx2= 0,x2y1= 0,yyy3= 0,x1y2= 0 ,yyy2= 0,x1y1= 0,xxx1= 0,yyy1= 0;
int N = vec_point.size();
for (int m_i = 0;m_i < N ;++m_i )
{
double xi = vec_point[m_i].x ;
double yi = vec_point[m_i].y;
x3y1 += xi*xi*xi*yi ;
x1y3 += xi*yi*yi*yi;
x2y2 += xi*xi*yi*yi; ;
yyy4 +=yi*yi*yi*yi;
xxx3 += xi*xi*xi ;
xxx2 += xi*xi ;
x2y1 += xi*xi*yi;
x1y2 += xi*yi*yi;
yyy2 += yi*yi;
x1y1 += xi*yi;
xxx1 += xi;
yyy1 += yi;
yyy3 += yi*yi*yi;
}
long double resul1 = -(x3y1);
long double resul2 = -(x2y2);
long double resul3 = -(xxx3);
long double resul4 = -(x2y1);
long double resul5 = -(xxx2);
long double B1 = x1y3, C1 = x2y1, D1 = x1y2, E1 = x1y1, A1 = x2y2;
long double B2 = yyy4, C2 = x1y2, D2 = yyy3, E2 = yyy2, A2 = x1y3;
long double B3 = x1y2, C3 = xxx2, D3 = x1y1, E3 = xxx1, A3 = x2y1;
long double B4 = yyy3, C4 = x1y1, D4 = yyy2, E4 = yyy1, A4 = x1y2;
long double B5 = yyy2, C5 = xxx1, D5 = yyy1, E5 = N, A5 = x1y1;
//
CvMat* Ma = cvCreateMat(5,5,CV_64FC1);
CvMat* Md = cvCreateMat(5,1,CV_64FC1);
CvMat* Mb = cvCreateMat(5,1,CV_64FC1);
//
cvmSet(Mb,0,0,resul1);
cvmSet(Mb,1,0,resul2);
cvmSet(Mb,2,0,resul3);
cvmSet(Mb,3,0,resul4);
cvmSet(Mb,4,0,resul5);
cvmSet(Ma,0,0,A1);
cvmSet(Ma,0,1,B1);
cvmSet(Ma,0,2,C1);
cvmSet(Ma,0,3,D1);
cvmSet(Ma,0,4,E1);
cvmSet(Ma,1,0,A2);
cvmSet(Ma,1,1,B2);
cvmSet(Ma,1,2,C2);
cvmSet(Ma,1,3,D2);
cvmSet(Ma,1,4,E2);
cvmSet(Ma,2,0,A3);
cvmSet(Ma,2,1,B3);
cvmSet(Ma,2,2,C3);
cvmSet(Ma,2,3,D3);
cvmSet(Ma,2,4,E3);
cvmSet(Ma,3,0,A4);
cvmSet(Ma,3,1,B4);
cvmSet(Ma,3,2,C4);
cvmSet(Ma,3,3,D4);
cvmSet(Ma,3,4,E4);
cvmSet(Ma,4,0,A5);
cvmSet(Ma,4,1,B5);
cvmSet(Ma,4,2,C5);
本人实现了最小二乘法拟合椭圆算法,跟你样本数据,计算出椭圆的五个参数,中心坐标,长半轴长,短半轴长和偏角,效果很好^_^
cvmSet(Ma,4,3,D5);
cvmSet(Ma,4,4,E5);
cvSolve(Ma, Mb, Md);
long double A = cvmGet(Md,0,0);
long double B = cvmGet(Md,1,0);
long double C = cvmGet(Md,2,0);
long double D = cvmGet(Md,3,0);
long double E = cvmGet(Md,4,0);
double XC = (2*B*C - A*D) /(A*A-4*B);
double YC =(2*D-A*D)/(A*A-4*B);
long double fenzi = 2*(A*C*D-B*C*C-D*D+4*E*B-A*A*E);
long double fenmu =(A*A-4*B) * (B- sqrt(A*A+ (1-B) * (1-B) ) +1);
long double femmu2 =(A*A-4*B) * (B+ sqrt(A*A+ (1-B) * (1-B) ) +1);
double XA =sqrt(fabs(fenzi/fenmu));
double XB =sqrt(fabs(fenzi/femmu2));
double Xtheta =atan(sqrt((XA*XA-XB*XB*B)/(XA*XA*B-XB*XB))+0.0001)*180/3.1415926;
vec_result.push_
back(XC);
vec_result.push_back(YC);
vec_result.push_back(XA);
vec_result.push_back(XB);
vec_result.push_back(Xtheta);
return vec_result;
}
相关推荐:
- [法律文档]苏教版七年级语文下册第五单元教学设计
- [法律文档]向市委巡视组进点汇报材料
- [法律文档]绵阳市2018年高三物理上学期第二次月考
- [法律文档]浅析如何解决当代中国“新三座大山”的
- [法律文档]延安北过境线大桥工程防洪评价报告 -
- [法律文档]激活生成元素让数学课堂充满生机
- [法律文档]2014年春学期九年级5月教学质量检测语
- [法律文档]放射科标准及各项计1
- [法律文档]2012年广州化学中考试题和答案(原版)
- [法律文档]地球物理勘查规范
- [法律文档]《12系列建筑标准设计图集》目录
- [法律文档]2018年宁波市专技人员继续教育公需课-
- [法律文档]工会委员会工作职责
- [法律文档]2014新版外研社九年级英语上册课文(完
- [法律文档]《阅微草堂笔记》部分篇目赏析
- [法律文档]尔雅军事理论2018课后答案(南开版)
- [法律文档]储竣-13827 黑娃山沟大开挖穿越说明书
- [法律文档]《产品设计》教学大纲及课程简介
- [法律文档]电动吊篮专项施工方案 - 图文
- [法律文档]实木地板和复合地板的比较
- 探析如何提高电力系统中PLC的可靠性
- 用Excel函数快速实现体能测试成绩统计
- 教师招聘考试重点分析:班主任工作常识
- 高三历史选修一《历史上重大改革回眸》
- 2013年中山市部分职位(工种)人力资源视
- 2015年中国水溶性蛋白市场年度调研报告
- 原地踏步走与立定教学设计
- 何家弘法律英语课件_第十二课
- 海信冰箱经销商大会——齐俊强副总经理
- 犯罪心理学讲座
- 初中英语作文病句和错句修改范例
- 虚拟化群集部署计划及操作流程
- 焊接板式塔顶冷凝器设计
- 浅析语文教学中
- 结构力学——6位移法
- 天正建筑CAD制图技巧
- 中华人民共和国财政部令第57号——注册
- 赢在企业文化展厅设计的起跑线上
- 2013版物理一轮精品复习学案:实验6
- 直隶总督署简介




