想象你是一位玉雕匠人。一台自动切割机(深度学习分割模型)沿着画好的线,把整块玉料(CT/MRI 影像)切出了器官粗坯——但它毕竟是机器,切出的“毛坯”布满碎渣、毛刺、裂纹和砂洞。你当然不敢把这样的毛坯直接递给客户(临床医生)。于是,你有一套世代相传的三步精修工序:先用细筛筛掉散落的碎石渣(连通域分析),再用砂轮打磨毛边、填平裂缝(形态学操作),最后用放大镜照着整块料子的纹理走向细细收尾(CRF 精修)。这套工序,就是医学影像分割的后处理。 对深度学习分割模型来说,原始输出往往是一张逐体素预测的概率图,阈值化后得到布满噪声的粗糙掩膜。后处理虽然不改变网络参数,却常常能带来 DSC 指标的显著提升——它是模型从“论文指标好看”走向“临床可用的稳定输出”的最后一块拼图。

岗位关联

对 AI 从业者的职业价值:分割模型的竞赛分数往往只差零点几个点,而一套扎实的后处理流水线能稳定提升 2~5 个百分点的 DSC,还能消除临床医生最反感的“碎块噪声”,这是医学影像算法落地必备的工程能力。

目录
  1. 可视化演示
  2. 为什么要后处理
  3. 连通域分析去碎块
  4. 形态学操作平滑
  5. CRF精修边界
  6. 工程工具链
  7. 评估与调参
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示医学影像分割后处理的核心机制,通过基础/核心/应用/扩展四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

医学影像分割后处理:分割后处 分割后处理概述 连通域分析去碎块 核心机制可视化 医学影像分割后处理整体架构与关键组件

为什么要后处理

自动切割机效率惊人,但切出的玉料毛坯从不让人省心:边缘留着锯齿状的刀痕,表面散落着小得几乎看不见的石渣,内部还偶尔藏着几处砂眼。如果直接把这样的毛坯交给客人,客人只会摇头退货。分割模型的输出正是这样一块“毛坯”——网络对每个体素独立打分,再按 0.5 阈值切成二值掩膜,于是产生了四类典型瑕疵:假阳性噪点(孤立亮点)、假阳性碎块(血管或钙化被误认成目标)、锯齿状边界(逐体素的阶梯效应)、内部假阴性空洞(模型置信度不足的区域)。

在医学影像里,这些瑕疵不是观感问题,而是临床风险:碎块会让医生误判病灶范围,空洞会让体积测量失真。因此我们需要一套“玉雕精修工序”来收拾残局——这正是分割后处理存在的意义。后处理不修改网络权重,而是像工匠的双手一样,在模型输出的基础上做几何与概率层面的修正。

要判断精修效果好不好,玉雕行当有自己的验收标准——DSC 系数就是分割界的“游标卡尺”:

毛坯是否合格,先上卡尺量一量。DSC 低于预期的掩膜,才需要后续三道工序逐一打磨。

DSC=2 ∣A∩B∣∣A∣+∣B∣\displaystyle \text{DSC} = \frac{2\,|A \cap B|}{|A| + |B|}
DSC(Dice Similarity Coefficient)衡量预测掩膜与金标准掩膜的重叠程度,取值 0~1,越接近 1 表明分割越准。
  1. A 与 B预测掩膜和金标准的体素集合,医学影像中体素就是三维像素。
    A:预测分割区域,B:金标准区域A: \text{预测分割区域},\quad B: \text{金标准区域}
  2. |·| 表示集合大小统计集合内体素的个数,代表区域的体积。
    ∣A∣=∑v∈A1|A| = \sum_{v \in A} 1
  3. A ∩ B 求交集找出两个集合共同覆盖的体素。
    A∩B={v∣v∈A 且 v∈B}A \cap B = \{ v \mid v \in A \ \text{且}\ v \in B \}
  4. 整体计算两倍交集除以两集合大小之和,几何上等于“两圆重叠面积”的归一化。
    DSC=2×交集体素数A体素数+B体素数\text{DSC} = \frac{2 \times \text{交集体素数}}{\text{A体素数} + \text{B体素数}}

连通域分析去碎块

玉雕师傅的第一道工序是筛渣。他会把毛坯放在一张细密的筛网上轻轻摇晃,那些散落的小石渣纷纷落下,只有足够大的玉料主体留在筛面上。这里的“筛网孔径”就是连通域分析的面积阈值。

把图像中的前景体素按“相邻关系”分组——上下左右相接的像素构成一个连通域。医学影像中常用两种邻域定义:4-邻域只承认上下左右四个方向相接,8-邻域额外承认对角相接。可以理解为:4-邻域是“只有邻居才是一家人”,8-邻域是“隔着墙角对望也算一家人”,标准更宽松,碎块更容易连成一片。

标记出所有连通域后,就给每个区域算出“体积”(体素数),然后执行筛分:体积小于阈值 T 的连通域整体置为背景,大于等于 T 的完整保留。这正是自动化程度最高的后处理步骤,也是过滤假阳性碎块最直接的手段。

筛掉小石渣,留下大玉料——连通域分析用一行数学判定,就清理掉了掩膜上九成肉眼可见的“小颗粒噪声”。

N4(p)={(x+1,y), (x−1,y), (x,y+1), (x,y−1)}\displaystyle N_4(p) = \{(x+1,y),\ (x-1,y),\ (x,y+1),\ (x,y-1)\}
N8(p)=N4(p)∪{(x+1,y+1), (x+1,y−1), (x−1,y+1), (x−1,y−1)}\displaystyle N_8(p) = N_4(p) \cup \{(x+1,y+1),\ (x+1,y-1),\ (x-1,y+1),\ (x-1,y-1)\}
面积阈值 T 通常取 26~100 体素,视层厚和器官大小而定。太大的阈值会把真实的小病灶一起筛掉。
  1. Cₖ 表示第 k 个连通域标记算法给每个区域一个编号。
    Ck={同属标签 k 的前景体素}\mathcal{C}_k = \{ \text{同属标签 } k \text{ 的前景体素} \}
  2. S(Cₖ) 计算体积统计该区域共有多少体素。
    S(Ck)=区域 k 的体素总数S(\mathcal{C}_k) = \text{区域 } k \text{ 的体素总数}
  3. 阈值 T 筛选体积大于等于 T 的区域被保留。
    S(Ck)≥TS(\mathcal{C}_k) \ge T
  4. 输出掩膜 M'保留区域的体素值为 1,其余为 0。
    M′(x,y)=1 仅当体素落在保留区域内M'(x,y) = 1 \ \text{仅当体素落在保留区域内}

形态学操作平滑

石渣筛掉后,轮到砂轮上场。玉雕师傅握着毛坯在砂轮上轻轻转动,凸起的毛刺被磨去,凹陷的砂眼被填补。形态学操作的“砂轮”,是一个称为结构元素的小窗口,它在掩膜上滑动,决定每次是“向外长一圈”还是“向内收一圈”。

两个基本动作是膨胀与腐蚀。膨胀让前景区域向外扩张一层,能填平小凹坑、连接断裂处;腐蚀让前景区域向内收缩一层,能削掉细小的毛刺突起。单独看,一个放大一个缩小,似乎只会让体积失真;但把两者组合,就产生了真正的“打磨”效果——开运算(先腐蚀后膨胀)削掉外部小突起,闭运算(先膨胀后腐蚀)填平内部小孔洞。这正是玉雕里“先粗磨后细磨”的工序逻辑。

有了这两个基本动作,组合出打磨工序:

砂轮磨过之后,毛坯的轮廓变得圆润光滑。形态学的妙处正在于此:它做的是“几何整形”,不改变器官的拓扑大结构,只把边界修到让人看着舒服、量着准确的程度。

\displaystyle A \oplus B = \{ z \mid (\hat{B})_z \cap A \neq \varnothing \},\qquadA \ominus B = \{ z \mid (B)_z \subseteq A \}
开运算去突起、闭运算填孔洞。医学影像中,器官内部血管漏检形成的小孔,用闭运算一次就能弥合。
  1. 开运算 A∘B先腐蚀后膨胀,顺序不可颠倒。
    A∘B=(A⊖B)⊕BA \circ B = (A \ominus B) \oplus B
  2. 闭运算 A•B先膨胀后腐蚀,填补内部空洞。
    A∙B=(A⊕B)⊖BA \bullet B = (A \oplus B) \ominus B
  3. 工程直觉膨胀把口子先合上,腐蚀把多长的部分再收回来,一进一出净效果就是“填洞不增体积”。

CRF精修边界

砂轮磨出的轮廓已经相当漂亮,但玉雕师傅仍不满足。他放下砂轮,拿起放大镜,沿着整块玉料的纹理走向细细审视——这里纹路该顺着走,那里颜色该自然过渡。这种“全局眼光”,正是连通域和形态学不具备的:前两者只看局部邻域,而 CRF(条件随机场)把整幅图像当成一张精密的网,从全局能量的角度给每个体素分配标签。

CRF 把分割问题转化为一个能量函数的最小化:能量由两部分组成。一元势能衡量“这个体素单独看更像病灶还是更像背景”,直接取自分割模型的输出概率;二元势能衡量“相邻两个体素的标签是否和谐”,若两个邻近体素灰度相似却标签不同,就施加惩罚,逼迫它们保持一致。

二元势中常用的高斯核同时比较位置和灰度:第 m 个核函数比较两个体素的空间距离与灰度差异,μ 表示“标签不同则惩罚、相同则零惩罚”的兼容函数。

这个能量函数没有解析解,工程上用平均场近似迭代求解:每一轮让每个体素“听取”周围邻居的意见,更新自己的标签置信度,迭代 5~10 次后收敛。就像玉雕师傅反复对照纹理,每一刀都参考周边玉色,最终让整块成品浑然一体。CRF 是三道工序中唯一“看见全局”的一步,也是让掩膜从“几何正确”走向“解剖自然”的关键。

E(x)=∑iψu(xi)+∑i<jψp(xi,xj)\displaystyle E(\mathbf{x}) = \sum_{i} \psi_u(x_i) + \sum_{i<j} \psi_p(x_i, x_j)
第一项只约束空间邻近性,第二项额外要求灰度一致——“靠得近且长得像的,应该是同一个类别”。
  1. pᵢ 与 Iᵢ体素的空间坐标和灰度值。
    pi:(xi,yi,zi),Ii:灰度p_i: (x_i, y_i, z_i),\quad I_i: \text{灰度}
  2. 兼容函数 μ标签相同为 0,标签不同为 1。
    μ(xi,xj)=[xi≠xj]\mu(x_i, x_j) = [x_i \ne x_j]
  3. 空间核距离越近惩罚越强,θα 控制空间尺度。
    exp⁡ ⁣(−∥pi−pj∥22θα2)\exp\!\left(-\frac{\|p_i-p_j\|^2}{2\theta_\alpha^2}\right)
  4. 双核联合空间相近且灰度相近时惩罚最强。
    exp⁡ ⁣(−∥pi−pj∥22θβ2−∥Ii−Ij∥22θγ2)\exp\!\left(-\frac{\|p_i-p_j\|^2}{2\theta_\beta^2} - \frac{\|I_i-I_j\|^2}{2\theta_\gamma^2}\right)

工程工具链

玉雕师傅的工作台上有三样趁手的家伙:粗坯切割机负责读入原石,砂轮负责打磨,放大镜负责精修。对应到代码世界,就是医学影像后处理的三件套工具。

第一件是 SimpleITK。它负责读写 NIfTI、DICOM 等医学影像格式,同时内置了连通域打标签(ConnectedComponent)、按体积重排序(RelabelComponent)等影像专用接口,还能读取体素间距(spacing)——这个信息对形态学操作至关重要。第二件是 scipy.ndimage,它提供 label、binary_opening、binary_closing 等通用形态学函数,轻量灵活,适合算法原型快速迭代。第三件是针对 CRF 的专用库或自行实现的平均场迭代器。

使用这些工具时,最需要警惕的是“维度思维”。医学影像本质是三维体数据,如果图省事逐层做 2D 处理,层与层之间的解剖连续性会被打破,出现“阶梯断层”。正确的做法是把整个体积当成一个 3D 数组,用 3D 结构元素处理。同时,影像的体素间距常常各向异性——层厚 5mm 而层内像素间距 1mm,直接套用各向同性的结构元素,z 方向的形态学效果会被无形放大。

工具链的成熟度决定了后处理流水线的稳定性。用好这三件套,就能把前两节的连通域和形态学、第三节的 CRF 串成一条工业级的精修产线。

各向异性比=max⁡(sx,sy,sz)min⁡(sx,sy,sz)\displaystyle \text{各向异性比} = \frac{\max(s_x, s_y, s_z)}{\min(s_x, s_y, s_z)}
各向异性比越大,形态学结构元素越应该按物理尺寸设计,而不是按体素个数设计。
  1. s_x, s_y, s_z 分别表示三个方向的体素间距CT 影像常见平面内 0.5~1mm,层厚 1~5mm。
    sx,sy,sz:各方向体素物理间距s_x, s_y, s_z: \text{各方向体素物理间距}
  2. 比值衡量畸变程度比值接近 1 是各向同性,远大于 1 则 z 方向被“拉长”。
    各向异性比=max⁡(sx,sy,sz)min⁡(sx,sy,sz)\text{各向异性比} = \frac{\max(s_x, s_y, s_z)}{\min(s_x, s_y, s_z)}
  3. 工程修正将结构元素的半径按物理毫米换算到体素个数。
    rvoxel=⌈rmmmin⁡(sx,sy,sz)⌉r_{\text{voxel}} = \left\lceil \frac{r_{\text{mm}}}{\min(s_x, s_y, s_z)} \right\rceil

评估与调参

玉雕成品最后要过验收关:卡尺量尺寸、电子秤称重量、强光下查裂纹。分割后处理同样需要一套定量验收标准,才能判断工序参数是否合理。

最常用的依然是 DSC(空间重叠率),它与 IoU 本质同源,都衡量预测与金标准的重叠程度。但在临床场景中,仅看重叠还不够——一个内部全是空洞、体积严重缩水的掩膜,DSC 可能仍然不低。因此还要加上体积误差指标,它直接反映医生最关心的“这个器官/病灶到底有多大”:

参数怎么调?玉雕老师傅的经验是“小步试探”:连通域面积阈值从 26 体素起试,形态学闭运算迭代 1~2 次,CRF 迭代 5~10 次,在验证集上做网格搜索,对比 DSC 与 VE 的联合表现。特别要警惕“过处理”——工序做过头,真实存在的小病灶被筛掉、器官体积被削掉一层,DSC 不升反降。后处理的目标是在保持真实结构完整的前提下祛除噪声,而不是把一切“不顺眼”的东西都磨掉。验收通过,这块玉料才真正配得上“成品”两个字。

VE=∣Vpred−Vgt∣Vgt×100%\displaystyle \text{VE} = \frac{|V_{\text{pred}} - V_{\text{gt}}|}{V_{\text{gt}}} \times 100\%
VE 超过 10% 通常会被临床认为体积测量不可靠。DSC 管“形状对不对”,VE 管“大小准不准”,两者缺一不可。
  1. V_pred 与 V_gt预测掩膜和金标准的体素总数。
    Vpred=∑1(M′=1),Vgt=∑1(Mgt=1)V_{\text{pred}} = \sum \mathbf{1}(M' = 1),\quad V_{\text{gt}} = \sum \mathbf{1}(M_{\text{gt}} = 1)
  2. 差值取绝对值只关心偏差大小,不区分高估还是低估。
    ∣Vpred−Vgt∣|V_{\text{pred}} - V_{\text{gt}}|
  3. 归一化并转百分比以金标准体积为基准,得到相对误差。
    VE=∣Vpred−Vgt∣Vgt×100%\text{VE} = \frac{|V_{\text{pred}} - V_{\text{gt}}|}{V_{\text{gt}}} \times 100\%

AI 应用场景

肝脏肿瘤 CT 分割的后处理流水线

阶段:分割模型推理后的输出精修环节

解决的问题:3D U-Net 在门静脉期 CT 上分割肝肿瘤时,小血管和钙化点常被误判为肿瘤,产生大量假阳性碎块;肿瘤边界也因低对比度呈现锯齿状。直接输出给临床,医生需要手动删掉几十个碎块,耗时且容易漏诊。

具体案例:某影像 AI 公司在肝脏肿瘤辅助诊断系统中,对模型输出的概率图依次执行:连通域分析(剔除小于 50 体素的碎块)→ 形态学闭运算(弥合肿瘤内部坏死灶导致的空洞)→ 全连接 CRF 精修(利用 CT 灰度边界收紧轮廓)。后处理使肿瘤分割 DSC 从 0.86 提升到 0.90,单例假阳性碎块数从平均 23 个降到 1 个以内,医生阅片效率提升约 40%。

脑肿瘤 MRI 亚区分割的类别一致性约束

阶段:多类分割输出的后处理阶段

解决的问题:脑肿瘤包含水肿、增强核心、坏死核多个亚区,逐体素独立分类常导致同一解剖结构内标签跳变(如坏死核里冒出几个“增强核心”像素)。这种类别噪声严重影响肿瘤体积的临床测量。

具体案例:BraTS 挑战赛的参赛方案中,团队在 3D U-Net 输出后引入多类 CRF:一元势用各类别的预测概率,二元势约束空间邻近且 MRI 灰度相似的体素必须属于同一亚区。迭代 8 次后,增强核心的 DSC 从 0.78 升至 0.82,亚区标签的“椒盐跳变”基本消失,生成的肿瘤体积报告可直接用于术前评估。

心脏 MRI 心室分割的连续性与射血分数计算

阶段:分割结果后处理与指标计算环节

解决的问题:心脏电影 MRI 逐帧分割心室时,单帧输出常在心内膜边界出现断裂,导致心腔不连续,进而使射血分数(EF)计算出现明显波动。

具体案例:某心血管影像分析平台对左心室分割结果先做 3D 连通域分析,只看体积最大的心腔区域;再用球形结构元素做闭运算弥合乳头肌附近的小断裂;最后用 CRF 沿心肌边界精修。处理后 EF 值与超声金标准的平均偏差从 8% 降到 3% 以内,达到临床报告可接受范围。

Python 演示

python50 行
import numpy as npfrom scipy import ndimage  def dice(a, b):    """计算两个二值掩膜的 DSC 系数"""    inter = np.logical_and(a > 0, b > 0).sum()    return 2.0 * inter / (a.sum() + b.sum())  def postprocess(pred, min_size=64, closing_iter=1, crf_iter=5):    """分割后处理流水线: 连通域过滤 - 形态学闭运算 - 邻域投票精修"""    binary = (pred > 0.5).astype(np.uint8)     # 1 连通域分析: 统计每个连通区域体素数, 保留大于阈值的区域    labels, num = ndimage.label(binary)    sizes = ndimage.sum(binary, labels, range(1, num + 1))    keep = np.zeros(num + 1, dtype=bool)    for i in range(1, num + 1):        if sizes[i - 1] >= min_size:            keep[i] = True    keep[0] = True    filtered = keep[labels].astype(np.uint8)     # 2 形态学闭运算: 弥合内部小孔并平滑边界    struct = ndimage.generate_binary_structure(3, 2)    closed = filtered    for _ in range(closing_iter):        closed = ndimage.binary_closing(closed, structure=struct).astype(np.uint8)     # 3 简易 CRF 精修: 用 3x3x3 邻域平均场近似迭代更新    refined = closed.astype(np.float32)    for _ in range(crf_iter):        nb = ndimage.uniform_filter(refined, size=3)        refined = 0.5 * refined + 0.5 * nb    return (refined > 0.5).astype(np.uint8)  if __name__ == "__main__":    rng = np.random.default_rng(42)    zz, yy, xx = np.mgrid[0:64, 0:64, 0:64]    truth = (((xx - 30) / 14) ** 2 + ((yy - 32) / 18) ** 2 + ((zz - 32) / 20) ** 2 <= 1).astype(np.uint8)    # 模拟模型输出: 撒噪点 + 挖孔洞    pred = truth.copy()    pred[rng.random(pred.shape) < 0.012] = 1    hole = truth > 0    pred[hole & (rng.random(pred.shape) < 0.10)] = 0    cleaned = postprocess(pred)    print("DSC before = %.4f" % dice(pred, truth))    print("DSC after  = %.4f" % dice(cleaned, truth))
目的:用合成体积数据模拟粗糙分割输出,演示完整的后处理三件套,并量化 DSC 提升幅度。
  1. labels, num = ndimage.label(binary)给每个独立连通区域编上从 1 到 num 的编号。
  2. sizes = ndimage.sum(binary, labels, range(1, num + 1))统计每个编号区域的体素总数,作为“筛分”依据。
  3. filtered = keep[labels].astype(np.uint8)用“保留名单”做索引映射,一步替换掉所有小碎块。
  4. ndimage.generate_binary_structure(3, 2)生成 3D 邻接结构,参数 2 表示含对角,共 26 邻域。
  5. ndimage.binary_closing(closed, structure=struct)执行闭运算,先膨胀后腐蚀,弥合内部孔洞。
  6. ndimage.uniform_filter(refined, size=3)对体素邻域取平均,模拟 CRF 平均场迭代中“听取邻居意见”的过程。

常见误区

误区既然小碎块是噪声,那把连通域面积阈值设成 500、闭运算迭代 10 次,肯定能获得最干净的分割结果。

正解后处理是一把双刃剑。阈值设得过大,会把真实存在的小病灶(如 2~3mm 的转移瘤结节)连同噪声一起删掉;闭运算迭代过多,器官边界会整体外扩,体积被系统性高估。正确做法是在验证集上做参数网格搜索,用 DSC + VE 联合指标挑选参数,而不是盲目追求“干净”。

为何常见:人眼对“噪声被清除”的视觉改善非常敏感,却不容易察觉体积被静悄悄放大,于是容易陷入“越干净越好”的直觉陷阱。

误区CT 数据就是一堆切片图,逐层用 2D 连通域和 2D 形态学处理,效果应该和 3D 处理差不多。

正解医学影像是三维体数据,器官在层间是连续的。逐层独立处理会忽略 z 方向的邻接关系,同一器官在相邻切片上可能被标记成不同连通域,导致层间断裂、边界出现阶梯状伪影。必须用 3D 结构元素和 3D 连通域算法,才能保持解剖结构的空间连续性。

为何常见:模型训练时常用 2D 切片增强数据,开发者习惯了“切片视角”,容易忘记推理时面对的是完整的 3D 体积。

误区CRF 听起来很高级,只要训练好的模型输出不理想,套上 CRF 就能自动修复所有边界问题。

正解CRF 依赖图像自身的外观一致性。如果原始图像对比度极低、噪声严重,二元势会把错误的标签在相似像素间“传染”开,反而扩大误差区域。此外 CRF 的超参数(权重 w、尺度 θ)需要针对具体影像模态调优,不当配置下 DSC 可能不升反降。

为何常见:论文里 CRF 总是作为“精度提升器”出现,读者容易忽略它同样是一个需要调参、有失效模式的算法组件。

误区模型把肿瘤漏掉了一大半,没关系,用形态学膨胀把区域补大一点,再用闭运算连起来就行了。

正解后处理只能做“边界级修正”,做不了“区域级重构”。当模型大面积漏检时,剩余的正确像素可能连阈值过滤都过不了,膨胀只会放大噪声而非补回真实结构。后处理改善的是掩膜的质量,而非模型的召回能力——模型欠拟合必须回到训练环节解决。

为何常见:后处理代码改起来快、验证也快,容易让人产生“先靠后处理兜底”的侥幸心理,掩盖了模型本身需要迭代的事实。

误区后处理之后 DSC 从 0.82 涨到 0.88,说明这个分割结果可以直接拿给医生用了。

正解DSC 只反映体素重叠比例,对边界细节不敏感。一个整体重叠不错但边缘整体外扩 3mm 的掩膜,DSC 可能依然很高,但临床测量(如肿瘤最大径、器官体积)已经失真。临床验收必须综合 DSC、体积误差、边界距离指标(如 HD95),并由影像科医生做主观评分。

为何常见:学术竞赛用 DSC 排名,从业者容易把单指标当作“金标准”,忽略了临床场景是多指标、多角色的综合决策。

面试题

Q1. 医学影像分割后处理最合理的流程顺序是?

单选题 · easy

  • A.形态学操作 -> CRF -> 连通域过滤
  • B.连通域过滤 -> 形态学操作 -> CRF← 正确答案
  • C.CRF -> 连通域过滤 -> 形态学操作
  • D.直接交付不进行任何后处理

答案:B。正确顺序是先筛碎渣(连通域过滤),再磨边(形态学操作),最后全局精修(CRF)。顺序颠倒会让后一步的局部修改破坏前一步的全局结果,比如先做 CRF 再删碎块,可能把 CRF 精心修正的边界又删掉了。

Q2. 关于 8-邻域与 4-邻域的连通域分析,下列说法正确的是?

单选题 · mid

  • A.8-邻域把对角相邻像素视为同一区域← 正确答案
  • B.4-邻域把对角像素也视为同一区域
  • C.8-邻域与 4-邻域标记结果完全相同
  • D.8-邻域分割出的连通域面积更小

答案:A。8-邻域在上下左右之外额外承认四个对角邻居,连通标准更宽松,因此小碎块更容易被连成一片,产生的连通域面积通常更大而不是更小。

Q3. 形态学开运算的定义是?

单选题 · easy

  • A.开运算是先腐蚀后膨胀的组合← 正确答案
  • B.开运算是先膨胀后腐蚀的组合
  • C.开运算只执行腐蚀不执行膨胀
  • D.开运算只执行膨胀不执行腐蚀

答案:A。开运算 A∘B = (A⊖B)⊕B,先腐蚀削掉外部小突起,再膨胀恢复原有尺寸。这就像玉雕先磨掉毛刺、再修回原形,净效果是去除小突起而不改变大轮廓。

Q4. 闭运算在医学影像分割后处理中的主要作用是?

单选题 · mid

  • A.闭运算用于填充内部小孔并弥合裂缝← 正确答案
  • B.闭运算用于削除掩膜外部的小突起
  • C.闭运算用于把一个连通域拆成多个
  • D.闭运算用于放大图像并增强分辨率

答案:A。闭运算 A•B = (A⊕B)⊖B,先膨胀把孔洞和小裂缝“合上口子”,再腐蚀恢复尺寸。器官内部血管漏检造成的假阴性小空洞,正是靠闭运算来弥合的。

Q5. 关于 CRF 的能量函数,下列说法正确的有?

多选题 · mid

  • A.一元势函数与概率图直接相关← 正确答案
  • B.二元势函数约束相邻像素一致性← 正确答案
  • C.能量函数只包含一元势一项
  • D.能量函数只包含二元势一项

答案:AB。CRF 能量函数由一元势和二元势共同组成。一元势 E = -log P(xᵢ) 吸收模型输出的类别概率,二元势对“邻近且相似却不同标签”的体素对施加惩罚,二者缺一不可。

Q6. 在 DSC = 2|A∩B| / (|A|+|B|) 中,|A∩B| 表示?

单选题 · hard

  • A.预测与金标准两者重合的体素数← 正确答案
  • B.预测掩膜包含的全部体素总数
  • C.金标准掩膜包含的全部体素总数
  • D.预测与金标准两者并集的体素数

答案:A。|A∩B| 是预测掩膜 A 与金标准 B 共同覆盖的体素数。分子是两倍的重合体素数,分母是两者的体素总和。DSC=1 表示完全重合,DSC=0 表示毫无重叠。

Q7. 下列工具中,适合用于医学影像分割后处理的有?

多选题 · mid

  • A.SimpleITK 提供医学影像读写接口← 正确答案
  • B.scipy.ndimage 提供形态学操作函数← 正确答案
  • C.pandas 提供三维体积滤波与标注
  • D.matplotlib 提供连通域标记算法

答案:AB。SimpleITK 负责 NIfTI/DICOM 读写与影像专用接口,scipy.ndimage 提供 label、binary_closing 等形态学函数。pandas 是表格处理库,matplotlib 是绘图库,都不提供体数据滤波或连通域标记能力。

Q8. 处理 3D 医学影像时,为什么要特别关注体素间距(spacing)?

单选题 · extreme

  • A.各向异性分辨率会导致各方向滤波效果不一致← 正确答案
  • B.spacing 越大意味着图像空间分辨率越高
  • C.spacing 只影响文件大小不影响算法结果
  • D.spacing 由分割模型训练时自动决定

答案:A。CT 影像常见层厚 5mm 而层内像素间距 1mm,若结构元素按体素个数设计,z 方向的形态学效果会被无形放大数倍。只有按物理毫米换算结构元素半径,才能保证三个方向的平滑程度一致。

Q9. 与逐体素独立分类相比,CRF 精修分割结果的核心优势是?

单选题 · hard

  • A.在全局能量意义下分配各像素标签← 正确答案
  • B.对每个像素独立地取最大概率类别
  • C.仅依赖形态学结构元素做局部修改
  • D.只对图像做高斯滤波后重新阈值化

答案:A。CRF 把整幅图像建模为图结构,一元势吸收模型概率、二元势协调相邻关系,通过最小化全局能量来分配标签。它不像逐体素分类那样“各自为政”,而是让标签分配在整体上协调一致。

Q10. 后处理参数设置过度,可能带来哪些危害?

多选题 · hard

  • A.真实存在的细小解剖结构被误删← 正确答案
  • B.器官整体体积被过度收缩或扩张← 正确答案
  • C.相邻层之间的解剖连续性被破坏← 正确答案
  • D.后处理耗时增加导致无法上线

答案:ABC。阈值过大或迭代过多,会删除真实的小病灶(A)、系统性改变器官体积(B);忽视 3D 连续性而逐层处理会造成层间断层(C)。耗时增加属于工程优化问题,不属于过度后处理的病理性危害。