读取16位灰度TIFF文件的像素值(但只有前12位)

时间:2014-06-19 00:26:56

标签: c# tiff

我正在使用12位单色相机。它可以做8位但我需要额外的数据位用于某些像素周围的计算。所以我使用相机生成一个16位灰度TIFF文件(获取我需要的12位数据的唯一方法)。

每个像素(每个制造商)的内容是: 11111111 1111XXXX - 白色 00000000 0000XXXX - 黑色

其中X是随机的(同样是每个制造商)。

该文件看起来好像最后4位是随机的,但这是另一种问题(超出主题)。

我要做的是打开该文件,读取给定像素的像素值(前12位)(比如X,Y)。

我在线查看,但我能找到的所有项目都会读取所有16位......

编辑:我能够直接读取相机缓冲区,这使我可以访问整个16位。我最终得到了一个UInt16,我需要将其转换为12位数字。

1 个答案:

答案 0 :(得分:2)

无法直接从文件中读取部分字节。你需要读取你想要的每个像素,然后摆脱最后4位。 E.g。

int i; // some pixel from the image int pixel = i >> 4; // pixel > 0 for white

这使用位移来消除最后4位。