当你看这个帖子的时候,假设你在因为这个问题而困惑。
在使用这个函数的时候纠结了很久,各种google、百度都没查到,测试了好多次,并计算了许多二进制像素值,才终于搞明白,getoutdata()里的参数到底应该怎么写;
首先弄清楚dicom文件中单个像素值是怎么存的,说下一般的情况,以16位二进制方式存储,分析需要通过pixel模块的,bitstored, bitsallocated, highbit, pixel representation这四个值。
- pixel representation
pixel representation的值有0和1两种,0代表无符号,1代表有符号,比如二进制1001如果是无符号存储,表示9,如果是有符号(第一位代表符号位)的话就是-1;二进制0001不管是有符号还是无符号都代表1。 - bitsallocated
bitsallocated表示用多少位来储存,通俗来说就是开辟多少空间来存一个像素值,bitsallocated的存在是为了凑整,8或16或32,方便二进制计算. - bitstored
在CT中一般bitsallocated=16位,因为16位所占空间很大,肯定是用不完的,所以又有bitstored这个值来表示用bitsallocated中的多少位来存像素值,剩余几位全部置0就行了。 - highbit
因为像素值可能是有符号或无符号,highbit这个值的存在是为了确定符号位。