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

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转化为其他格式,图像样子基本与原图(byte格式)差异不大,而转换为“int1”、“direction”格式时,图片发生了很大变化(如上图所示),这是为什么呢?

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

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

猜你喜欢

转载自www.cnblogs.com/xh6300/p/12107990.html