首页 > 其他 > 详细

Halcon中将16位的图像转化为8位的图像

时间:2019-12-27 17:06:02      阅读:452      评论:0      收藏:0      [点我收藏+]

 

Halcon中Image有多种像素表示方式,这方面网上找到的资料比较少,有一张大恒图像培训的文档中提到过,感觉描述比较准确:

技术分享图片

里面有四种类型比较类似:uint2、int1、int2、int4。

区分起来很简单,带1表示8位,带2表示16位,带4表示32位,带u表示无符号(即无“负号”这种符号)

 

我用Photoshop生成一张0-255黑白渐变的黑白.bmp图片(尺寸256*256),如下:

技术分享图片

 

下面我想探究一下,这几种不同的图像格式,各自的灰度取值范围是多少。

1 read_image (Image, 8bit.bmp)                // byte: 0-255
2 
3 *转换格式观察
4 convert_image_type(Image,Image_int1,int1)   // 0-127
5 convert_image_type(Image,Image_direction,direction)   // 0-179、255

技术分享图片

 

通过convert_image_type转换为“int1”、“direction”格式时,图片发生了很大变化(如上图所示)。而转换为其他格式时,图像样子基本与原图(byte格式)差异不大,这是为什么呢?

 

因为“int1”是8位有符号数,如果类比计算机科学的话,取值范围应该是-128-127,显然无法兼容灰度范围在0-255的byte类型图像。“direction”应该也是类似原因。

而其他的“uint2”、“int2”、“int4”等,取值范围都不比“byte”小,因此能兼容“byte”格式的图片,所以转换以后,图像没有发生什么变化。

 

一般来说,从相机取出的图像通常都是8位的bmp图像,或者16位的bmp图像,它们对应Halcon中的格式分别是“byte”(8bits无符号)和“uint2”(16bits无符号)。

 

16位的图像虽然在Halcon中也能处理,但是用起来还是不熟悉,并且有部分算子不兼容16位图像(比如执行以后得不到预计中的结果)。并且16位的图像在上位机软件中处理、显示可能也会遇到兼容性问题,所以经常有将16位图像转为8位图像的需求。

 

Halcon中将16位的图像转化为8位的图像

原文:https://www.cnblogs.com/xh6300/p/12107990.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!