4. 医学影像像素数据解析
在DICOM影像AI服务集成中,真正进入模型推理的并不是DICOM文件本身,而是从(7FE0,0010) Pixel Data中还原出来的像素矩阵。围绕这一过程,需要同时处理传输语法、压缩格式、窗宽窗位、多帧组织方式以及增强型DICOM的维度映射。任何一环理解偏差,都会导致图像方向错误、灰度异常或帧序混乱。
一、Pixel Data与传输语法
Pixel Data是DICOM中承载图像采样值的核心元素。它的字节布局由传输语法(Transfer Syntax UID)决定,主要涉及三个维度:字节序、VR编码方式、是否压缩。常见传输语法包括:
1.2.840.10008.1.2:隐式VR小端,Pixel Data按隐式VR处理;1.2.840.10008.1.2.1:显式VR小端,最常用的未压缩语法;1.2.840.10008.1.2.2:显式VR大端,需交换字节序;1.2.840.10008.1.2.4.50/51:JPEG基线/扩展,有损压缩;1.2.840.10008.1.2.4.70:JPEG无损;1.2.840.10008.1.2.4.90/91:JPEG 2000无损/有损;1.2.840.10008.1.2.5:RLE无损压缩。
解析时先读取文件元信息中的Transfer Syntax UID,再据此选择解码路径。对于未压缩数据,需结合Bits Allocated、Bits Stored、High Bit、Pixel Representation确定每个采样值的位宽与符号性。例如Bits Allocated=16、Bits Stored=12、High Bit=11、Pixel Representation=1表示16位存储、有效12位、有符号整数。若忽略High Bit,可能把高位对齐数据误读为低位对齐,造成灰度整体偏移。
二、压缩格式与解码
压缩传输语法下,Pixel Data是封装后的码流,通常以Basic Offset Table加多个Fragment的形式组织。解码流程为:读取封装结构,按Fragment拼接码流,调用对应解码器(JPEG、JPEG-LS、JPEG 2000、RLE)还原为原始采样矩阵。JPEG 2000有损压缩在乳腺、CT等场景可能影响微小病灶的定量分析,AI服务应优先选择无损或近无损路径;若必须接收有损数据,应在预处理阶段记录压缩比与质量因子,作为模型输入质量标记。
三、窗宽窗位与灰度映射
DICOM存储的是原始采样值,显示时需要经过Rescale和VOI LUT两步。先按Rescale Slope与Rescale Intercept把存储值转换为模态值,例如CT的HU值:HU = stored * slope + intercept。再按窗宽(Window Width, WW)和窗位(Window Center, WC)映射到0~255显示灰度:
lower = WC - WW/2
upper = WC + WW/2
gray = clamp((HU - lower) / (upper - lower) * 255, 0, 255)
AI预处理通常不直接使用显示灰度,而是保留HU或模态值,再按模型训练时的窗设置做归一化。若训练使用肺窗(WW=1500, WC=-600),推理时也必须使用同一窗设置,否则输入分布偏移会导致性能下降。
四、多帧与增强型DICOM的读取
多帧图像通过NumberOfFrames声明帧数,Pixel Data按帧连续排列。读取时需按Rows × Columns × SamplesPerPixel × BitsAllocated/8计算单帧字节数,再按帧切分。若存在每帧不同的Rescale参数,必须逐帧应用,不能统一使用第一帧参数。
增强型DICOM(如Enhanced CT/MR)不再用多个独立SOP实例表达一个体数据,而是用单个SOP实例承载多帧,并通过Shared Functional Groups Sequence和Per-Frame Functional Groups Sequence描述每帧的几何与强度属性。读取时需解析Dimension Index Values、Stack ID、In-Stack Position Number,把帧映射回三维空间位置。若忽略这些维度信息,直接把帧序当作层序,可能造成体数据Z轴错位。
五、预处理关键检查点
在AI服务集成中,建议在预处理阶段固定以下检查顺序:
- 读取Transfer Syntax UID,确认解码路径;
- 校验
Bits Allocated、Bits Stored、High Bit、Pixel Representation,完成位对齐与符号扩展; - 按
Rescale Slope/Intercept转换为模态值; - 按训练窗设置做窗宽窗位映射或直接归一化;
- 根据
Image Orientation (Patient)与Image Position (Patient)校正方向; - 多帧按
NumberOfFrames切分,增强型按维度索引重建体数据; - 输出统一尺寸与通道顺序的张量,并记录预处理参数用于回溯。