当前位置: 首页 > news >正文

苏州网站建设设计制作公司怎么样百度网盘登录入口网页版

苏州网站建设设计制作公司怎么样,百度网盘登录入口网页版,wordpress 文章 标题,网站设计论文答辩操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆拟合一组2D点。它返回一个内切于该椭圆的旋转矩形。使用了由[260]提出的近…
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

围绕一组2D点拟合一个椭圆。

该函数计算出一个椭圆,该椭圆拟合一组2D点。它返回一个内切于该椭圆的旋转矩形。使用了由[260]提出的近似均方差(AMS)方法。

对于椭圆,这个基集是 χ = ( x 2 , x y , y 2 , x , y , 1 ) \chi= \left(x^2, x y, y^2, x, y, 1\right) χ=(x2,xy,y2,x,y,1),这是一个包含六个自由系数的集合 A T = { A xx , A xy , A yy , A x , A y , A 0 } A^T=\left\{A_{\text{xx}},A_{\text{xy}},A_{\text{yy}},A_x,A_y,A_0\right\} AT={Axx,Axy,Ayy,Ax,Ay,A0}然而,要指定一个椭圆,只需要五个数字;主轴和次轴的长度 ( a , b ) (a,b) (a,b),位置 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)以及方向 θ。这是因为基集包含了直线、二次函数、抛物线和双曲线函数以及椭圆函数作为可能的拟合。如果发现拟合是一个抛物线或双曲线函数,则使用标准的 fitEllipse 方法。AMS 方法通过施加条件 A T ( D x T D x + D y T D y ) A = 1 A^T ( D_x^T D_x + D_y^T D_y) A = 1 AT(DxTDx+DyTDy)A=1 来限制拟合为抛物线、双曲线和椭圆曲线,其中矩阵 D x Dx Dx D y Dy DyDy 是设计矩阵D关于x 和y的偏导数。矩阵是通过逐行应用以下规则来形成的,针对点集中的每一个点: D ( i , : ) = { x i 2 , x i y i , y i 2 , x i , y i , 1 } D x ( i , : ) = { 2 x i , y i , 0 , 1 , 0 , 0 } D y ( i , : ) = { 0 , x i , 2 y i , 0 , 1 , 0 } \begin{align*} D(i,:)&=\left\{x_i^2, x_i y_i, y_i^2, x_i, y_i, 1\right\} & D_x(i,:)&=\left\{2 x_i,y_i,0,1,0,0\right\} & D_y(i,:)&=\left\{0,x_i,2 y_i,0,1,0\right\} \end{align*} D(i,:)={xi2,xiyi,yi2,xi,yi,1}Dx(i,:)={2xi,yi,0,1,0,0}Dy(i,:)={0,xi,2yi,0,1,0}
AMS 方法最小化成本函数:
ϵ 2 = A T D T D A A T ( D x T D x + D y T D y ) A T \begin{equation*} \epsilon ^2=\frac{ A^T D^T D A }{ A^T (D_x^T D_x + D_y^T D_y) A^T } \end{equation*} ϵ2=AT(DxTDx+DyTDy)ATATDTDA
通过求解广义特征值问题找到最小成本。
D T D A = λ ( D x T D x + D y T D y ) A \begin{equation*} D^T D A = \lambda \left( D_x^T D_x + D_y^T D_y\right) A \end{equation*} DTDA=λ(DxTDx+DyTDy)A

fitEllipseAMS 是 OpenCV 中用于拟合椭圆的一个函数,它使用了“代数方法”(Algebraic Method)来进行椭圆拟合。相比于 fitEllipse 函数使用的最小二乘法,fitEllipseAMS 更侧重于代数意义上的拟合,适用于某些特定的应用场景。

函数原型


RotatedRect cv::fitEllipseAMS
(InputArray 	points
)	

参数

  • points 输入的2D点集,存储在 std::vector<> 或 Mat 中。

代码示例

#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;int main()
{// 创建一个空白图像Mat img( 400, 400, CV_8UC3, Scalar( 255, 255, 255 ) );// 创建一组2D点vector< Point2f > points;points.push_back( Point2f( 100, 100 ) );points.push_back( Point2f( 200, 100 ) );points.push_back( Point2f( 200, 200 ) );points.push_back( Point2f( 100, 200 ) );points.push_back( Point2f( 150, 150 ) );points.push_back( Point2f( 150, 250 ) );points.push_back( Point2f( 250, 150 ) );points.push_back( Point2f( 250, 250 ) );// 拟合椭圆RotatedRect ellipse = fitEllipseAMS( points );// 获取椭圆的四个顶点vector< Point2f > boxPoints;boxPoints.resize( 4 );  // 确保boxPoints至少有4个元素ellipse.points( boxPoints.data() );// 将 Point2f 转换为 Pointvector< Point > intBoxPoints;for ( const auto& pt : boxPoints ){intBoxPoints.push_back( Point( static_cast< int >( pt.x ), static_cast< int >( pt.y ) ) );}// 在原图上绘制椭圆polylines( img, intBoxPoints, true, Scalar( 0, 0, 255 ), 2, LINE_8 );// 绘制点集for ( const auto& pt : points ){circle( img, pt, 5, Scalar( 0, 255, 0 ), -1 );}// 显示结果imshow( "Ellipse Fitting (AMS)", img );waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

http://www.hkea.cn/news/276140/

相关文章:

  • 做生存分析的网站有哪些国外新闻最新消息
  • 济南网站优化收费百度互联网营销
  • bootstrap响应网站模板下载发帖推广百度首页
  • 动态网站上的查询怎么做新媒体运营培训学校
  • 网站开发人员必备技能百度优化推广
  • 花都 网站建设百度推广怎么添加关键词
  • 开发公司成本部职责岗位职责和流程苏州网站建设优化
  • 湛江网站制作系统seo排名需要多少钱
  • 城乡现代社区建设seo关键词推广案例
  • 旅游网站开发外文文献关键洞察力
  • 大学生asp网站开发的实训周长沙百度快速优化
  • 黑龙江省建设网站百度投流运营
  • 网站关键词太多好不好兰州seo整站优化服务商
  • 义乌网站设计网店推广策划方案
  • 无锡网站优化工作室网站关键词排名优化推广软件
  • 长沙做网站的公司亚马逊seo什么意思
  • 仪征建设银行官方网站怎么优化一个网站
  • 那个网站可以查询美做空基金宁波网站推广平台效果好
  • 杨凌企业网站建设天津seo优化
  • 建设网站的工具免费b站在线观看人数在哪儿
  • 毕业设计餐饮网站建设国内前10电商代运营公司
  • 日本b2b网站市场调研的步骤
  • 强企网做网站网店推广有哪些
  • 博物馆网站建设策划书公司如何在百度宣传
  • 做cpa广告网站教程百度sem推广具体做什么
  • 免费网站建站WWW222国际军事最新消息今天
  • 做网站软件miscrosoft云服务器
  • 如何做盗版小说网站最经典的营销案例
  • 设计类的网站和简介关键词优化推广排名多少钱
  • 代理记账网站怎么做北京seo方法