完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
labview图片在从16位强制转换为8位后看起来要亮或暗
用相机捕捉了一幅16位图像,并用IMAQ Cast Image VI将其转换为8位图像。图像看起来变亮或变暗了。相机的比特深度是10位。这是为什么呢? 解答: 如果用10位的相机捕捉原始图像,那么在将其由16位表示转换为8位表示后,有几种原因会导致图像看上去有一定变化。IMAQ Cast Image VI有一个名为# Shifts的输入。虽然它是I32长整型,但其范围被强制在0到8的整数间。当LabVIEW将16位图像转换为8位图像时,它就将数据以这个输入所规定的位数进行移位,随后只用低8位表示新的图像。 编辑 添加图片注释,不超过 140 字(可选) 如果用比特深度为10位的相机捕捉图像,会有一个例外。保存图像的缓冲的比特深度同样将是显式的10位。当用转换函数转换为一幅8位图像时,如果# Shifts的输入是0,那么函数仍会将图像移动2位。这将使新的8位表示图像与原始图像看上去是相同的。如果# Shifts有其它非0的值,函数则会向左进行所规定位数的移位。因此,如果值为1的话,新的图像将会看上去更亮,值为0或2则会使图像看上去和原始图像一样,而当值大于2时图像则会显得比原图像更暗。 这在决定为转换函数结果使用什么目标缓存时,也有一定关系。比方说,如果你将一幅用10位相机拍摄的图像转换为8位图像,然后又转换回16位图像,那么根据你是重用同样的图像缓冲,还是创建新的缓冲,结果将会不同。如果你重用缓冲,你将会保留图像原有的10位比特深度。但在你将8位图像转换为16位图像时,转换函数不会将位数重新移回。因此,所有像素的值是不变的,但现在它们的比特深度为10而不是8。当你转换为8位图像时,首先进行移位,但当你转换回来时,它们将不会被移位回来。另一方面,如果你使用新的缓冲作为转换函数的目标,那么新的图像将会有相同的像素值,并且其比特深度仍将是8(尽管它是16位图像)。所以,它和原始图像看上去是一样的。 这里提供了一个VI范例来演示上面所描述的现象。可以进行以下试验:改变移位的位数,或是决定是否重用缓冲(注意:为了更清楚地观察重用缓冲和使用新的缓冲的区别,将# Shift设置为0或2)。这个范例应配合一台在MAX中配置以读取10位单色图像的相机使用。 |
|
相关推荐
|
|
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
1839 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1453 浏览 0 评论
1651 浏览 0 评论
关于labview2024版本的lvanlys.dll出错的问题
3665 浏览 3 评论
1562 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 17:00 , Processed in 0.617280 second(s), Total 68, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号