石鑫华视觉论坛

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

[原创] LabVIEW Image转Halcon Image

[复制链接]
  • TA的每日心情
    开心
    半小时前
  • 签到天数: 3412 天

    连续签到: 14 天

    [LV.Master]2000FPS

     楼主| 发表于 2023-3-23 18:11:08 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

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

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

    x
    本vi的功能是将LabVIEW中的NI Vision Image图像引用转换到Halcon中的HImage引用,从而方便在LabVIEW中得到的图像在Halcon中进行处理。

    已经验证过的图像类型包含U8、U16、I16、RGB等类型

    RGB32

    RGB32

    RGB32

    RGB32

    RGB32

    RGB32

    I16

    I16

    I16

    U16

    U16

    U16

    U8

    U8

    U8
    QQ截图20230327152220.png
    RGB64
    注意,RGB64图像时,在Halcon中倒是还能正常显示,但是在LabVIEW中还不能正常显示。因为在MAX是采集图像时像素格式是BayerRG12,也就是像素位深是12位的,最大值也就是2^12=4095,而要显示12位的图像,在Windows系统/LabVIEW中,则需要使用16位两字节才可以,这时的最大值是2^16=65535,也就是RGB32的每通道也是由8位变成16位的RGB64。这时实际采集的图像灰度最大值也就是4095,但是这个最大值在RGB64最大值65535中,则是一个非常小的值,所以即使最大4095时,实际看起来仍然是比较黑的。尝试着调整NI Image的16位映射模式,均无法调整成MAX中那种效果(在MAX中可以正常显示),这个在LabVIEW、视觉助手、VBAI中均是这种问题,暂时还未找到适合的显示方法(参考强制转换显示:LabVIEW如何显示RGB64彩色图像http://visionbbs.com/thread-31485-1-1.html)。理论上,还要考虑一下像素格式才可以,就像MAX中一样,也是设置了像素格式才正常显示:
    QQ截图20230327153822.png
    像素格式BayerRG12RGB64时在MAX中能正常显示
    QQ截图20230327154754.png
    视觉助手中无法正常显示12位像素深度的RGB64图像
    经过验证,RGB64的显示异常,应该属于Bug:
    LabVIEW Image显示RGB64的Bug
    http://visionbbs.com/thread-30194-1-1.html?fromuid=9

    测试图像:
    链接:https://pan.baidu.com/s/1YfjN1-SlF_7M8STZ-t3tkQ
    提取码:gzb4

    LabVIEW Image转Halcon Image函数:
    LabVIEW Image转Halcon Image.zip (399.23 KB, 下载次数: 4, 售价: 20 元)
    开发环境HALCON 19.11 32位版本,仅适用于32位版本,本示例不适用64位环境。
    LabVIEW 2020SP1+VDM2020SP1,以及转换为早期的2013/14/15/16/17/18/19版本。但是转换为Halcon图像时,作者认真验证过NI论坛上涉及的各种方法,发现只有ArrayMemInfo函数转换效果和适用性最好,但是从他人提供的信息来看,这个内部函数是LabVIEW 2017版以后才出现的。之前的版本没有此函数,所以作者这里保存的LV2013~2016版本,打开示例时,均会报错崩溃。如需要使用该转换函数,需要保证LabVIEW版本>=2017版本
    如果是更早版本的,则考虑使用其它方法,可参考:

    32位/64位自适应VI
    VDM to Halcon Image.vi将VDM图像转为Halcon图像32&64位环境自适应.zip (422.74 KB, 下载次数: 2, 售价: 50 元)
    本示例避免了32位和64位不能切换的问题,示例程序可以在LabVIEW的32位版本和64位版本中相互切换。当然,VI是可以自适应,但是Halcon环境本身是不能兼容切换的。当打开32位LV时,需要调用32位的Halcon;当打开64位的LV时,则调用64位的Halcon。同时内部调用了元组库等。做了两个转换函数,一个是转HImage,另一个是转HOperator的。
    QQ图片20240606183112.png
    32位环境RGB32彩色图像转换

    QQ图片20240606183116.png
    64位环境RGB32彩色图像转换
    QQ截图20240606183242.png
    32位环境U8灰度图像转换
    QQ图片20240606183118.png
    64位环境U8灰度图像转换

    LabVIEW Image转Halcon Image-LabVIEW and Halcon - NI Community原帖附件示例下载
    http://visionbbs.com/thread-28227-1-1.html


    回复

    使用道具 举报

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

    本版积分规则

    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-22 21:31

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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