石鑫华视觉论坛

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

[原创] VBAI中实现垂直刻度表的水平刻度值读取

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

    昨天 08:04
  • 签到天数: 3384 天

    连续签到: 6 天

    [LV.Master]2000FPS

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

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

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

    x
    QQ图片20221011082952.jpg

    有人咨询了这样一个问题:
    如上图所示,怎么读取其实际的刻度值,如上图表示的6.6x度(假设这里就是表示度。因为刻度表的精度是百分比,上图的中最大10,实际表示的是20度,如果真要换算成度,那应该再乘以2)。
    先来分析一下问题内容:
    读取刻度值,在图像处理的领域里,上面图像中实际表示的其实就是读取蓝白分界处的直边的位置(Y值)。这里得到的Y值,实际上表示的是像素坐标,而在NI VISION中,图像的像素坐标系原点是左上角,左到右,X增大,上到下Y增大,而实际的刻度值是下到上增大的。
    刻度到像素的转换关系,其实很好解决,从现有的图像中,可以鼠标移动获取对应的像素坐标,在刻度0处对应的像素坐标Y值是866(因为刻度线比较粗,取刻度线的中间位置),而刻度10处对应的像素坐标Y值是172。这时就可以知道866-172=694像素,表示了实际刻度的10。那么转换关系系数就是10/(866-172)=0.0144,也就是图像中的1像素代表了0.0144度。
    当然,这里还需要注意一下一些相对数据。首先读取的Y像素值,要反转,以便和刻度从下到上增加相对应。然后返回后的Y值是从图像的最底开始的0,而刻度是从图像靠底位置的0刻度开始的,所以得到的反转Y值还要减去0刻度位置的坐标到底位置坐标这一段距离(1050-866),这样才是在刻度表坐标系中的相对像素值,再乘以对应的转换系数,就是表示刻度的实际值。
    下面来看一下实际效果,为了演示不同温度值的读取,这里在上图基础上,增加了几条刻度线,以便读取不同的值:
    1.jpg
    不同刻度线的图像
    QQ截图20221011095546.png
    测试温度为6.67
    QQ截图20221011095624.png
    测试温度为5.97
    QQ截图20221011095635.png
    测量温度为4.07
    测试脚本相对比较简单,获取图像(打开图像或采集程图像),然后找边函数,接着计算函数,最后覆盖函数。这个测试效果使用了VBAI来演示。视觉助手因为没有计算过程,所以无法实现这个要求,得转换到LabVIEW中才可以实现(或调用VI相对麻烦)。
    2020版VBAI测量脚本:
    demo.vbai (74.42 KB, 下载次数: 0, 售价: 2 元)
    演示图像:
    VBAI中实现垂直刻度表的水平刻度值读取演示图像.zip (460.46 KB, 下载次数: 0)
    回复

    使用道具 举报

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

    本版积分规则

    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-23 06:29

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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