4. OCT图像预处理工程
原始OCT图像在进入分层与定量分析之前,几乎不可能直接使用。无论是时域OCT还是频域OCT,探测器采集到的都是干涉光谱经傅里叶变换后的复值信号,其幅度图天然带有散斑噪声、深度方向灵敏度衰减、背景偏置、强度量纲不统一等问题;再加上眼球运动、探头抖动、参考臂与样品臂光程差漂移,最终呈现的B-scan往往存在上下错位、横向抖动和层间强度不一致。预处理的目标不是"让图好看",而是把图像变换到一个几何一致、强度可比、噪声可控的中间表示,使后续的视网膜层分割、厚度测量和三维重建具有可重复的输入。
本节围绕一条可复现的预处理流水线展开,依次处理:去噪、去偏置、强度归一化、运动伪影校正、Z-offset校正、横向对齐与三维体数据重采样。需要强调的是,这些步骤的顺序并非随意,它直接影响最终定量结果的可比性。
一、去噪:先抑制散斑,再谈结构
OCT的散斑噪声是相干成像的固有产物,表现为乘性、颗粒状、与信号强度相关的随机起伏。工程上常用的策略有三类:空域滤波(如中值、双边、非局部均值)、频域/变换域滤波(小波阈值、BM3D)以及基于深度学习的去噪网络。选择时要在噪声抑制与层边界保留之间权衡:过度平滑会模糊内界膜与神经纤维层之间的弱反射界面,直接损害厚度测量。
一个可复现的基线做法是:先做3×3中值滤波去除椒盐样离群点,再用双边滤波(空间σ=2,灰度σ=0.1,按归一化强度)抑制散斑,同时保留边缘。若追求更高质量,可替换为BM3D,但需固定随机种子与参数,保证同一批数据结果一致。
二、去偏置与强度归一化:让强度可比
去偏置针对的是背景噪声底和深度方向灵敏度衰减。频域OCT的灵敏度随深度下降,深层视网膜反射被系统性压低。常用做法是估计每列(A-line)的背景均值并从信号中减去,再按深度做灵敏度补偿曲线校正。强度归一化则把不同设备、不同增益、不同曝光下的强度映射到统一区间,例如按每幅B-scan的1%和99%分位数做线性拉伸到[0,1],或按参考反射体做绝对标定。
三、运动伪影校正、Z-offset校正与横向对齐
活体成像中,眼球微动和呼吸会引起B-scan之间的整体平移与轴向漂移。Z-offset校正解决的是同一体数据内不同B-scan之间参考臂光程差变化导致的深度方向整体偏移;横向对齐解决的是相邻B-scan之间因横向抖动造成的结构错位。典型流程是:以某一帧为参考,通过互相关估计每帧的轴向偏移量并做整数/亚像素平移;横向则通过相邻帧的相似性度量(如归一化互相关)估计位移并累积校正。对于三维体数据,还需在慢扫描方向做一致性约束,避免误差累积。
四、三维体数据重采样
OCT体数据在快扫描(B-scan内)、慢扫描(B-scan间)和深度方向上的采样间距通常不一致,且可能存在非均匀采样。重采样把体数据映射到各向同性或指定物理间距的规则网格,便于三维渲染、体积测量和跨设备比较。常用方法包括三线性插值、样条插值,重采样间距需根据实际扫描协议设定,例如快扫描方向2 μm、慢扫描方向20 μm、深度方向3.5 μm时,可统一重采样到5 μm各向同性网格。
五、可复现流水线的工程要点
要让上述步骤真正可复现,需要把每一步的参数、输入输出和中间结果都固定下来。建议用配置文件描述流水线,例如:
pipeline:
denoise:
method: bilateral
kernel: 3
sigma_space: 2.0
sigma_range: 0.1
debias:
background_percentile: 5
depth_compensation: true
normalize:
low_percentile: 1
high_percentile: 99
output_range: [0, 1]
motion:
reference_frame: 0
axial_search: 20
lateral_search: 10
resample:
target_spacing_um: [5, 5, 5]
interpolation: trilinear
每次运行记录输入文件哈希、参数版本和输出校验值,便于回溯。对于批量数据,建议先在小样本上验证参数,再全量执行;同时保留处理前后的B-scan对比图,作为质量检查依据。
预处理完成后,应输出三类结果:处理后的体数据(供分割与测量)、处理日志(参数与统计量)、以及质量报告(如信噪比提升、层边界锐度变化)。这些输出共同构成后续分层与定量分析的可靠基础。