TA的每日心情 | 慵懒 昨天 10:09 |
---|
签到天数: 3411 天 连续签到: 13 天 [LV.Master]2000FPS
|
注册登陆后可查看附件和大图,以及购买相关内容
您需要 登录 才可以下载或查看,没有账号?注册会员
x
那天有人问我,LabVIEW如何保存浮点型图像?因为我们常用的基本都是U8类型的图像,连U16、I16之类的都很少用到,更别说浮点型了。这个在我的印象中,好像只有复数CSG和单精度浮点型图像SGL这种图像类型是浮点型的,而且是在LabVIEW环境中可以看到有支持相应的图像类型的功能:
如何保存浮点
问的如何保存浮点型图像
浮点类型
LabVIEW+NI VISION环境支持的浮点类型有单精度SGL的灰度以及CSG的复数图像。
但是我们查看Read File和Write File函数可以知道,Read File函数可以读SGL、CSG等类型的图像,只是不知道这个如果读了浮点型图像,到底是不是用浮点型来表示,还是直接截取整数部分来显示,也不是很清楚,因为我手上连一张所谓的浮点型图像都没有,没有办法测试。
Read File
读取文件上有写SGL和CSG类型的图像
读取文件功能函数
另外对于Image显示控件,看其Palette,也没有明显的表示有可以显示SGL、CSG类型的图像,如果能显示,那么是什么类型呢?我们在这里可以用两个For循环模拟生成一幅400-300的SGL浮点型图像来看看效果
SGL浮点形图像
我们看到,对于SGL浮点型,其显示为Float图像类型,Palette用的是仍然是Grayscale灰度类型,显示的值则为小数类型。
而对于保存图像函数,则完全连SGL、CSG的类型都不支持,只能整型的:
Write File
Write File PNG with Vision info
写文件函数是个多态VI,可以保存到BMP、JPG、JP2、PNG、PNG带视觉信息、TIFF等类型的图像,参看其支持的图像类型,PNG带视觉信息的类型支持的图像类型是最多的,但是不支持SGL和CSG类型。我们可以用上面生成的SGL图像来保存一下看看效果:
直接保存SGL出错,无效的图像类型,不能保存SGL
将SGL强制转换为U8后,则可以保存。保存后的图像为8位的图像类型,不再保留浮点数据。
保存后的图像属性
保存后的图像属性
通过上面的验证,那么我们也就知道了,要想通过NI VISION读浮点型的图像,是可以读的,也可以显示。但是并不能用写函数来保存浮点型的图像。
而要想保存浮点型图像或其数据类型,那么我们还得想一下办法才行。
方法一:
|
|