石鑫华视觉论坛

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

[原创] LabVIEW Vision图像上小数坐标的显示问题

[复制链接]
  • TA的每日心情
    开心
    昨天 21:00
  • 签到天数: 3412 天

    连续签到: 14 天

    [LV.Master]2000FPS

     楼主| 发表于 2023-2-17 09:48:32 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

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

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

    x
    在群里有人提了这么一个问题:
    请教大家一个问题 ,在缩放的时候,不落在整数坐标系上的新像素点或省略的像素会发生什么? 新颜色值?


    熟悉使用LabVIEW Vision的同学都知道,在Image显示图像控件上,鼠标移动时,在下面的信息栏中,是可以将当前鼠标位置下的坐标值及对应的图像灰度值(彩色RGB值)等信息显示出来的:
    QQ截图20230217092403.png
    Image上显示了分辨率、倍率、图像类型、颜色值、坐标值等信息
    在移动鼠标时,可以看到最后的(xxx,yyy)坐标值,都是整数的。这里也就是在image在显示图像时的坐标值,均取整数了。没有小数显示一说。
    这个其实也是很好理解的。首先就是相机的像素点是一个点一个点排列的,图像通常都是输出U8、I16、U16这样的整型的图像,很少见到有输出浮点型数据的图像(有,不多见),所以原始图像通常都是整形的坐标系。因为像素点如果适应屏幕,其实也是一个点个点的。如果图像在Image控件中放大倍率刚好是1X,那么其实就是图像上一个像素点,代表了屏幕上的一个像素点:
    QQ截图20230217092834.png
    1X时的效果
    而当显示的倍率小于1X时,就如第一幅图时的0.5X,这个时候的图像显示,其实是使用抽样来显示的,0.5X时,刚好是2选1,所以这时的坐标则是0,2,4,6……这样的偶数。如果是0.33倍,那就是3选1;而当显示的倍率大于1倍时,则会使用屏幕上的多个像素点来表示图像上的一个点,例如说2*2,3*3,4*4这样子,2*2也就是宽方向2个像素高方向2个像素,共4个像素表示图像上的一个点:
    QQ截图20230217093234.png
    屏幕上多个点来表示图像上一个像素点
    上面的,就是图像直接显示的问题。下面再来看看计算结果的问题。
    在NI Vision中,有很多计算结果会输出坐标值,例如说找点函数、找直边函数,找圆函数,其输出的结果,都是DBL/SGL类型的浮点形数据,带小数点的:
    QQ截图20230217094127.png
    找圆边输出的圆心是SGL的数据类型
    那么,这些小数类型的坐标,要显示到图像上,该如何处理?
    要想将结果显示到图像上,通常都是通过覆盖函数来实现的,例如上面的圆心要想显示出来,那么可以通过覆盖点函数来实现:
    QQ截图20230217094250.png
    覆盖点
    从覆盖点函数中可以看到Point输入点,要求的是I32整数类型的数据。也就是这里的显示,也是显示整数,而不会显示小数。圆心的小数数据显示到图像上,将强制转换为整形。这时如果放大看图像,可能会存在些许差异,数据被四舍五入了。
    其实,这个问题,在ROI中也是如此的,ROI也是整数类型的,不会使用小数点:
    QQ截图20230217094625.png
    整数类型的ROI
    综合归纳一下,直接操作图像坐标的,基本都是整数类型的。而通过函数计算得到的结果数据,则通常是小数类型的。
    回复

    使用道具 举报

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

    本版积分规则

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

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

    GMT+8, 2024-12-23 00:20

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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