精确绘制椭圆

article/2025/1/15 18:02:56

本文首发于微信公众号「3D视觉工坊」。

前言

圆特征在测量领域中应用广泛,比如:相机标定、位姿估计、目标跟踪等方面。圆经过透视投影,当成像平面与圆平面不平行时,圆经过透视投影为椭圆,圆心的透视投影点与椭圆的中心点不重合,这个偏差叫做椭圆构像偏差。鉴于此,研究如何绘制一个高精度的椭圆,对于整个测量系统的精度具有重要意义。

一 OpenCV中绘制椭圆的函数

根据OpenCV提供的ellipse()函数,我将其封装成如下的绘制椭圆函数:

//使用opencv中的ellipse函数在平面绘制椭圆,此处的参数为长短轴的半轴长。Mat DrawPreciseEllipse::DrawEllipse(Mat img, double EllipseCenter_x, double EllipseCenter_y, double EllipseLong_axis, double EllipseShort_axis, double angle){int thickness = -2;int lineType = 8;ellipse(img,Point(EllipseCenter_x, EllipseCenter_y),Size(EllipseLong_axis, EllipseShort_axis), //ellipse()函数中参数轴长应该是长短轴的一半,此处将对应的参数除以二,则我们输入即可认为是长短轴轴长。angle,0,360,Scalar(1),thickness,lineType);return img;}

利用此函数,我们在平面绘制长半轴长为100pix,短半轴为80pix、偏转角为0度的椭圆,如图1.1所示。利用ImageWatch插件可以观察椭圆边缘轮廓,如图1.2所示。

图1.1 OpenCV中ellipse函数绘制的椭圆

  

图1.2 OpenCV中ellipse函数绘制的椭圆边缘轮廓

由上图可见,使用OpenCV自带的椭圆绘制函数绘制的椭圆边缘轮廓为锯齿形,这对于椭圆中心的检测精度很不利,经过测试,这样的椭圆图案中心检测精度较差。

二 面积法绘制椭圆

如何实现在给定的图像平面中绘制一个具有任意旋转角、任意长短轴的椭圆,且椭圆中心为任意值,且椭圆边缘较为柔和,这是一个亟待解决的问题。不失一般性,我们以在600pix×600pix图像尺寸中绘制椭圆中心坐标为(300.67,300.35),长短半轴长分别为80,60为例。(单位均为像素)。

2.1 初步绘制二值化椭圆

对于椭圆总有一般方程

2.1

此方程可以变形为

2.2

令:

2.2.1

则有:

2.3

椭圆的标准方程

2.4

对于斜椭圆,其旋转角为-θ(为后续讨论方便,取为负值),则:

2.5

2.6

带入标准方程,即得到旋转后的方程

2.7

经化简得到
2.8

所以

2.9

![2.10](http://upload-images.jianshu.io/upload_images/11040803-d4360bae59765867?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2.11

2.12

其算法流程图可归纳总结如图 2.1 所示。经过流程图中的步骤,初步绘制好的椭圆二值化图像边缘轮廓部分截图,如图 2.2 所示。

图2.1 绘制椭圆二值化图像

图2.2 二值化椭圆轮廓边缘示意图

2.2 面积法的含义

接下来,为了使得椭圆边缘轮廓不显得那么锐利,使用面积法使用面积法将其边缘像素重新赋值,使椭圆轮廓边缘更加平滑。面积法指的是将椭圆边界的像素大小划分为 n×n个点,根据公式(2.13)将椭圆边缘重新赋值。公式中的 Ia为椭圆外部的各像素值,Ib椭圆内部的各像素值,I为重新赋值的像素值大小。(对于此处的n取值大小,如有感兴趣者,欢迎在【视觉IMAX】知识星球进行讨论交流)。

2.13

使用面积法的算法流程可大致归纳如图 2.3 所示。

图2.3 面积法对椭圆边缘像素重新赋值

2.3 使用面积法精确绘制椭圆

在 2.2 中我们是默认已经找出了椭圆的边缘轮廓,但在实际操作中,如何找出椭圆的边缘轮廓仍然是我们需要解决的问题。此处我们使用八邻域查找算法,选择的滤波器核大小为 3,如图 2.4 所示。

图2.4 滤波器核

利用此核与整个二值化椭圆图像做卷积运算,2.1 小节得到的二值化椭圆经过卷积运算后,如果是椭圆外部的点,像素值皆为 0,此时我们将其重新赋值为 50,如果是椭圆内部的点,像素值皆为 8,此时我们将其重新赋值为 200。像素值介于 1~7 的部分,我们便可以认为这是椭圆的边缘轮廓,如图 2.5 所示。图 2.5 中的左图为整幅椭圆图像经过八邻域查找法卷积运算后得到的椭圆,图2.5 中的右图为椭圆部分边缘轮廓放大后的效果图。

图 2.5 八邻域查找法寻找椭圆边缘轮廓

图 2.6 绘制理想椭圆的流程图

对于椭圆的边缘轮廓,我们便可以使用面积法,对椭圆边缘轮廓重新赋值。这样,使用面积法绘制理想椭圆的算法流程可归纳总结如图 2.6 所示。 经过使用面积法对椭圆边缘轮廓重新赋值之后,绘制好的理想椭圆,如图2.7 所示。图中左边部分为整个椭圆,右边部分为椭圆的轮廓部分截图。

图 2.7 面积法绘制的理想椭圆效果图

显然,使用面积法绘制的椭圆边缘更加柔和,椭圆中心检测精度更高。

三 总结

文章主要分析了两种绘制椭圆的方法,对比得出面积法绘制椭圆的精度更高。

四 跋

犹记得研究椭圆检测的那段时光,每天上下班路上,经常会莫名地观察路边的灯光、早晨的太阳、傍晚的夕阳,脑海中在始终会萦绕着一个问题:它们什么时候的所形成的椭圆图像中心检测精度更高呢?

欢迎大家进入【3D视觉工坊】知识星球,一起交流学习。

在这里插入图片描述

荐读

那些珍贵的「视觉SLAM」课程资料总结(三)

那些精贵的「机器视觉」学习资料总结

回复关键词——知识星球,扫码加入星球
在这里插入图片描述


http://chatgpt.dhexx.cn/article/emctT716.shtml

相关文章

cesium椭圆编辑椭圆修改(cesium篇.78)

听老人家说:多看美女会长寿 地图之家总目录(订阅之前必须先查看该博客) 完整代码工程包下载 运行如有问题,可“私信”博主。效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en

JS小球绕着椭圆形的轨迹旋转并且近大远小

在ivx中案例如下&#xff1a; VxEditor 效果如下&#xff0c;近大远小 主要代码如下&#xff1a; const centerX 360 / 2; // 椭圆中心的X坐标 const centerY 120 / 2; // 椭圆中心的Y坐标 const a 100; // 长半轴 const b 60; // 短半轴const elementsWithClassName d…

知识图谱实战应用2-知识图谱的知识融合与知识消歧

大家好,我是微学AI,今天给大家带来知识图谱实战应用2-知识图谱的知识融合与知识消歧。 知识图谱是用于表示语义化信息的一种图形化知识表示形式,其中包含了大量的实体、属性和关系。由于知识图谱是由不同来源的知识组成的,因此可能存在同一实体在不同知识源中有不同的表达…

【知识图谱】深入浅出讲解知识图谱(技术、构建、应用)

本文收录于《深入浅出讲解自然语言处理》专栏&#xff0c;此专栏聚焦于自然语言处理领域的各大经典算法&#xff0c;将持续更新&#xff0c;欢迎大家订阅&#xff01;个人主页&#xff1a;有梦想的程序星空个人介绍&#xff1a;小编是人工智能领域硕士&#xff0c;全栈工程师&a…

知识图谱从入门到应用——知识图谱的知识表示:符号表示方法

分类目录&#xff1a;《知识图谱从入门到应用》总目录 相关文章&#xff1a; 知识图谱的知识表示&#xff1a;基础知识 知识图谱的知识表示&#xff1a;符号表示方法 知识图谱的知识表示&#xff1a;向量表示方法 在前面的文章中已经多次提到&#xff0c;知识图谱采用图的方…

《什么是知识图谱?为什么需要知识图谱?知识图谱有什么应用? - 翔哥带你初识知识图谱》

原创实在不易&#xff0c;欢迎大家关注我微信公众号&#xff1a;阳洋up 我本人主要是做知识图谱表示学习研究的&#xff0c;通过读取大量CCF顶会论文以及与导师的交流沟通&#xff0c;逐渐形成了对知识图谱的大的层面上的一些认知&#xff0c;希望在CSDN平台上分享我的一些学习…

知识图谱从入门到应用——知识图谱的知识表示:向量表示方法

分类目录&#xff1a;《知识图谱从入门到应用》总目录 相关文章&#xff1a; 知识图谱的知识表示&#xff1a;基础知识 知识图谱的知识表示&#xff1a;符号表示方法 知识图谱的知识表示&#xff1a;向量表示方法 前文已经介绍过&#xff0c;向量化的表示已经在人工智能的其…

知识图谱|知识图谱的典型应用

作者&#xff1a; cooldream2009 我们构建知识图谱的目的&#xff0c;在于利用知识图谱来做一些事情。有效利用知识图谱&#xff0c;就是要考虑知识图谱的具备的能力&#xff0c;知识图谱具有哪些能力呢&#xff0c;首先我们知道知识图谱包含了海量的数据&#xff0c;是一个超…

知识图谱入门知识(一)知识图谱应用以及常用方法概述

学习内容 搜集各种博客&#xff0c;理解实体识别、关系分类、关系抽取、实体链指、知识推理等&#xff0c;并且总结各种分类中最常用的方法、思路。 由于自己刚刚接触知识图谱&#xff0c;对该领域的概念和方法的描述还不是很清楚&#xff0c;所以只是简单的列出框架和添加链接…

时空知识图谱应用初探

一、时空知识图谱概述 时空知识图谱不单单是一个“增强型”的开放域知识图谱&#xff0c;而是需要结合业务场景和领域知识&#xff0c;并针对时空知识自身的特点&#xff0c;对知识的概念、实体和关系进行语义化和时空化拓展。时空知识图谱除了描述语义关系外&#xff0c;还需要…

【知识图谱】知识图谱应用

知识图谱怎么用 知识图谱应用场景 辅助搜索——精准回答 eg&#xff1a; 辅助问答——人机互动 eg&#xff1a; 辅助数据集成——智能数据整合 eg&#xff1a; 辅助决策——智能决策 知识图谱和各种AI技术综合使用能更好地发挥AI的作用 eg&#xff1a;wbq为什么选择张…

知识图谱从入门到应用——知识图谱的知识表示:基础知识

分类目录&#xff1a;《知识图谱从入门到应用》总目录 相关文章&#xff1a; 知识图谱的知识表示&#xff1a;基础知识 知识图谱的知识表示&#xff1a;符号表示方法 知识图谱的知识表示&#xff1a;向量表示方法 知识表示是人工智能领域一个较为核心的问题。对于知识表示的…

知识图谱从入门到应用——知识图谱的技术结构

分类目录&#xff1a;《知识图谱从入门到应用》总目录 相关文章&#xff1a; 知识图谱的基础知识 知识图谱的发展 知识图谱的应用 知识图谱的技术结构 知识图谱是交叉技术领域 知识图谱是典型的交叉技术领域。在人工智能和机器学习领域&#xff0c;传统符号知识表示是知识…

知识图谱从入门到应用——知识图谱的发展

分类目录&#xff1a;《知识图谱从入门到应用》总目录 相关文章&#xff1a; 知识图谱的基础知识 知识图谱的发展 知识图谱的应用 知识图谱的技术结构 1945年&#xff0c;美国首任总统科学顾问Vannevar Bush曾提出了一个称为MEMEX的“记忆机器”的设想。他认为人的记忆偏重…

知识图谱从入门到应用——知识图谱的基础知识

分类目录&#xff1a;《知识图谱从入门到应用》总目录 相关文章&#xff1a; 知识图谱的基础知识 知识图谱的发展 知识图谱的应用 知识图谱的技术结构 知识图谱是有学识的人工智能 早期的人工智能有很多持不同观点的流派&#xff0c;其中两个历史比较悠久的流派通常被称为…

知识图谱的应用领域

1.3 知识图谱的价值 知识图谱最早的应用是提升搜索引擎的能力。随后&#xff0c;知识图谱在辅助智能问答、自然语言理解、大数据分析、推荐计算、物联网设备互联、可解释性人工智能等多个方面展现出丰富的应用价值。 1.辅助搜索 互联网的终极形态是万物的互联&#xff0c;而…

最详细的知识图谱的技术与应用

导读&#xff1a;从一开始的Google搜索&#xff0c;到现在的聊天机器人、大数据风控、证券投资、智能医疗、自适应教育、推荐系统&#xff0c;无一不跟知识图谱相关。它在技术领域的热度也在逐年上升。 本文以通俗易懂的方式来讲解知识图谱相关的知识、尤其对从零开始搭建知识图…

知识图谱是什么?一文了解其技术与应用场景案例

导读&#xff1a;悟已往之不谏&#xff0c;知来者之可追。 小编整理了各种关于人工智能的学习资料库&#xff08;知识图谱、图像处理opencv\自然语言处理、机器学习、数学基础等&#xff09;&#xff0c;还有AI大礼包&#xff1a;Pytorch、实战框架视频、图像识别、OpenCV、计算…

言简意赅,盘点知识图谱在各领域的应用

言简意赅&#xff0c;盘点知识图谱在各领域的应用 01 语义匹配02 搜索推荐03 问答对话04 推理决策05 区块链协作 什么是知识图谱&#xff1f;通俗易懂 01 语义匹配 语义匹配是搜索推荐、智能问答和辅助决策的基础。在没有知识图谱以前&#xff0c;文本匹配主要依靠字面匹配为…

知识图谱有哪些应用领域?

知识图谱通常应用于自然语言处理和人工智能领域&#xff0c;常用于提高机器学习模型的准确性和效率。它还可以用于数据挖掘、信息检索、问答系统和语义搜索等领域。近年来知识图谱在电子商务、金融、公安、医疗等行业逐步开始落地&#xff0c;在这些行业的渗透、深入中&#xf…