主页 模型库 竞赛 学习中心 工具箱 论文库 前沿 建模空间 AI建模
学习中心 探索专题 分形 分形拿来做什么

本页实验台

  1. 分形图像压缩
  2. 分形天线
  3. 多孔介质与表面积
  4. 把维数当特征用
LAB 01

分形图像压缩

用自相似块去拼一张图,压缩比与失真的取舍

问题
一张图能不能不存像素,而是存"怎么从它自己生成它自己"的一组指令?巴恩斯利 1980 年代末的这个想法漂亮得惊人,也真的能用——但它最后输给了 JPEG,输的原因同样值得看。
模型
分块迭代函数系统(PIFS):每个值域块由某个域块经压缩仿射变换得到。
Ri ≈ si · D(di) + oi,  |si| < 1(保证映射是压缩的)
R 是值域块,D 是下采样后的域块,s 是对比度、o 是亮度。拼贴定理保证:这组映射是压缩映射,图像就是它唯一的不动点——所以解码可以从任意起点开始。
压缩比—
重建误差 RMSE(0~255 的灰度上)—
值域块数 / 候选域块数—
压缩后 / 压缩前—
右边那张图不是存下来的,是算出来的。压缩时存的根本不是像素,而是一组"把大块缩小、调亮度、贴到小块上"的指令;解码时从一张纯灰的图开始,反复执行这组指令,图像自己会浮现出来。看下面那条收敛曲线:第 1 次迭代 RMSE 是 34.5,第 2 次 22.4,第 4 次 7.84,第 8 次 6.59,之后就不动了。起点是什么完全不重要——换成全黑、全白、随机噪声,收敛到的是同一张图。这就是巴恩斯利的拼贴定理:这组指令是一个压缩映射,图像是它唯一的不动点。一张图不再是"一堆数值",而是"一个方程的解"。默认参数下压缩比 6.40 : 1,RMSE 6.58,4096 字节变成 640 字节。把值域块拖到 8×8:压缩比跳到 25.60 : 1,RMSE 升到 11.51。块越大,要存的指令越少,但一块之内能表达的细节也越少。拖到 2×2:压缩比只剩 1.60 : 1,RMSE 降到 2.71——几乎没压缩,因为每个 2×2 块也要花 20 比特去指路。这条取舍曲线是所有分块压缩方法共有的。把对比度上限拖到 0.30 再看:RMSE 从 6.58 涨到 9.32。这个上限不是随便设的:只有 |s| < 1 才能保证那个映射是压缩的、解码一定收敛。限制越紧,收敛越快,但能表达的对比变化越少。最后说这项技术的结局,因为它本身很有教育意义。分形压缩在 1990 年代初被寄予厚望,它有两个真实优点:解码极快,而且"分辨率无关"——解码时用更大的画布,就能得到一张放大后依然有合理细节的图,因为指令描述的是尺度之间的关系,不是某个分辨率上的像素。但它有一个致命缺点:编码要在所有域块里搜索最佳匹配,慢得离谱。这一页的 64×64 小图搜索 225 个候选块就要几十毫秒,真实图片是这个量级的上千倍。而 JPEG 在同样压缩比下画质更好、编码快上百倍。专利纠纷又拖了它几年。技术的胜负很少由"思想是否漂亮"决定。
LAB 02

分形天线

同样的占地面积,迭代级数越高,能工作的频段越多

问题
手机要同时吃下 GSM、Wi-Fi、蓝牙、GPS、5G 好几个频段,而天线的谐振频率由导线长度决定。能不能把很长的线折进很小的地方?能,但这条路上有一道绕不过去的物理墙。
模型
广义科赫曲线:折角 θ 决定缩放比 r,进而决定长度与维数。
r = 1 ⁄ (2 + 2cos θ),  Ln = (4r)n,  D = log4 ⁄ log(1/r);  一阶估计 fn ∝ 1/Ln
θ = 60° 时 r = 1/3,D = 1.2619。但"一阶估计"只算几何长度:真实天线由电流分布决定,Best 2003 年实测发现第 3~4 级以后几乎不再有收益。更根本的限制是 Chu–Harrington 定律:天线越小,Q 越高、带宽越窄。分形天线真正的价值在多频段,不在小型化。
导线总长度:实测 / (4r)ⁿ—
分形维数:理论 / 盒计数实测—
谐振频率(相对直线天线)—
几何上的小型化幅度—
天线的谐振频率由"电长度"决定,大致是导线长到半个波长时谐振。所以想让天线工作在更低的频率,要么把它做长,要么——把同样长的线塞进更小的地方。科赫曲线正好干这个:占地宽度始终是 1(蓝虚线),而导线越折越长。默认 θ = 60°、迭代 4 级时,导线总长 3.1605,正好等于 (4/3)⁴ = 3.1605。谐振频率降到直线天线的 0.3164 倍,几何上的小型化幅度 68.36%。把折角拖到 85°、迭代 4 级:总长 11.4539,小型化 91.27%。折角越大,每一折绕的路越多,同时分形维数从 1.0526(θ=30°)一路升到 1.7848(θ=85°)——维数越高,曲线越"占满"平面。第二行读数的第二个数是对这张图做盒计数量出来的,值得单独看一眼。θ = 60°、迭代 5 级时实测 1.2595,理论 1.2619,几乎一致;但迭代只到 3 级时实测只有 1.0919。θ = 85° 更夸张:迭代 5 级实测 1.5307,理论 1.7848。迭代级数不够、画布分辨率不够,量出来的维数就偏小。这条经验对所有"测量真实物体分形维数"的工作都成立。现在必须说清楚这个实验台不能说明什么。上面算的是几何长度,而真实天线的谐振由电流分布决定。科赫天线上的电流在那些急折处会互相抵消,所以实际的频率下降幅度远小于 (3/4)ⁿ——Best 在 2003 年的实验里指出,迭代到第 3、4 级之后几乎不再有额外收益,而且每一级都会让辐射效率和带宽变差。更根本的限制来自 Chu–Harrington 定律:任何天线只要小到一定程度,它的品质因数 Q 就必然随尺寸的立方反比上升,带宽随之塌陷。折多少次都绕不过这条。那分形天线的真实价值在哪?在多频段。一个自相似的结构在多个尺度上都有"半波长"可言,于是它天然在一串频率上都能谐振——手机要同时吃下 GSM、Wi-Fi、蓝牙、GPS、5G 好几个频段,一个分形形状抵好几根天线,这才是它真正被用起来的原因。"小型化"是个漂亮的说法,"多频段"才是买单的理由。
LAB 03

多孔介质与表面积

分形结构怎么在有限体积里塞进近乎无限的表面积

问题
人的肺在五升的胸腔里塞进了七十到一百平方米的气体交换面积,活性炭每克的表面积上千平方米。怎么在有限的体积里放进近乎无限的表面?答案是把结构做成分形。
模型
门格尔海绵:27 块里留 20 块,逐级重复。
Vn = (20/27)n → 0,  An → ∞,  D = log20 ⁄ log3 ≈ 2.7268
维数在 2 和 3 之间:体积测度为零,面积测度为无穷。这也带来一个必须权衡的矛盾——级数越高比表面积越大,但孔越细、渗透率越低,所以真实材料要同时设计大孔和微孔。
固体体积分数:实测 / (20/27)ⁿ—
总表面积(实心立方体是 6)—
比表面积 = 面积 / 体积—
比"一个等体积大孔"多出多少倍表面积—
门格尔海绵:把立方体切成 27 块,挖掉中间那一块和六个面心,留下 20 块,再对每一块重复。上面画的是它的一个面(正好是谢尔宾斯基地毯)。每挖一级,体积乘以 20/27 = 0.7407,而表面积不降反升。默认挖 3 级:固体体积只剩 0.4064,表面积从 6 涨到 24.757,比表面积 60.912。挖到 4 级:体积 0.3011,表面积 51.270,比表面积 170.294。这个方向如果一直走下去,体积趋于 0,表面积趋于无穷。门格尔海绵的维数是 log20/log3 = 2.7268——介于面(2)和体(3)之间,所以它"比面多,比体少":体积测度为零,面积测度为无穷。第四行读数是这一页最实用的一个对照。如果不用分形结构,而是在立方体里挖一个等体积的大孔,表面积只有 10.2(挖 3 级时)。分形结构的表面积是它的 2.42 倍;挖到 4 级是 4.78 倍。而且这个倍数会随级数继续放大——同样的孔隙率,分形分布的孔能提供几个数量级以上的表面积。这正是很多东西的工作原理:人的肺在约 5 升的胸腔里塞进了 70~100 平方米的气体交换面积(一个网球场大小),靠的是 23 级分叉的支气管树;活性炭每克的表面积是 1000~2000 平方米,靠的是多级孔隙;催化剂载体、锂电池的多孔电极、甚至壁虎脚掌的刚毛分叉(增加范德华接触面积),都是同一个原理。反过来,这也解释了为什么多孔介质的输运问题这么难算:流体在一个维数 2.73 的界面上流动,普通的达西定律(假设均匀介质)就不够用了,要用分数阶扩散或者随机行走在分形上的模型。(还有一个反直觉的推论:多孔材料里"表面积很大"和"孔很通畅"是矛盾的。级数越高,孔越细,表面积越大,但流体进得去出不来——真实材料要在"比表面积"和"渗透率"之间取一个折中,这就是分级多孔材料要同时设计大孔和微孔的原因。)
LAB 04

把维数当特征用

两类纹理只差一点粗糙度,盒维数就能把它们分开

问题
乳腺钼靶影像的纹理、视网膜血管树、骨小梁——医生凭经验能看出"这个粗糙",能不能把它变成一个可以进模型的数?能,而这一台同时展示了一个更重要的东西:怎么把自己骗过去。
模型
把盒维数当作一维特征,用一个阈值分类。
特征 x = D̂box;  判别 ŷ = 1{ x > t };  AUC = P( xA > xB )
阈值 t 必须在一批数据上定、在另一批数据上报准确率。在同一批数据上挑 t,即使两类完全相同也能得到 70% 以上的"准确率";AUC 也要报置信区间(每类 25 个样本时标准误约 0.08)。
A 类的盒维数:均值 ± 标准差—
B 类的盒维数:均值 ± 标准差—
用一个阈值能分对多少—
AUC(0.5 = 完全分不开)—
这是分形最朴素也最有效的一种用法:把维数当成一个特征。两类纹理只差一点粗糙度——A 类 H = 0.30,B 类 H = 0.70。肉眼看上去一类"毛"一点、一类"块"一点,但要写出一条规则去区分它们并不容易。而盒维数直接给出一个数:A 类 1.6767 ± 0.0600,B 类 1.3980 ± 0.0565,一条阈值线就能 100% 分开,AUC = 1.000。把两类拉近:H = 0.40 与 0.60,准确率 90.0%,AUC 0.941;H = 0.45 与 0.55,准确率 78.0%,AUC 0.818。性能随差异平滑下降,没有悬崖——这说明维数不是一个"开关",而是一个真正的连续量。这类方法在医学影像里是成熟技术:乳腺钼靶影像的纹理维数与病变相关,视网膜血管树的分形维数用于糖尿病视网膜病变分级,骨小梁的维数用于骨质疏松评估。它的好处是只需要一个数、可解释、对整体亮度和对比度不敏感。接下来是这一页最重要的一步,请一定做一次。把两个 H 都设成 0.50——两类完全一样,本来就不该分得开。读数是:准确率 72.0%,AUC 0.638。准确率远高于 50%,但真相是这两类毫无差别。问题出在"最佳阈值"这四个字上:阈值是在同一批数据上挑出来的,挑的就是让这批数据分得最开的那个位置,所以它必然高估,而且样本越少高估越厉害。把每类样本数拖到 10 再试,这个虚高的"准确率"还会更漂亮。正确的做法只有一条:阈值在一批数据上定,准确率在另一批数据上报。(AUC 0.638 也不是 0.5,同样是有限样本的涨落:每类 25 个样本时 AUC 的标准误大约 0.08,所以 0.638 只是一个 1.7 倍标准误的偏离,在没有置信区间的情况下它什么也不说明。报 AUC 不报置信区间,和报 α 不报 x_min 是同一类毛病。)

这一页想说的

四个用途,一句话:结构在尺度之间重复,所以描述它只需要很少的参数。图像压缩存的是尺度之间的映射而不是像素;天线用尺度之间的重复换来多个频段;多孔材料用尺度之间的重复在有限体积里塞进近乎无限的表面;纹理识别用一个跨尺度的指数概括整块图案。而四个实验台各自还给了一条限制,这些限制比用途本身更值得记住:分形压缩败给了编码速度,分形天线绕不过 Chu–Harrington 的带宽下限,多孔材料的比表面积与渗透率不可兼得,在同一批数据上挑阈值能让两类完全相同的东西"分对 72%"。一个漂亮的数学结构能不能变成有用的技术,取决于它在工程约束下还剩下多少。

接着看

← 返回模块 ← 返回探索专题