首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2.霍夫变换

霍夫变换是检测直线或者圆的一种比较简单的方法。霍夫变换检测直线是比较简单的,做完以后是一个二维平面上的许多曲线,通过统计平面上交点的个数,就可以得出哪些点事处于同一条直线上的。...具体算法分为以下几个步骤: 1:边缘检测,这个比如opencv里霍夫变换用的是canny边缘检测。 2:对于边缘图像的非零点:考虑其局部梯度,用sobel函数来计算其梯度,关注其方向。...这样的话,我们新建的累加平面和原图的大小是一样的(事实上opencv函数的第四个参数可以设置这个图像的大小,那里叫做累加器图像的分辨率与原图分辨率之比的倒数,比如取2的话就表示累加图分辨率是原图分辨率的一半...),这样对于每一个边缘点都进行操作之后,累加平面上值越大的地方就表示越可能是圆心,累加平面上值越大的地方表示了足够多的半径在这里相交。...选择支持像素最多的一个半径来作为此圆心下的一个圆。 5:获得圆心和半径之后,标记出来即可。

69030

CSS魔法堂:重拾Border之——不仅仅是圆角

话说"大值特性"和"等比特性"  @张鑫旭老师在《秋月何时了,CSS3 border-radius知多少?》提到"大值特性"和"等比特性"两个特性。 ?...被忽视的猪脚——相交线  当设置border-left和border-top后,我们很容易预测到左边框和上边框的样式,但它俩相交部分的样式呢?这里就涉及到相交线的问题了!...通过直角边框找相交线  圆角边框是基于直角边框的,这一点也体现在相邻边框的相交线上。...我们可以看到两边相交所形成的矩形的对角线,将作为边的相交点。通过相交点判断边框样式应应用到哪一条边上。 透视图如下 ?...Borders 秋月何时了,CSS3 border-radius知多少? CSS滑动门Sliding door详解 《图解CSS3核心技术与案例实战》——第3章 CSS3边框

1.4K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    拓扑学——探寻大数据的内在模式

    我们怎么能检测出圆?或者,更进一步:我们怎么能告诉计算机找出这个圆? 这些是伴随着大数据的增长被提出的问题 ,代数拓扑能提供某些答案。...试想,放一个半径为r的小球来包围我们数据集里的每一点。如果r非常小,那么没有球会相交,该集合里球的Betti数是和离散集里的Betti数一样。...在动画中,我们看到一旦r到达一定的阈值,环绕顶部三个点的小球相交成对,并包含连接三个点的三角形。此外,我们不能填充三角形,因为有一个小的空白在中间。这意味着在这一阶段的一阶Betti数为1。...但是,当r变得更大一点,所有三个球一旦相交后我们可以填充三角形,一阶Betti数下降到第0。 和以上数据相关的条形码。...大型数据集的分析使我们看到,例如,一度被认为是80%有效的药物,事实上是对80%可通过某个标记识别的患者有100%的疗效 。

    1.3K50

    AcWing 528. 奶酪(每日一题)

    奶酪 - AcWing题库 题目: 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞。...如果两个空洞相切或是相交,则 Jerry 可以从其中一个空洞跑到另一个空洞,特别地,如果一个空洞与下表面相切或是相交,Jerry 则可以从奶酪下表面跑进空洞;如果一个空洞与上表面相切或是相交,Jerry...接下来是 T 组数据,每组数据的格式如下: 第一行包含三个正整数 n,h, 和 r,两个数之间以一个空格分开,分别代表奶酪中空洞的数量,奶酪的高度和空洞的半径。  ...,最后高度是否能到达h,在dfs上优化一下,我们可以sort排序一下每个点的高度,这样我遍历上可以一路走到头,比如我此时高度high=4,奶酪高度h=8,那么排序完之后,a[i].z点。

    11210

    Artwork (Gym - 102346A)【DFS、连通块】

    Artwork (Gym - 102346A) 题目链接 算法 DFS,连通块 时间复杂度:O(k*n + k * k) 1.这道题就是让你判断从(0,0)到(m,n),避开中途所有的传感器(传感器的检测范围为半径为...s的圆)的检测区域,最终能否到达(m,n)。...2.这道题很容易想到圆与圆相切或相交最后把能出去的路全堵上了,具体是把上下、左右、左下、右上这四个边界给堵掉一部分(只要满足前面四种情况的其中一个,就过不去)。见下图。 ? 很明显,这样堵绝对出不去。...由于当时以为这是个复杂的计算几何的题,结果看了半天计算几何模板却无从下手(其实只涉及了一点计算几何的知识,就是判断两个圆是否相交或相切),最终未果。...3.首先应明确一点,就是如何判断两圆是否相交或相切,即圆心之间的距离要大于等于半径之和。

    58010

    超声图像手臂动脉检测及弹性分析

    动脉血管检测 YOLOv7-tiny的训练与测试 全自动的超声图像动脉血管弹性分析首先应该将动脉血管检测出来,检测出来之后,我们才能对其进行定位,并分析其弹性。...血管定位跟踪 我们检测到动脉血管后,要实时分析其半径,这是一个持续的过程,我们这时采用了KCF跟踪算法来跟踪此动脉血管,以便在此区域中进行分析。...动脉半径实时预测 该算法的核心思想为通过确定目标圆心,接着通过圆心计算半径。 圆心决定策略:由最大连通区域通过图像矩得到白色区域重心,并通过与检测框求平均从而决定圆心。...center_x_last = (center_x + img_center_x) // 2 center_y_last = (center_y + img_center_y) // 2 # 从中心发射线段与血管轮廓相交...average_radius = int(np.mean(acceptable_radii)) print(average_radius) # # 在图像中标记边界点

    10110

    碰撞检测的向量实现

    注:1、本文只讨论2d图形碰撞检测。2、本文讨论圆形与圆形,矩形与矩形、圆形与矩形碰撞检测的向量实现 前言 2D游戏中,通常使用矩形、圆形等来代替复杂图形的相交检测。...两圆相交比较简单,只需判断两圆心之间的距离小于两圆的半径之和。 两圆心距离可以用圆心向量相减,然后求相减向量的长度。 ?...「Milo Yip」的回答搬运: 设c为矩形中心,h为矩形半長,p为圆心,r为半径。 ? 方法是计算圆心与矩形的最短距离 u,若 u 的长度小于 r 则两者相交。...想象一下两个矩形A和B,B贴着A的边走了一圈,B的矩形中心的轨迹是一个新的矩形,这样就简化成新矩形与B中心点这一点的相交问题,又因为点可以看成是半径为0的圆,所以问题又转换为圆形和矩形相交。 ?...new Vector2d(Math.max(v.vx - H.vx,0),Math.max(v.vy - H.vy,0)); return u.lengthSquared() === 0; // 点可以看成是半径为

    1.6K10

    Canvas系列(20):画布中画满圆

    要求圆与圆之间不能相交,最终效果如下。 HTML结构 首先我们先展示我们基础的HTML结构。...这里可以先使用很小的圆来计算,让其半径慢慢增大,当增大到刚好与某个圆或者边界相切时,则绘制它。如果一直不相切,我们最好给一个圆的最大半径,这样可以保证圆不会太大。...} return false } 当调用 doesCircleHaveACollision(circle) 方法的时候,新圆并没有加入到 circles 数组中,所以我们只需要判断新圆是否与数组中的圆相交并判断是否与边界相交就可以了...圆与圆的相交可以通过圆心间的距离跟半径之和做比较来判断,圆与边界可以通过圆的坐标和半径跟上下左右边界的距离做比较来判断。对碰撞检测感兴趣的同学可以翻看之前的文章。...}) // 步骤2,判断圆心坐标是否在某个圆内 如果与其他圆或者边界相交则舍弃当前坐标,重新生成一个新坐标,不相交则标记可以绘制 if(doesCircleHaveACollision

    7900

    基于Python利用OpenCV实现Hough变换的形状检测

    霍夫空间 ρ:描述直线与原点的距离 θ:描述远离水平线极坐标的角度 线极坐标 不过,一个非常重要的观察结果是,当我们在一条线上取多个点,然后我们变换到我们的霍夫空间时,会发生什么呢?...霍夫空间中的点线关系 图像空间上的单个点转化为霍夫空间上的曲线,其特殊性是图像空间上一条直线之间的点将由具有单个接触点的多条曲线表示。 这将是我们的目标,找到一组曲线相交的点。 什么是霍夫变换?...一个“简单”的形状将仅由几个参数来表示,例如一条直线可以用它的斜率和截距来表示,或者一个圆可以用 x、y 和半径来表示。 在我们的直线示例中,霍夫变换将负责处理图像上的点并计算霍夫空间中的值。...在 CV_HOUGH_GRADIENT 的情况下,它是检测阶段圆心的累加器阈值。它越小,检测到的假圆就越多,与较大累加器值相对应的圆圈将首先返回。 minRadius:最小圆半径。...maxRadius:最大圆半径。

    2.5K10

    【笔记】《游戏编程算法与技巧》7-12

    球与球: 用球心的距离差与半径和比较判断, 为了减少开平方的开销, 通常直接对比平方的结果 AABB与AABB: 检测无交叉速度更快, 以下四个条件(2D形式)只要满足了一个就能返回当前AABB无交叉...注意这里t的求解式中, 要通过提前判断v与n是否平行来排除除零异常(平行时, 带入判断线段的点是否在平面上) 线段与三角面: 先判断是否与三角面形成的平面相交, 然后判断这个交点是否在三角形内....这个算法可以推广到所有同平面的凸多边形, 同向判断通常以点乘后的正负号来判断 球与平面: 最简单的方法就是计算球心在目标平面法线n方向上到原点的距离dC, 然后计算目标平面到原点的距离d, 两者相减的绝对值小于球半径那么存在相交...胶囊与胶囊(球形扫掠体): 主要用于例如子弹检测的连续碰撞检测(CCD)情况....t较小的那个时间点T, 那就是碰撞开始时的时间点, 用T计算出碰撞时的速度 然后利用T时两个球的坐标, 按照其半径线性插值就能得到精确的碰撞点, 然后这两个球心的连线就是切平面的法向量线, 借助这个创建碰撞点上的切平面

    2.2K20

    Voronoi图路径规划 (许松清, 2005)

    如果两个或多个扩张后的圆相交,表明运动体无法从这些障碍物之间通过,则将其相应的障碍物作为一个障碍物处理。 此时,即可将处理后的圆的圆心并以此作为Voronoi图的生成元。...之后,得到障碍物的外接圆,并“增长”外接圆,此时与运动体可作为单点处理。 ? 可以看到,右下角两个障碍物“增长”后的外接圆有重叠部分,将其视为一个障碍物。 ?...绘制维诺图,可以看到此算法的一个问题,虽然通过增长障碍物外接圆半径使运动体“可以被”视为一个质点,并且在此基础上合并了运动体无法通过的障碍物,但是voronoi图是通过外接圆圆心生成的,与外接圆半径无关...,因此voronoi图的边仍可能与障碍物圆相交,仍有碰撞的可能。...此时,可以看到此算法的另一个问题,**无论起点/目标点到voronoi子图的最近点如何选择,此文中都没有起点/目标点到最近点的路径做碰撞检测,起点/目标点到voronoi图子图的路径很可能与障碍物产生碰撞

    2.6K40

    (数据科学学习手札29)KNN分类的原理详解&Python与R实现

    “距离”最近的k个训练集样本,并将新样本类别判定到这k个近邻中占比最大的那个类中,下面是一个广泛传播的KNN示例(图源自网络): 蓝色与红色的样本点即为上述的已标注训练样本集,绿色样本点为待标记的新样本...)的距离为半径,获得一个超球体,最近邻的点必然属于该超球体,接着沿着KD树向上返回叶子节点的父节点,检查该父节点下另一半子树对应的范围空间是否与前面的超球体相交,如果相交,在该半边子树下寻找是否有更近的最近邻点...: 可以看出,该圆与平面x=3.25存在重叠的部分,且在该圆与其他范围空间相交部分存在着距离新样本点更近的实例点(2.5,4),这时将新样本点的最近邻更新为实例点(2.5,4),再作圆,如下图: 此时该圆虽然与其他矩形范围空间仍然存在着相交部分...,但因为它也与左边下部矩形空间有些许相交部分,因此仍然需要重复对左边下部区域内的点计算其与样本点的距离,这在维度较高时,就成了灾难,会出现数量非常庞大的冗余的范围空间需要计算,这是由于KD树中以平行于坐标轴的多条线段划分训练集...(类似线性规划中割平面法定上限的过程),接着类似KD树,建立起以新样本点为球心,上限值为半径的超球体,检查该超球体是否与其他球树中的超球体有相交的部分,若有,则计算所有相交超球体内部点与新样本点的距离,

    1.4K130

    使用OpenCV实现车道线检测

    本文介绍了使用计算机视觉技术进行车道检测的过程,并引导我们完成识别车道区域、计算道路RoC 和估计车道中心距离的步骤。...自上而下视图的另一个好处是,它解决了车道线相交的问题。实际上只要沿道路行驶,车道线就是平行线。 鸟瞰图可以通过应用透视变换来实现,即将输入图像中车道区域四个点映射到所需点上,从而生成自顶向下的视图。...图6 在这些通道上检测到二阶多项形 下一步是计算曲率半径,该半径可以使用与曲线局部部分附近的点紧密拟合的圆进行计算,如图 7 所示。曲线在特定点的曲率半径可以定义为近似圆的半径。...此半径可以使用图 7 中的公式计算。 ? 图7 曲率概念图的半径和用于计算 RoC 的方程 最后一步是在这些点之间放置一个多边形,并将其投影回原始图像,来突出显示车道区域。...曲率的车道面积和半径是根据像素值计算的,像素值与真实世界空间不同,因此必须转换为现实世界的值,这涉及到测量我们投射扭曲图像的车道部分的长度和宽度。

    1.5K21

    基于车载点云数据的城市道路特征目标提取与三维重构

    ,最终提取出道路边界点云;Wang等[11]通过车辆轨迹辅助道路划分、特征性地图构建与特征性点提取、抑制子检测与抑制子最低点提取、道路边界拟合等步骤提取并拟合出城市道路边界。...,动态地将点云从全局坐标系转移到基于块的局部坐标系,根据块廓线和重采样点云估计边缘和中心点,基于半径滤波器提取道路标记。...2)判别条件B:计算中心格网与邻域格网的坡度,若坡度小于阈值\delat s,则标记邻域格网;计算中心格网的中心点与标记的邻域格网中心点构成的所有向量之间的最大夹角\alpha_{max}应等于135°...实际情况中大部分城市道路都具备路缘石,但当道路不具备路缘石时,如何提取道路边界有待进一步研究;算法的部分参数比较依赖人工经验,自适应性有待进一步加强;在树木茂密的地方,可能会出现路灯和树木相交的情况,对地物分类产生影响...,未来将进一步研究如何使相交的路灯和行道树分离。

    72400

    寻路和Flocking算法的结合

    当时为了研究他是如何时实现的,还特意去学习了VO,RVO算法(没有学会),最终也没有实现出来。 这次,我想用Flocking算法再试一次。 先简单介绍一下Flocking算法。...Cohesion:每只鸟都会检查自己半径R范围内鸟的位置,计算出这群鸟的质心,产生一个向质心靠拢的速度分量。...Alignment: 每只鸟都会检查自己半径R范围内的鸟的速度,计算出这群鸟的平均速度,然后产生一个向平均速度靠拢的速度分量。...这时就需要加入寻路系统来提供路径支持。 然而,事情并没有这么简单。...如果障碍物形状态复杂时,可能需要重写AABB检测逻辑,根据相交的边计算出远离障碍物的速度分量。 到目前为止,最大的开销就剩下为地图上所有格子计算最佳方向了。 如果地图过大,这样计算是不现实的。

    75410

    关于碰撞检测

    碰撞检测就是查看物体是否重合。 碰撞检测常用于游戏开发,通过碰撞检测判断前面是否有障碍物以及两个物体是否发生碰撞,根据检测的结果做出不同的处理。...下面是数学表达式: (x1 – x2)2 + (y1 – y2)2 <(r1 + r2) 3.矩形与圆碰撞 通过找到矩形上与圆形最近的点,判断其与圆心的距离,如果小于半径就碰撞 定义: 矩形上离圆心最近的点为变量...:closestPoint = {x, y}; 矩形 rect = {x, y, w, h}; // 左上角与宽高 圆形 circle = {x, y, r}; // 圆心与半径 首先是 x 轴: 如果圆心在矩形的左侧...因此,通过上述方法即可找出矩形上离圆心最近的点了,然后通过『两点之间的距离公式』得出『最近点』与『圆心』的距离,最后将其与圆的半径相比,即可判断是否发生碰撞。...两个矩形的时候,要想保证相交,必须一个矩形的左边界小于另一个矩形的右边界,一个矩形的下边界小于另一个矩形的上边界。

    1.1K10

    Android OpenCV(四十四):图像分割(均值漂移)

    从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像素赋予相同的编号。...基本思想为:首先随便选择一个中心点,然后计算该中心点一定范围之内所有点到中心点的距离向量的平均值,计算该平均值得到一个偏移均值,然后将中心点移动到偏移均值位置,通过这种不断重复的移动,可以使中心点逐步逼近到最佳位置...参数二:dst,输出图像,与src大小类型相同。 参数三:sp,漂移的物理空间半径大小。 参数四:sr,漂移的颜色空间半径大小。 参数五:maxLevel,用于分割的金字塔的最大级别。...参数六:termcrit,终止标准:何时停止均值漂移迭代。 sp,sr越大,平滑效果越明显,处理时间越长 操作 由于Mean-Shift均值漂移无法直接分割图像,我们配合漫水填充法执行分割操作。

    1K50

    hough变换检测圆原理(定位变换后的面如何变成实体)

    图像空间的一条直线上的多个共线点映射为参数空间相交于一点的多条正弦曲线。 Hough变换的具体算法步骤如下: 适当的量化参数空间。 将参数空间的每一个单元看作一个累加器。 初始化累加器为0。...下边我们对Hough变换检测圆的原理做简要介绍。 对于一个半径为r,圆心为(a,b)的圆,我们将其表示为: 此时x=[x,y]T,a=[a,b,r]T,其参数空间为三维。...而图像空间的一个圆就对应着这一簇圆锥相交的一个点,这个特定点在参数空间的三维参数一定,就表示一定半径一定圆心坐标的图像空间的那个圆。...如随机Hough变换,它的主要思想是通过在图像空间中随机抽样来降低内存需求与计算时间,具体做法是在图像空间中随机选取不共线的三点映射到参数空间,参数空间的单元集是一个动态链表结构,当参数单元陈列的值到达一定阈值就认为其确定了一个圆...可以取边缘厚度为一个较小数t,对于任意三点确定对应的参数圆心(a,b)和半径r,边缘点集中的点di(dix,diy),如果有dix >a+r+t或dix b+r+t或diy <b-r-t

    1.6K30

    UE运行时动态生成自定义物理形状碰撞检测

    在传统的2D或2.5D游戏中,或者要求不那么精确的3D游戏中,这种相交检测可以简化为平面上圆形与各种形状(如圆形、矩形、扇形等)是否相交的检测^1^,但是当考虑上飞行、跳跃等逻辑后,就必须进行3D空间的相交检测了...游戏物理引擎中,对于简单的几何体(如球体、胶囊体、立方体)的相交检测,都会将逻辑进行简化。复杂是由简单演化来的,正如几何中的点构成线,线构成面;一维变二维,二维变三维一样。...碰撞检测算法也可以从点、线、面出发,计算出体相关的数据^2^。对于更复杂的凸包,我们有万能的解决方案来处理这些问题。...只要我们能参考这些基础形状相交检测接口,根据配置生成对应的物理形状进行相交检测,就可以获取Overlap到的角色对象。...2.1 Physx引擎实现  对于默认使用Physx物理引擎的UE4,参考引擎上层提供的几个相交检测接口(如SphereOverlapActors()),具体方法就是根据传入的参数(如球形接口的球心坐标和半径

    3.6K30

    CAD常用基本操作

    键选择要延伸的对象或 [栏选 (F)/窗交(C)/投影(P)/边(E)/删除(R)/放弃(U)](此处可参考帮助F1) 小提示:a 边(E):确定对象是在另一对象的延长边处进行修剪,还是仅在三维空间中与该对象相交的对象处进行修剪...([延伸(E)/不延伸(N)]) b express插件的使用,命令提示行输入extrim命令(增强修剪),剪切所选边一侧所有相交图形 9 延伸命令:extend(EX) 命令与修剪中类似,按住Shift...(F) A 半径值(R):输入倒角半径值 B 修剪(T):控制圆角命令是否将选定的边修剪到圆角弧的端点(是否保留原图形) C 多段线(P):在二维多段线中两条线段相交的每个顶点处插入圆角弧(如果一条弧线段将会聚于该弧线段的两条直线段分开...,则执行圆角命令 将删除该弧线段并代之以圆角弧,以较小代替较大) D 多个(M):连续多次倒圆角 E 两条不相交直线形成尖角,可将倒圆角半径设为0进行倒圆角操作实现 F 平行线之间倒圆角不需要输入半径值...B 拾取点:根据围绕指定点构成封闭区域的现有对象来确定边界 C 孤岛检测:控制 BOUNDARY 是否检测内部闭合边界,该边界称为孤岛 D 对象类型:控制新边界对象的类型。

    5.6K50
    领券