石鑫华视觉论坛

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

[原创] LabVIEW如何判断图像是否为二值图像

[复制链接]
  • TA的每日心情
    慵懒
    昨天 10:09
  • 签到天数: 3411 天

    连续签到: 13 天

    [LV.Master]2000FPS

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

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

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

    x
    LabVIEW如何判断图像是否为二值图像
    image1.png
    LabVIEW如何判断图像是否为二值图像视频号
    LabVIEW如何判断图像是否为二值图像B
    LabVIEWVDM模块中,可以比较轻松的得到图像的类型,如U8U16I16RGB32等,但是要如何判断一幅图像是否为二值图像呢?也就是阈值函数后的图像,本身只有0值和1值,或0203……0255这样的值,图像中仅有两个值的图像类型需要如何判断呢?VDM中并没有这样的判断函数。在VDM中二值图像是使用U8类型的灰度图像来描述的,在保存图像时,直接将其保存为U8类型的8位图像。所以,如获取图像信息函数、获取文件信息函数等是无法判断是否为二值图像的。
    image2.png
    获取图像信息函数的Imge Type中是没有二值图像类型输出的
    image3.png
    ImageType
    图像类型中,只有常规的U8I16U16等类型,并不包含二值图像类型。
    image4.png
    获取文件信息
    image5.png
    FileData Type
    而获取文件信息函数中的文件数据类型,则有二值类型,但是NI视觉保存图像时,二值图像也是直接按照U8类型来保存的,所以即使将二值图像保存到临时文件中再判断文件类型,也是无法判断出其是不是二值图像的。
    这里也可以借鉴获取文件信息函数中的文件数据类型的方式,来获取图像中的数据类型来判断是否为二值图像。在VDM中有一个IMAQ Histogram直方图函数,可以利用此函数的Histogram Report来判断图像是否二值图像:
    image6.png
    IMAQHistogram直方图函数
    Histogram Report中有灰度级别的像素数量的直方图、最小值、最大值、还有面积(整个图像的大小),那么就可以利用最小值、最大值以及面积来判断是否为二值图像。如果是二值图像,例如只有01的二值图像,最小值为0,最大值为1,分别索引最小值0的像素数量和最大值1的像素数量,然后二者的像素数量的相加和面积比较,如果相等,那么就是二值图像。如果不相等,那就是灰度图像。二值图像时,最小值的数量加上最大值的数量,总是等于图像的面积的像素总数的。而如果是灰度图像,3个以上的值时,最小值+最大值的数量肯定是小于面积的。当然,这里可能会存在一些特殊情况,例如一幅图像是全黑的0值、或者是全白的255值,又或者是其他什么值,也就是只有一个值的特殊情况。这时的图像,其实你即可以认为是一值图像、二值图像,也可以认为是U8的灰度图像,因为二值图像,其实也可以认为是U8的灰度图像,就如VDM中默认就是将其当成U8图像来对待一样。所以,这里也是可以加一个判断的,最小值和最大值是否相等,如果相等的时候,那么只需要取最小或最大中的一个值的数量即可,而不用求最小和最大的和了,求和的话,那就数量翻倍了。下面来看一下二值图像判断的VI实现方法:
    image7.png
    二值图像.vi
    二值图像.vi的实现方式。这里就是利用直方图函数来判断图像是否为二值图像的方法。下面来看一下效果:
    image8.png
    是否为二值图像.vi程序框图
    image9.png
    01二值图像判断是二值图像
    image10.png
    02二值图像判断:是二值图像
    image11.png
    0255二值图像判断:是二值图像
    image12.png
    U8灰度图像二值图像判断:不是二值图像
    image13.png
    0值全黑图像二值图像判断:是二值图像
    image14.png
    255值全白图像二值图像判断:是二值图像
    从上面的效果来看,是可以准确判断出二值图像的。而对于最后的只有一个值的图像判断,这里都是认为是二值图像,虽然都没有经过阈值函数,但是只有一个值,本身就是二值图像。可以认为一值图像是二值图像的特殊,而二值图像又是U8灰度图像的特殊,是子集包含关系。上面的效果中,无论是一值、二值还是U8灰度图像,在Image控件的图像信息中,总是显示为8-bit image
    vi代码2020和2010版本:
    LabVIEW如何判断图像是否为二值图像.zip (78.34 KB, 下载次数: 0, 售价: 2 元)
    回复

    使用道具 举报

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

    本版积分规则

    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 11:00

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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