REF · 方法
盒计数维数BOX-COUNTING DIMENSION
把"有多粗糙"变成一个别人能复核的数
被引用于:Topic 32 尺度不变与分形
01 它问的是什么问题(The Question It Poses)
"这条海岸比那条曲折"、"这块材料比那块多孔"、"这张片子上的血管比那张稀疏"——这些判断你一眼看得出来,却说不清凭的是什么。经典几何在这里帮不上忙:在欧几里得的框架里,任何一条曲线的维数都是 1,无论它拐多少个弯;任何一张面都是 2,无论它有多少个洞。粗糙这件事被这套语言整个漏掉了。
盒计数问的是:能不能造一个量,对光滑曲线给 1、对填满平面的东西给 2、对介于两者之间的东西给一个介于两者之间的数? 而且这个量必须能在一张真实的照片、一份真实的地图上算出来——不需要事先知道这个图形是怎么生成的。这一条是它比"自相似份数法"(放大 k 倍变成 N 份)更有用的全部原因:后者要求你已经知道生成规则,而现实里你通常只有一张图。
02 规则本身(The Rules)
把图形铺进一张边长为 ε 的方格网。
数有多少个格子被图形碰到 ——碰到就算 1,碰多碰少不区分。记作 N(ε) 。
把 ε 缩小(常用减半,或每次除以固定倍数),回到第 2 步,得到一串 (ε, N(ε))。
画双对数图:横轴 log(1/ε),纵轴 log N(ε)。
取图上直线那一段 的斜率,那就是盒计数维数 D 。写成公式是 D = log N(ε) ÷ log(1/ε) 在 ε 趋于 0 时的极限。
第 5 步里"直线那一段"这几个字是整套方法的重点,也是最常被跳过的一步。真实数据的双对数图两头一定会弯:格子大到接近整个图形时,N 逼近常数;格子小到接近图像的像素(或材料的颗粒)时,你数的是分辨率而不是形状。能读斜率的只有中间那一段,而报告里必须写出这一段的上下限。
03 跑起来会看到什么(What You See When It Runs)
先用三个已知答案的图形校准一下:一条斜线(应该给 1)、一块实心方块(应该给 2)、一条科赫曲线(精确值 log4÷log3 ≈ 1.26)。
同一张网格,三种图形
一条斜线
格长 12 → 10
格长 6 → 20
D ≈ 0.97
一块实心方块
格长 12 → 100
格长 6 → 400
D ≈ 2.00
科赫曲线
格长 12 → 24
格长 6 → 56
D ≈ 1.22
格长减半:线的格数翻倍,方块变四倍,科赫曲线变 2.3 倍 — 那个倍数的指数就是维数。
格长减半时,三种图形的格数分别变成 2 倍、4 倍、2.3 倍。指数不同,就是维数不同。
把四组格长的结果都放到双对数图上,三条线各自笔直,斜率互不相同——这就是这个方法能用的全部理由。
把三组数放上双对数图 — 斜率就是维数
斜线 D≈0.97
实心方块 D≈2.00
科赫曲线 D≈1.22
12
6
3
1.5
格子边长(越往右格子越小)→
被碰到的格数(对数)
三条线的高低无所谓,只有斜率有意义。科赫曲线的精确值是 1.26,这里量到 1.22 — 有限画幅上的系统性低估。
线的高低取决于图形有多大,与维数无关;只有斜率有意义。
注意科赫曲线这一栏:精确答案是 1.26,图上量出来是 1.22。这个差不是画错了,是方法本身的系统性偏差 ——在有限画幅、有限格长范围内,盒计数总是稍微低估。想把它推近 1.26,得把格长继续缩小好几个数量级,而这在真实数据上通常做不到。所以任何一个报出来的 D,都应该被理解成"在这个尺度窗口内的斜率",而不是这个图形的固有属性。
04 它解释了现实中的什么(What It Explains)
地形与海岸。 不同海岸的 D 排出来的顺序和肉眼判断一致(南非约 1.05,英国西海岸约 1.25,挪威峡湾约 1.52),而且这个数能直接告诉你换尺子会有多大影响:D 越大,你换一次地图分辨率,测得的长度跳得越厉害。
多孔材料与界面。 催化剂载体、活性炭、电池电极的孔结构,其盒计数维数与比表面积直接相关。工程上关心的往往不是 D 本身,而是 D 的变化——同一种材料在两种工艺下 D 差了多少,就是界面被做皱了多少。
医学影像里的形态学指标。 视网膜血管网、骨小梁、肿瘤边缘、支气管树,都有人用盒计数量出一个数当形态指标。它的价值在于把"看起来更稀疏/更不规则"变成一个能进统计模型的连续变量,而不是靠阅片者打分。
临界系统的几何。 渗流刚刚贯通时那个巨簇,在二维格子上的分形维数是精确已知的 91/48 ≈ 1.90 → 参考 · 渗流模型 。这类结果反过来给盒计数提供了校准物:如果你的程序在模拟渗流簇上量不出 1.90,那是程序的问题,不是数据的问题。
它不能解释什么(What It Cannot Explain)
它不给机制。 D 是一个描述性的数,它告诉你细节随分辨率增长得多快,不告诉你这个形状是怎么长出来的。分支供给网络、临界、尺度无关的侵蚀过程可以给出同一个 D,而这三条路的可检验预测完全不同。拿 D 当解释,是把一个测量当成了一个理论。
它不是形状的指纹。 D 相同的两个图形可以毫不相干。这条限制在波洛克滴画的分形鉴定案里被踩过:Jones-Smith 与 Mathur 2006 年在《自然》上指出,随手画的星形与潦草线条同样能通过那套分形判据。D 适合做比较 ,不适合做识别 。
它对尺度窗口极其敏感。 本页那条科赫曲线在四个格长上量到 1.22 而不是 1.26,就是这个偏差的样子。真实数据的可用窗口常常只有一个数量级左右,在那么短的一段里,直线和缓慢弯曲的曲线分不开。
它对预处理敏感。 二值化的阈值、去噪、图像分辨率、甚至网格原点放在哪儿,都会改变量出来的 D。跨研究比较 D 之前必须先统一整条流程,否则比的是流程不是形状。
它不是唯一的"维数"。 豪斯多夫维数(Hausdorff dimension)、信息维数、关联维数各有定义;它们在漂亮的数学对象上重合,在真实对象上可以不等。盒计数只是最容易算的那一个,不是最权威的那一个。
它对"自仿射"的对象会给错答案。 如果一个对象在两个方向上的标度不一样(self-affine,典型例子是一条时间序列画成的曲线:横轴是时间、纵轴是价格,两轴根本不是同一种量),那么盒计数的结果会依赖你怎么选纵横比,得到的数没有意义。这类对象要用别的方法(去趋势波动分析这一类),别把盒计数硬套上去。