石鑫华视觉论坛微信公众号:石鑫华视觉

 找回密码
 注册会员
查看: 975|回复: 0

[原创] LabVIEW Vision三点计算圆心半径

[复制链接]
  • TA的每日心情
    擦汗
    11 小时前
  • 签到天数: 3177 天

    连续签到: 47 天

    [LV.Master]2000FPS

     楼主| 发表于 2022-10-9 18:00:38 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

    注册登陆后可查看附件和大图,以及购买相关内容

    您需要 登录 才可以下载或查看,没有账号?注册会员

    x
    我们知道,不在一条直线上的三个点(一条直线上,则直径是无穷大的),是可以拟合得到一个圆的,这样就可以求得圆心、半径(直径)等。那么在LabVIEW Vision中,如何来实现这个要求呢?本视觉论坛提供两种方法:

    方法一:
    比较简单的方法,因为三点是可以拟合成圆的,那么直接使用NI Vision中的拟合圆IMAQ Fit Circle函数来处理。
    方法二:使用数学方法进行计算,来得到相应的圆心、半径等数据。计算原理,可以自行百度搜索,可查看本贴的word文档,也提供了一种计算原理,本贴的计算原理,也是使用这种计算方法。
    下面来看一下效果:
    先看一下程序框图:
    QQ截图20221009173430.png
    三点计算圆心半径的程序示例框图
    上述框图中,提供了上面的两种方法。上面的是函数是方法二的,使用数学方法计算三点拟合圆心和半径。下面的则是使用拟合圆函数来拟合圆心和半径。可以比较两种方法得到的数据是不是一样的。
    QQ截图20221009173235.png
    QQ截图20221009173245.png
    QQ截图20221009173329.png
    QQ截图20221009173346.png
    QQ截图20221009173355.png
    QQ截图20221009173412.png
    QQ截图20221009173425.png
    上面的效果,两种方法得到的结果数据是一样的。也就是两种方法都是可行的。
    下面再看一下,如果三个点在一条直线上的情况:
    QQ截图20221009174400.png
    QQ截图20221009174406.png
    如果三点共线,数学计算方法,得到的结果是inf或nan无效数据。而拟合圆函数得到的结果是0并返回错误,错误内容是不要提供共线点。
    在上面的效果中,在数学计算方法中,还使用了覆盖圆弧功能。但是在这里有点不好计算,或者是不太好判断三个点的角度。我们知道覆盖圆弧功能是要提供起点角度和终点角度的:
    QQ截图20221009174743.png
    覆盖弧函数
    但是这里,只有三个点,该如何确定起点和终点,比较麻烦,作者年纪大了,没有考虑太详细,到底该如何确认起点和终点的角度该如何确定。就比如说(200,200),(300,100),(400,200),这样三个点,表现出来,其实就是一个圆的上半弧,这里按第1点、第2点、第3点排序,那就应该是顺时针的,而在NI Vision中,则是逆时针来定义角度的,所以这里的覆盖弧的起点角度应该是第3点的、终点角度是第1点。而如果说(200,200),(300,100),(400,200),这样三个点,表现出来的是一个圆的下半弧。同样按第1点、第2点、第3点排序,则是逆时针的,这里覆盖弧的起点是第1点,逆时针经过第3点,终点角度则是第2点。另外,又还有一些比较特殊的点,例如说前面的下半弧的第三点,按理说应该是360度,这时计算角度,则可能是0度,而如果是用0度时,则得到的弧也是不一样的。所以,这里如果要覆盖弧,那么可能与期望的有一些差别。如果没有考虑清楚,还有可能有一点没有落在弧上(这种情况肯定是不对的)。所以,覆盖弧时,至少要保证3个点在圆弧上,但是到底是顺时针、逆时针,是包含三个点的小弧,还是包含三个点的大弧(效果图中的2、3图),那还得计算和判断。
    示例函数版本LabVIEW2020SP1+Vision 2020SP1
    示例(只有数学计算方法):
    Read Image File-覆盖三点圆弧.vi (40.59 KB, 下载次数: 13)
    示例:数学计算方法+拟合圆方法:
    Read Image File-覆盖三点圆弧 拟合圆.vi (42.4 KB, 下载次数: 9)
    覆盖点函数:
    Overlay Feature Points2.vi (29.47 KB, 下载次数: 7)
    三点计算圆心半径函数(付费):
    三点计算圆心半径.vi (668.84 KB, 下载次数: 3, 售价: 10 元)
    三点计算圆心半径圆心文档:
    三点计算圆心半径.docx (56.88 KB, 下载次数: 15)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    LabVIEW HALCON图像处理入门教程(第二版)
    石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
    《LabVIEW Vision函数实例详解》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23
    LabVIEW图像处理教程
    机器视觉商城淘宝店铺
    视觉论坛充值赞助方法

    QQ|石鑫华视觉论坛 |网站地图

    GMT+8, 2024-4-19 18:44

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表