石鑫华视觉论坛

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

[原创] LabVIEW Vision求曲线上所有点的坐标

[复制链接]
  • TA的每日心情

    4 小时前
  • 签到天数: 3384 天

    连续签到: 6 天

    [LV.Master]2000FPS

    发表于 2020-3-13 13:07:05 | 显示全部楼层 |阅读模式 来自:广东省东莞市 联通

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

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

    x
    在群里看到一个很有意思的问题,就是求曲线(含直线、曲线、弧线段等)上面所有点的坐标。这类问题,好像每年毕业设计时,都会遇到几个人问,在这里给出一个解决方法:lol。这个问题,粗看其实感觉很简单,曲线嘛,那么明显,轮廓肯定是能弄出来的撒。如下图所示需求:

    求曲线上所有点的坐标

    求曲线上所有点的坐标

    求曲线上所有点的坐标
    我们先用NI VISION中的轮廓来检测一下看看效果:

    视觉助手轮廓

    视觉助手轮廓

    视觉助手很顺利的把曲线的轮廓提取出来了。但是,曲线,在这里实际表达的是这么一条线,不管他有多粗多细,我们要的就是这条线。而取得的轮廓,则是围绕这条线的周围轮廓转了一圈。我们可以看到,在这条线截断面两边都有红色的轮廓线表示。哪怕我们可以将实际的曲线在图像中仅用一个像素来表示,实际上输出的轮廓,还是会围绕着曲线一周都有轮廓,差不多会有两倍左右的实际曲线点的轮廓点坐标。这个就与我们期望的不一样了。而且因为点与点之间是相连的距离又近,我们还不好判断,哪个是重复的。所以,这种方法,可能不是很适合。这里我们还得再想一想有什么办法可以测量出实际曲线上的所有点的坐标。
    需求中,我们是需要得到曲线上的点坐标,这里的线,就是一条线,不管他粗细。那么在图像中表现,应该就是一组一个像素的点通过4或8连通连接在一起得到的曲线。如下图所示

    1像素宽的曲线

    1像素宽的曲线

    图像中的曲线表示方式
    那么如何实现这种需求呢?我们可以使用NI VISION中的骨架函数。将一条较粗的曲线骨架为一像素的曲线。当然,这里的曲线不能太粗了,如果太粗,则在两端可能会表现为分叉,这个是骨架函数本身的特性。

    过粗的曲线会引起分叉

    过粗的曲线会引起分叉

    粗线会有分叉

    细线没有分叉

    细线没有分叉

    细线则完全没有分叉

    中线两头有差别

    中线两头有差别

    中线则两头会有几个点的差别
    所以,如果是不规则随手画的曲线,可能会存在细微的差别,特别是两端,会多出几个像素点的表示。如果是这种情况,又结果有影响,那就只能再想一下办法,把这处点忽略掉。
    下面我们来看一下实际的测量效果:

    8连通

    8连通

    4连通

    4连通

    4连通

    8连通
    因为骨架输出的是4连通的。则其转向路径只能是上下左右。如果我们实际点按4连通走的话,则与骨架的点是一致的,这时只需要处理骨架的点即可。如果我们实际点是按8连通走的,即除了上下左右之外,左上、右上、左下、右下四个方向也要考虑时,则再需要考虑使用提取轮廓上的点函数来处理。这个函数输出的是8连通的点。
    QQ截图20200313125710.png
    4连通转向只能上下左右(红色路径)
    QQ截图20200313125728.png
    8连通有8个方向可以转向(蓝色路径,红色的为4连通路径)
    4连通,连续性要好,但是精密性不强。8连通则相反,连续性不佳,精密性要好。具体使用什么方法,则看自己需要。
    示例附件下载LabVIEW2019SP1版+NI VISION2019SP1
    曲线坐标点.rar (93.74 KB, 下载次数: 1, 售价: 5 元)
    回复

    使用道具 举报

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

    本版积分规则

    LabVIEW HALCON图像处理入门教程(24.09)
    石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
    《LabVIEW Vision函数实例详解2020-2024》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24

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

    GMT+8, 2024-11-22 12:19

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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