石鑫华视觉论坛

 找回密码
 注册会员
查看: 229|回复: 1

[原创] LabVIEW如何估计图像的位深

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

    连续签到: 14 天

    [LV.Master]2000FPS

     楼主| 发表于 2024-4-18 14:09:19 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

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

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

    x
    LabVIEW如何估计图像的位深
    image1.png
    LabVIEW如何估计图像的位深视频号
    LabVIEW如何估计图像的位深B
    NI视觉助手中,打开16位图像时,有一个估计图像的位深的功能,其是基于图像的值来估计的。原理上就是根据当前图像的最大值来估计图像可能的位深,例如说10位深的相机最大输出值就只能是1023,那么得到的图像的最大值如果没有超过1023,那么视觉助手就认为这个图像是10位的;而如果是12位深的相机最大输出值则是4095,如果图像中有值在1024~4095之间,那么就认为这个图像是12位的深度。在LabVIEW Vision的环境中,则没有这样的位深估计函数。要想实现这样的功能,那就只能自己写位深估计函数。当然实现起来也是非常简单的,和视觉助手中的原理一样,根据图像中的最大值做判断即可。
    image2.png
    视觉助手中基于图像的值估计位深
    image3.png
    估计位深前面板和接线端
    image4.png
    估计位深.vi程序框图
    估计位深函数的实现也是比较简单的,使用直方图函数得到图像中的最大值,然后根据最大值的区间范围来判断图像的位深。
    image5.png
    直方图函数
    image6.png
    直方图函数的Histogram Report中有最大值的输出
    得到最大值后,就可以根据最大值所在的区间范围来判断图像的位深了。Histogram Report中的Maximal ValueSGL单精度浮点形,非整数类型的数据,是不能直接用于比较是否相等的,所以这里加了一个强制转换为U16的类型,将SGL转换为U16,其实不加这个转换也是可以的,直接将SGL连接到后面的区间判断的条件结构中,会自动强制转换为整数,不过这时转换得到的数据类型是I32。这里为了规范,还是直接强制转换为了U16。之后就是区间判断了。8位深的图像值范围是0~25510位深的图像值范围是0~102312位深的图像值范围是0~409514位深的图像值范围是0~1638316位深的图像值范围是0~65535。这里不考虑9位、11位、13位、15位这样的奇数位的,确实是没有看到过奇数位深度的。虽然理论上也是可以有奇数位的。另外,像1416这样的有没有必要判断,需要自行考虑,实际应用中,作者就没有看到过有哪款相机的ADC能有14位或16位的,能到12位的就已经是比较好的了,有一些差一些的图像传感器,ADC还只有10位的。当然,在视觉助手中,因为读取图像的U16I16,总是认为图像是16位而非8位,所以其在估计位深时,即使最大值小于255,也认为是10位的,并不考虑8位,在我们这里讨论时,则将小于255的图像估计为8位。下面来看一下效果:
    image7.png
    LabVIEW如何估计图像的位深.vi程序框图
    image8.png
    最大值176估计位深是8
    image9.png
    最大值750估计位深是10
    image10.png
    最大值1227估计位深是12
    image11.png
    最大值1799估计位深是12
    image12.png
    最大值2842估计位深是12
    image13.png
    最大值4095估计位深是12
    image14.png
    最大值7095估计位深是14
    最后的最大值7095是在最大4095的图像基础上,使用了加法,加了3000的常量后得到的。实际的12位的芯片的工业相机输出的最大值只能是4095的图像。
    得到了位深函数后,可以在后面使用我们前面介绍的视频,来显示RGB64位图像,或者是设置图像的位深等操作。
    image15.png
    ​​LabVIEW如何显示RGB64彩色图像视频号
    在后面可以加设置位深的函数来设置不同的位深,以显示不同的效果:
    image16.png
    估计位深+设置位深
    要设置位深,需要将Image控件的调色板模式改为彩虹模式或其他非二值、灰度图像,同时将16位映射方式改为默认值或Most Significant Bits最高有效位,如果是使用是全动态或其他方式,则可能无法区别显示设置的位深的效果。
    image17.png
    16位图像显示映射的转换方法改为默认值或最高有效位
    下面是同一幅图像设置不同位深时的彩虹调色板的显示的不同效果:
    image18.png
    设置位深为12位时效果
    image19.png
    设置位深为13位时的效果
    image20.png
    设置位深为14位时的效果
    image21.png
    设置位深为15位时的效果
    image22.png
    设置位深为16位时的效果
    VI版本LV2020SP1:
    LabVIEW如何估计图像的位深.zip (43.64 KB, 下载次数: 0, 售价: 2 元)

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 357 天

    连续签到: 1 天

    [LV.8]800PFS

    发表于 2024-12-4 10:12:52 | 显示全部楼层 来自:安徽省合肥市 电信分公司IDC机房
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    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 22:05

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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