平塘sem方程-「椭圆方程」标准椭圆方程推导

网站建设推广 2020-10-14 阅读:410

椭圆方程初衷

用opencv拟合椭圆后,想评估一下拟合的质量,即被拟合点与拟合结果的接近程度。我首先想到的办法是将被拟合点带入椭圆方程f(x,y)=Ax2+Bxy+Cy2+Dx+Ey+F"role="presentation">f(x,y)=Ax2+Bxy+Cy2+Dx+Ey+Ff(x,y)=Ax2+Bxy+Cy2+Dx+Ey+F,如果一个点正好在椭圆上,那么f(x,y)=0"role="presentation">f(x,y)=0f(x,y)=0,而一个点偏离椭圆越多,则其计算值越大,因此可以用来评估被被拟合点的偏差。opencv中fitEllipse()函数计算得到的是椭圆的中心坐标、长短轴的长度和长轴与+x"role="presentation">+x+x轴的夹角(需要注意的是,拟合结果的height才是长轴),需要根据这些信息推导椭圆的标准方程。


推导

中心在原点且长轴在x轴上的椭圆方程为:

(1)x2a2+y2b2=1"role="presentation">x2a2+y2b2=1(1)(1)x2a2+y2b2=1

其中,a"role="presentation">aab"role="presentation">bb分别是长半轴和短半轴。若椭圆长轴与正x轴夹角为θ"role="presentation">θθ(逆时针),且中心坐标为(x0,y0)"role="presentation">(x0,y0)(x0,y0)。其任意一点平移(−x0,−y0)"role="presentation">(−x0,−y0)(x0,y0)再旋转−θ"role="presentation">−θθ即满足标准椭圆方程。

首先考虑点(x,y)"role="presentation">(x,y)(x,y)绕原点顺时针旋转角度θ"role="presentation">θθ(x′,y′)"role="presentation">(x′,y′)(x,y)。

用参数方程表示点(x,y)"role="presentation">(x,y)(x,y)和点(x′,y′)"role="presentation">(x′,y′)(x,y):

(2){x=tcos⁡ϕy=tsin⁡ϕ"role="presentation">{x=tcosϕy=tsinϕ(2)(2){x=tcosϕy=tsinϕ

(3){x′=tcos⁡(ϕ−θ)=t(cos⁡ϕcos⁡θ+sin⁡ϕsin⁡θ)y′=tsin⁡(ϕ−θ)=t(sin⁡ϕcos⁡θ−cos⁡ϕsin⁡θ)"role="presentation">{x′=tcos(ϕ−θ)=t(cosϕcosθ+sinϕsinθ)y′=tsin(ϕ−θ)=t(sinϕcosθ−cosϕsinθ)(3)(3){x=tcos(ϕθ)=t(cosϕcosθ+sinϕsinθ)y=tsin(ϕθ)=t(sinϕcosθcosϕsinθ)

因此:

(4){x′=xcos⁡θ+ysin⁡θy′=−xsin⁡θ+ycos⁡θ"role="presentation">{x′=xcosθ+ysinθy′=−xsinθ+ycosθ(4)(4){x=xcosθ+ysinθy=xsinθ+ycosθ

继而可得一般椭圆方程为:

[(x−x0)cos⁡θ+(y−y0)sin⁡θ]2a2+[(x−x0)sin⁡θ−(y−y0)cos⁡θ]2b2=1"role="presentation">[(x−x0)cosθ+(y−y0)sinθ]2a2+[(x−x0)sinθ−(y−y0)cosθ]2b2=1[(xx0)cosθ+(yy0)sinθ]2a2+[(xx0)sinθ(yy0)cosθ]2b2=1

化简为Ax2+Bxy+Cy2+Dx+Ey+F=0"role="presentation">Ax2+Bxy+Cy2+Dx+Ey+F=0Ax2+Bxy+Cy2+Dx+Ey+F=0的形式可得:

(5)A=cos2⁡θa2+sin2⁡θb2B=2sin⁡θcos⁡θ(1a2−1b2)C=sin2⁡θa2+cos2⁡θb2D=−2[cos⁡θ(x0cos⁡θ+y0sin⁡θ)a2+sin⁡θ(x0sin⁡θ−y0cos⁡θ)b2]E=−2[sin⁡θ(x0cos⁡θ+y0sin⁡θ)a2−cos⁡θ(x0sin⁡θ−y0cos⁡θ)b2]F=(x0cos⁡θ+y0sin⁡θ)2a2+(x0sin⁡θ−y0cos⁡θ)2b2−1"role="presentation">A=B=C=D=E=F=cos2θa2+sin2θb22sinθcosθ(1a2−1b2)sin2θa2+cos2θb2−2[cosθ(x0cosθ+y0sinθ)a2+sinθ(x0sinθ−y0cosθ)b2]−2[sinθ(x0cosθ+y0sinθ)a2−cosθ(x0sinθ−y0cosθ)b2](x0cosθ+y0sinθ)2a2+(x0sinθ−y0cosθ)2b2−1(5)(5)A=cos2θa2+sin2θb2B=2sinθcosθ(1a21b2)C=sin2θa2+cos2θb2D=2[cosθ(x0cosθ+y0sinθ)a2+sinθ(x0sinθy0cosθ)b2]E=2[sinθ(x0cosθ+y0sinθ)a2cosθ(x0sinθy0cosθ)b2]F=(x0cosθ+y0sinθ)2a2+(x0sinθy0cosθ)2b21


代码

在C++中实现上述计算的函数为:

cv::MatnormEllipseParams(cv::RotatedRectbox){doubleparams[6];cv::Matrst(6,1,CV_64FC1,params);doubletheta=box.angle/180*CV_PI;doublest=sin(theta);doublect=cos(theta);doublea=box.size.width/2;doubleb=box.size.height/2;doublea2=a*a;doubleb2=b*b;doublex0=box.center.x;doubley0=box.center.y;doublexcys=x0*ct+y0*st;doublexsyc=x0*st-y0*ct;params[0]=ct*ct/a2+st*st/b2;params[1]=2*st*ct*(1/a2-1/b2);params[2]=st*st/a2+ct*ct/b2;params[3]=-2*(ct*xcys/a2+st*xsyc/b2);params[4]=-2*(st*xcys/a2-ct*xsyc/b2);params[5]=xcys*xcys/a2+xsyc*xsyc/b2-1;returnrst.clone();}

返回的Mat即A~F六个参数。


后记

测试后发现一个问题,计算椭圆方程的方法计算比较复杂,而且计算结果受椭圆大小的影响,难以直观地反应点的偏差值。后来我发现其实可以利用“椭圆上的点到其两个焦点的距离之和不变”这一性质来判断一个点偏离椭圆的程度。

  1. 椭圆的两个焦点在其长轴上,且与中心的距离为a2+b2"role="presentation">a2+b2−−−−−−√a2+b2;
  2. 椭圆上的点到两个焦点的距离之和为2a"role="presentation">2a2a.

计算椭圆焦点的函数为:

std::vector<cv::Point2f>calcFocal(cv::RotatedRect&ellipse){if(ellipse.size.width<ellipse.size.height){floattmp=ellipse.size.width;ellipse.size.width=ellipse.size.height;ellipse.size.height=tmp;ellipse.angle-=90;}floata=ellipse.size.width/2;floatb=ellipse.size.height/2;floatc=sqrt(a*a-b*b);floattheta=ellipse.angle/180*CV_PI;cv::Point2fdelta(c*cos(theta),c*sin(theta));std::vector<cv::Point2f>rst;rst.push_back(ellipse.center+delta);rst.push_back(ellipse.center-delta);returnrst;}

对于任意一个被拟合的点,只要计算其到两焦点的距离之和与2a"role="presentation">2a2a的差值,即可知道它与椭圆的像素偏差大小。

相关阅读

以贴吧和头条为例,为什么产品都有极速版和标准版

当用户需要从应用市场上下载一款软件的时候,往往可以发现不止一个版本。没有任何标志的为标准版本,而除此之外往往还有一个极速版本

标准的液压传动系统怎么构成?工作原理是什么?

液压传动中由液压泵、液压控制阀、液压执行元件(液压缸和液压马达等)和液压辅件(管道和蓄能器等)组成的液压系统。液

如何利用matlab求解方程

如何利用matlab求解方程1.    前言作为三大数学软件之一,matlab在数值计算方法的能力首屈一指。求解方程是工科学习和工程计算

Normalization(标准化)的原理和实现详解

本系列文章为原创,转载请注明出处。作者:TomBai邮箱:baidongdong@nudt.edu若您觉得本博文对您有帮助,请您为我点赞并关注我,以鼓

微分方程模型

在数学建模中,当要描述某事件的数量变化对时间或者其它东西的变化时,可以考虑采用微分方程模型。根据函数及其变化率之间的关系确定

sem营销”seo与sem网络营销模式

Semmarketing,我们拼命分析受众的需求,以便识别更多的潜在客户,拼命在促销材料上展示访问者感兴趣的内容,但很少有人关心谁真正吸引我们的产品购买,以及什么需求可以真正得到解决?

因为不同的交通路线给游客带来的需求不同,他们的关注和兴趣也会不同。如果通过东北炖菜的方式将许多需求引入转换渠道,转换概率将不可避免地降低。这将导致我们在实施过程中花费大量资金,但却吸引了根本无法改变的访问者。吸引有什么用?

尽管我们已经为更好的转型开辟了许多转型渠道,但游客的需求没有区别,游客也没有被过滤和分类。这将增加销售人员转型的难度,并使操作变得混乱和低效。

营销形式

反过来,我们通过各种营销技巧引入更多的受众。如果我们能以不同的方式对游客的需求进行分类,并合理地引导他们,那会是什么样子呢?

精细转换操作

如果实现方法被细分,将会清楚每种方法将经历什么样的方法,转换将会完成。然而,还有一个致命的问题,那就是性能。如今,大多数中小企业很难系统地为每种实施方式制定自己的战略,无论是专业能力还是人员和资金支持。

如果根据游客的意向强度来分析排水、承重和改造。事实上,整合营销惯例是非常容易的,并且处理和实现它们是可行的。

转换常规属性

从单一的实施形式,到整体网络营销,再到整合营销。网络营销的形式一直在进步和变化。你不能说哪个最好,但哪个更适合你。

有一种单一的游戏方式,也有一种综合的游戏方式。当我们通过单一途径进入瓶颈时,最好尝试集成。当集成陷入僵局时,最好使用一种方法作为突破口。

如何免费推广网络营销

无论我们做什么产品或项目,最重要的问题之一就是赢得客户。如何获得更多用户和更高质量的客户?特别是,中小企业如何在互联网上获得用户?

网络推广的含义是什么

网络推广的含义是利用互联网进行宣传和推广的行为或活动。企业在创建自己的网站时,必须树立良好的品牌形象。良好的企业形象不仅可以获得

企业网站是网络推广的主体

企业需要依靠网站进行网上推广,因为企业网站对网络推广有很大影响,这是基础。关于细节,我们可以了解边肖搜索引擎优化实验室!

网络营销要完成的五大任务

网络营销要完成的五项任务。网络品牌推广可以说是这个时代企业应该做的事情之一。虽然有些品牌在传统市场上很有名,但它们已经来到了网络城市

常见的网络推广渠道有哪些

常见的网络推广渠道有哪些?许多企业已经开始一个接一个地经营,所以他们一般都制定年度收入计划。在企业品牌推广和网络营销推广方面,有

相关标题:sem方程,sem方程,sem方程,广告sem,sem方程

相关关键词:,优化和推广,外链推广,搜索推广,整合推广,方案推广,sem" target="_self">竞价推广,策划推广,经验推广,网络推广,营销推广,优化和推广,外链推广,搜索推广,整合推广,方案推广,sem" target="_self">竞价推广,策划推广,经验推广,网络推广,营销推广

评论(0)