
人脑可以毫不费力地将一个视觉场景分割成不同的物体,这个基本过程被称为分割。教会计算机执行这项任务是计算机视觉领域的核心挑战。区域生长为这一问题提供了一个直观而强大的解决方案。它遵循一个简单的自下而上的原则:从一个已知属于某个物体的点开始向外扩展,收集相邻的、相似的点,直到找到物体的边界。这种方法模仿了我们概念上将部分组合成整体的方式。
本文深入探讨了区域生长方法的精妙理论和多样化应用。在第一章“原理与机制”中,我们将剖析该算法的核心组成部分,包括种子的作用、同质性准则,以及它与图论和 Prim 算法之间令人惊讶的联系。我们还将揭示由对比度噪声比决定的基本统计规律,这些规律决定了分割的最终成败。随后,在“应用与跨学科联系”一章中,我们将展示该算法如何作为实用工具服务于医学成像和虚拟手术等领域,并探讨其在自然界中的深刻概念共通性,从材料的晶体化到新药的设计。
我们是如何看见的?当您看一张照片,比如草原背景下的一只豹子,您的大脑几乎能瞬间将动物从背景中分离出来。您将那片黄褐色带斑点的区域感知为一个单一实体——豹子,并将其与由绿色和黄色草叶组成的区域区分开来。这种将所见之物划分成有意义的组别的行为称为分割(segmentation),它是生物视觉和计算机视觉的基石。但是,您该如何教会计算机执行这个看似毫不费力的技巧呢?
最直观的方法是模仿我们描述这个过程的方式:“找到一个你确定属于豹子的点,然后向外扩展,将所有看起来相似的相邻点都收集起来。”这个简单而强大的思想就是区域生长(region growing)的精髓。这是一种自下而上的方法,就像砌一幅马赛克画,不是从宏伟的蓝图开始,而是从单块瓷砖入手,不断添加颜色和纹理相匹配的相邻瓷砖。
区域生长的核心建立在两个基本概念之上:种子(seeds)和同质性准则(homogeneity criterion)。
您首先选择一个或多个起始点,即“种子”。种子是您有把握地认定属于您希望分割的物体的像素。如果您是一位放射科医生,试图在医学扫描图像中测量一个肿瘤,您可能会在病灶的正中央放置一个种子像素。这个种子就构成了最初的微小区域。
接着,该区域开始生长。它会检查其直接相邻的像素。对于每个相邻像素,它会问一个简单的问题:“你是我们中的一员吗?”用于回答这个问题的规则就是同质性准则。这个准则是一种形式化的相似性度量。它可以简单到“你的亮度值是否与我的接近?”,也可能涉及更复杂的属性,如颜色、纹理或其他计算出的属性。如果一个相邻像素满足该准则,它就被并入该区域。区域变大,有了新的边界,然后这个过程重复进行。生长过程会持续下去,就像在过饱和溶液中形成的晶体一样,直到遇到不再足够相似而无法加入的像素。这个不相似性的前沿就成为物体的最终边界。
这个描述虽然直观,但隐藏了一个关键细节。在任何特定时刻,一个正在生长的区域可能接触到成百上千个相邻像素。它应该考虑先添加哪一个呢?为了使这个过程有序且有原则,我们可以借鉴一个看似不相关领域的绝妙思想:图论。
想象一下,图像是一片崎岖的地貌,其中每个像素的位置是地图上的一个地点,其强度(亮度)是其海拔。在两个相邻像素之间移动的“成本”就是它们海拔的绝对差值,即 。我们的区域就像一小队探险者,最初聚集在一个种子像素上。为了扩展他们的领地,他们会勘察所有相邻的、未探索的地点,并找出最“容易”到达的那个——即通过海拔变化最小的路径连接的那个。他们迈出那唯一、最容易的一步,将新地点加入他们的领地,然后重复这个过程。
这种“永远选择最佳下一步”的策略被称为贪心算法(greedy algorithm)。值得注意的是,这个确切的过程是 Prim 算法的一个变体,Prim 算法是图论中用于寻找最小生成树(Minimum Spanning Tree, MST)的经典方法。MST 是连接图中所有节点的最廉价网络。在我们的例子中,区域生长算法本质上是在构建一个像素的“最小生成树”,其中的连接之所以廉价,是因为像素是相似的。这揭示了一种深刻的统一性:那个可以设计最高效电信网络的贪心原则,同样可以用来在 MRI 扫描中找到肿瘤。
当然,我们不希望连接图像中的所有像素。我们希望生长在到达物体边缘时停止。这通过引入一个阈值 来实现。探险家们并非无限勇敢;即使是当前可走的最容易的一步,如果攀登过于陡峭,他们也不会迈出。如果到任何相邻像素的最小强度差大于 ,探险就中止。区域的边界恰好被定义在根据我们选择的阈值,局部地貌变得过于“崎岖”而无法穿越的地方。
区域生长的力量和精妙之处在于我们如何定义那个同质性准则。一个简单的规则可能是:“如果一个像素的强度与原始种子的强度相近,它就可以加入。”但这可能很脆弱。如果种子被放在物体内一个异常亮或暗的点上怎么办?区域的生长可能会受到不当的偏见影响。
一个更稳健、更民主的方法是,将候选像素的强度不是与原始种子比较,而是与整个生长区域的平均强度进行比较。随着区域吞并更多的像素,其集体身份变得更加稳定,更不容易受到任何单个像素怪异特征的影响。区域的均值 成为对该物体“看起来像什么”的动态描述。
然而,这引入了一个潜在的计算噩梦。如果我们的区域包含 10,000 个像素,我们是否必须重新对所有 10,000 个强度值求和再除以 10,001,只为了添加一个像素?这样的过程会让任何计算机都瘫痪。在这里,数学提供了一丝精妙之处,使该算法变得实用。存在着“单遍”或在线更新公式,允许您仅使用旧的均值、旧的元素数量和新元素的值来计算集合的新均值(甚至新方差)。例如,新的均值 可以通过旧的均值 和新的像素值 进行简单的更新计算:。
这种递归公式在计算上开销很小,并揭示了该过程中隐藏的效率。它允许区域维持一种复杂的、不断演变的自我认同感,而无需回顾其完整的历史。因此,同质性准则可以基于区域均值或方差等统计上稳健的属性,确保生长过程由迄今为止找到的所有像素的集体智慧所引导。
我们设计了一台相当精美的机器。它从一个种子开始,使用有原则的规则进行贪心扩展,并在生长过程中高效地更新其认同感。但在混乱、不完美的现实世界中,它能奏效吗?
现实世界的图像,尤其是在科学和医学领域,并非纯净的数字绘画。它们是测量结果,而所有测量都受到噪声(noise)的影响。计算机断层扫描(CT)图像受到量子噪声的困扰,使其呈现出颗粒状的纹理。磁共振成像(MRI)扫描可能会受到平滑、缓慢变化的偏置场(bias field)的影响,使得图像的一侧人为地比另一侧更暗。超声图像则被散斑噪声(speckle)破坏,这是一种混乱的、乘性的噪声,使得即使是均匀的组织也显示为明暗斑点的随机图案。
这种噪声是我们同质性准则的根本敌人。一个属于肿瘤的噪声像素,可能偶然地具有一个更接近周围健康组织强度的值。一个健康的像素也可能随机地看起来与肿瘤相似。因此,每一个添加像素的决定都是一场赌博。这就引出了我们最深刻的问题:支配区域生长成败的物理极限是什么?
我们可以用统计学的语言来形式化这场赌博。当我们将一个像素接纳到我们的区域时,我们冒着两种错误的风险:
假设我们想将假阳性的概率限制在一个很小的值 ,并将假阴性的概率限制在一个很小的值 。值得注意的是,我们可以推导出一个数学定律,该定律规定了能够同时满足这两个条件的阈值 是否可能存在。这个定律将图像的属性与我们期望的错误率联系起来。
为了使稳定的分割成为可能,必须满足一个基本条件:对比度噪声比(contrast-to-noise ratio)必须足够高。更精确地说,对比度 ——即物体真实平均强度 与背景真实平均强度 之间的差异——必须大于以标准差 度量的图像噪声。完整的关系式甚至更具启发性:
让我们来解析这个优美的表达式。它告诉我们,信号 必须战胜噪声 。但噪声被两个因素放大了。项 代表我们对确定性的要求;这些值由我们选择的误差容忍度 和 推导而来。如果我们想要极低的错误率,我们就需要高得多的对比度。项 反映了我们知识的不确定性。当我们的区域很小( 很小)时,我们对其平均强度的估计是不稳定的,这实际上增加了我们必须克服的噪声。随着区域变大(),我们的估计变得更加确定,这一项趋近于 1,使得条件更容易满足。
这个不等式是区域生长的终极“游戏规则”。它将相似性的直观概念与噪声和测量的严酷现实统一起来。它证明了分割不是寻找某种神奇算法的问题,而是理解图像中的信息在物理上是否足以克服固有的不确定性。我们那个关于“生长一个区域”的简单而优雅想法的成功,最终是由深刻而优美的统计学定律所支配的。
在之前的讨论中,我们剖析了区域生长算法的精巧机制。我们视其为一种简单、近乎童趣的策略:从一个你确信无疑的点开始,然后谨慎地扩展你的领地,只有当相邻的点具有相同的基本特征时才将其并入。这句古老的谚语“物以类聚,人以群分”在数字世界得到了体现。现在,我们将开启一段超越算法本身的旅程,去看看这个简单的想法如何在工程师手中绽放成一个强大的工具,更令人惊讶的是,它的核心逻辑如何在自然界的基本过程中得到呼应,从合金的晶体化到拯救生命的药物设计。这正是一个科学原理真正美之所在——不在于其孤立,而在于其意想不到的联系。
区域生长最直接、最直观的应用或许是在医学成像领域。想象一位外科医生正在规划一台对颞骨的复杂手术,这是人体解剖学中一个出了名的错综复杂的部位,充满了精细的神经和充满空气的腔室。在进行任何切口之前,医生可以探索一个从计算机断层扫描(CT)图像中提取的、针对特定患者的 3D 模型。但这个模型是如何创建的呢?CT 扫描仪为我们提供了一堆灰度图像,一个三维数据块,其中每个微小的立方体,即“体素”(voxel),都有一个与其在该点的材料密度相对应的强度值。
在这里,区域生长就成了一把数字解剖刀。任务是将致密的皮质骨与相邻的充满空气的空间分离开。在 CT 扫描的语言中,骨骼具有非常高的强度值(通常超过 1000 亨氏单位,即 HU),而空气则具有非常低的值(约 -1000 HU)。一个简单的策略可能只是取所有强度高于某个阈值的体素。但这可能会很混乱,留下零散的高强度噪声体素,并可能遗漏薄而精细的骨结构。
区域生长提供了一种更为智能的方法。临床医生只需在骨骼内部放置一个“种子”点。从这个种子开始,算法便开始其探索之旅,向相邻的体素扩展。并入的规则很简单:“你也是骨骼吗?”——或者更准确地说,“你的强度值是否高于我们为骨骼设定的阈值?”通过强制执行这种基于局部连通性的规则,算法生长并描绘出骨骼确切的、连续的结构,忽略了孤立的噪声。其结果不仅仅是一堆像骨骼的像素,而是一个连贯的解剖学对象,可以被 3D 打印成用于手术练习的物理模型,甚至是定制的植入物。
这种能力远远超出了创建静态模型。考虑一下构建一个能提供触觉力反馈的虚拟手术模拟器的挑战,它能让受训医生在切割或探查时感觉到组织的阻力。为此,分割出的解剖模型必须被转换成一个“有限元网格”——一个由微小的、相互连接的四面体组成的网络,这些四面体可以根据物理定律进行计算上的拉伸、剪切和变形。这个模拟的稳定性至关重要。如果模拟不稳定,虚拟工具可能会失控振动或“爆炸”,使训练毫无用处。
在这里,我们发现了一个微妙但至关重要的联系:初始分割的质量直接影响模拟的物理真实感。一种产生“嘈杂”或锯齿状表面的分割方法,可能导致网格中包含非常小或形状不佳的、“狭长片状”的四面体单元。在数值模拟的世界里,这些形状不良的单元是一场灾难。信息(如力波)在模拟物体中传播的速度受其最小、最硬的单元限制。为防止模拟崩溃,计算的时间步长必须小于波穿过这个最小单元所需的时间。如果你的网格充满了狭长片状单元,所需的时间步长将变得无限小,使得以触觉频率(例如 1000 Hz)进行实时模拟成为不可能。区域生长,凭借其生成平滑、拓扑干净区域的特性,有助于生成高质量的网格,而这对于这些虚拟世界的稳定性和性能至关重要。从这个意义上说,正是这个抽象的算法让虚拟解剖刀感觉真实。
看过了该算法如何作为一种实用工具,现在让我们进行一次飞跃。让我们问问,区域生长的思想——即基于局部规则从种子开始生长——是否也出现在别处?自然本身是否也使用这种策略?答案是肯定的,并且看到这些联系就像发现你熟悉的一段旋律其实是一部宏伟宇宙交响曲的一部分。
想象一下,一种混乱的非晶固体,如玻璃,或是一种复杂的液态金属合金开始凝固。在各个点上,微小的、有序的晶体——“晶核”(nuclei)——开始形成。这些就是种子。从这些种子开始,晶体结构向外生长,逐个原子地将周围无序的材料转变为其自身的有序形式。这个生长过程持续进行,直到不断扩张的晶域相互碰撞,这一事件被称为“交叠”(impingement)。这个形核与生长的过程是区域生长的一个完美的物理类比。
远在现代图像处理出现之前,材料科学家们就发展出了一个优美的数学框架来描述这一现象,即 Johnson-Mehl-Avrami-Kolmogorov (JMAK) 理论。该理论使用著名的 Avrami 方程 来预测已转变材料的总分数 随时间的变化。所谓的 Avrami 指数 是一个神奇的数字,它包含了关于转变机制的深刻信息。其值取决于生长的维度和形核的规则——这与我们在区域生长算法中指定的参数完全相同。
例如,如果我们考虑在薄膜(一个二维系统)中的晶体化,其中所有的晶核从一开始就存在(“位点饱和形核”),并以恒定速率作为圆形生长,JMAK 理论预测 Avrami 指数为 。如果相反,新的晶核以恒定速率随机出现(“连续形核”),指数则变为 。通过简单地测量总转变速率并将其与该方程拟合,实验者就能推断出微观的生长机制,这一切都是因为其底层逻辑与我们的算法相同。对于三维空间中的扩散控制生长,其生长速率随时间减慢,指数会取其他特征值,例如对于位点饱和形核,指数为 。
当我们审视像高熵合金这样现代、复杂的材料时,这个类比变得更加有力。这些材料在化学上是“混乱”的,局部环境在不同点之间可能差异巨大。这意味着晶体生长速率在整个材料中并非均匀。一些区域转变迅速,而另一些则滞后。这类似于一个区域生长过程,其中“相似性准则”不是固定的,而是空间变化的。当科学家观察这些材料中的相变时,他们经常发现 Avrami 指数偏离了理想的整数或半整数值,并且 JMAK 图会弯曲。这种偏离并非模型的失败;它是一条线索,是材料底层异质性的一个标志。
我们可以将这个想法推向其终极抽象。如果生长不是发生在我们熟悉的欧几里得空间,而是发生在一个像分形一样褶皱、复杂的景观上呢?想象一下一个相变过程穿过一种多孔、海绵状的材料。维度的定义本身就改变了。材料的质量不再与半径的立方()成正比,而是与 成正比,其中 是分形维数。即使在这个奇怪的世界里,生长的逻辑依然成立。人们可以推导出一个广义的 Avrami 指数 ,它同时依赖于空间的分形维数 和生长晶体的内禀维数 。最终的表达式 展示了一个简单的概念如何可以被扩展用来描述极其复杂的系统,将几何学和动力学统一在一个优雅的公式中。
现在,让我们将视角从材料的尺度缩小到药物设计的原子领域。药物化学家的核心任务之一是设计一个小分子——一个配体(ligand)——它能紧密而特异性地结合到目标蛋白质上,或许是为了阻断蛋白质的功能并阻止疾病的发展。
许多蛋白质靶点表面有裂隙或口袋。当蛋白质处于水中时,这些口袋充满了水分子。其中一些水分子,特别是那些位于狭窄、非极性(或“疏水性”)口袋中的水分子,非常“不快乐”。为了适应这个空间,它们被迫形成高度有序的排列,与在体相液体中自由漫游的同类相比,损失了大量的熵。从热力学的角度来看,这些是高能量、低熵的水分子。
现在,想象一位化学家有一个小的“片段”分子,它能弱弱地结合在这个口袋里。这就是我们的种子。目标是通过添加新的化学基团来“生长”这个片段,使其结合得更紧密。它应该向哪里生长呢?答案就在于那些不快乐的水分子。策略是将片段延伸到被这些高度有序的水分子占据的区域。通过取代它们,非极性配体将它们“释放”回体相溶液中,在那里它们会快乐得多。这种释放为系统提供了巨大的、有利的熵增益,这转化为结合亲和力的重大改善。这种策略被称为“基于片段的药物设计”,其核心逻辑是区域生长在化学领域一个美丽的回响。
“生长”的引导不是依靠像素强度,而是依靠一张热力学有利性的地图。计算技术可以识别出“疏水性热点”,在这些地方,被困住的水分子具有最大的负超额熵——意味着它们最有序,释放它们将带来最大的益处。然后,化学家合成新的分子,将种子片段延伸到这些特定的热点中。每一次成功的添加,就像我们的算法并入一个新的、有利的体素。目标是生长出一个最终能完美填充最有利空间的分子,从而最大化因取代水而获得的熵收益。
从外科医生的工具到晶体化的原理,再到设计新药的策略,区域生长这个简单的思想揭示了自己是一种基本的思维模式。它证明了这样一个事实:我们为理解世界而发明的工具,最终常常映照出构建这个世界的过程本身。