石鑫华视觉论坛

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

[有偿] LabVIEW Vision的画笔实现原理

[复制链接]
  • TA的每日心情
    擦汗
    昨天 08:04
  • 签到天数: 3382 天

    连续签到: 4 天

    [LV.Master]2000FPS

     楼主| 发表于 2022-7-26 16:38:53 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

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

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

    x
    LabVIEW Vision的画笔实现原理
             NI的模板编辑器中,有一个画笔的点工具。可能利用画笔工具,在模板中设置忽略区域。这个画笔可以设置宽度、颜色等。如下图所示效果:
    image1.png
    NI模板编辑器中的画笔效果
             有些人问作者,这个效果在LabVIEW中该如何实现。这个在LabVIEW中,是没有办法简单实现的,不能用一个函数或一个属性、方法来实现这个功能,不像其它的矩形、椭圆(圆)、多边形、封闭的徒手画ROI工具一样,可以用Fill的方式来画这样的屏蔽区域。
             LabVIEW中有点ROI、和徒手画的曲线ROI工具,可以利用这些ROI工具作为基础,然后通过一些方法扩展,来实现模板编辑器中类似的效果。Image控件的Point/Freehand ROI,都是一个像素,不能设置线宽,未封闭时,也就没有Fill填充功能。所以是得自己另外想办法来扩展点或线画的区域。
             单击得到点,其实可以通过设置半径,得到一个圆,然后计算该圆内的所有点,得到ROI区域。如果是徒手画线的话,其实是可以由多个点来连续拟合。但是如果鼠标移动速度过快,那在获取鼠标最后点时,中间会丢失许多点的信息(参考说明视频),只能考虑使用点到点之间的连线来实现。但是,如何计算有宽度的点到点之间的连续,也是需要计算的,这个得开动自己的大脑;或者利用NI VISION找到其它能达到类似效果的方法来替换这样的计算。
    image2.png
    画笔实现效果
    image3.png
    不同颜色、不同宽度的画笔
    image4.png
    点击时的效果
             因为这里没有使用计算以点为中心、宽度为半径的圆周内的所有点的ROI,只是使用了替换方法,所以得到的效果与NI模板编辑器中有是差别的,这里得到的更类似于一个六边形,而NI模板编辑器中是一个圆。
    image5.png
    解决了图像控件图像显示范围外点击时最后点被当成画笔区域的问题

             对于鼠标移出图像显示区域后再点击,会将鼠标最后位置当成画笔的问题,这里重新设计了一下,加了一个范围的判断,基本上解决了该问题。但是,在实际使用中,又发现了另一个小问题:鼠标按下移动时,这时是会Overlay鼠标轨迹的,如果鼠标移出图像范围,则鼠标最后位置是不会变化的,Overlay也就没有变化,但是这时的徒手画ROI是会沿图像跟着鼠标方向画ROI的,这样就会造成覆盖效果和Mask效果有差异。如果鼠标移出又移进,则又会得到变化的鼠标位置,则效果又会变得一致。这个差异问题,暂时还没有想到什么好的解决办法,因为显示轨迹和Mask用的方法并不是一样的。
             关于本画笔实现更多说明,请参考说明视频。说明视频:关注视频号/公众号“石鑫华视觉网”
    开发环境:LabVIEW 2020 SP1+VDM 2020 SP1
    EXE版本:免费下载测试
    画笔EXE.zip (276.54 KB, 下载次数: 3)
    VI开发版本:付费购买
    画笔vi.zip (189.14 KB, 下载次数: 3, 售价: 50 元)


    回复

    使用道具 举报

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

    本版积分规则

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

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

    GMT+8, 2024-11-21 01:42

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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