科 / 研 / 图 / 像 / 处 / 理
分形维数 (Fractal Dimension),是描述几何形状 复杂程度 的统计量。
更通俗来讲,分形维数描述的是,随着测量尺度的变化,形状在细节上的变化。
如果一个图形的分形维数越大,那么可以说这个图形越“粗糙”,放大之后也能看到很多细节,即这个图形更复杂:
对于规则的分形,可以直接利用 Scaling rule 进行计算:
D 代表分形维数,N 代表单位长度的数量,𝜀代表单位长度和原图相比的缩小比例。
例如对于 Koch snowflake 来说,图形由 4 个单位长度构成,每个单位长度是原图长度的 1/3,则:
对于现实情况中无规则的形状,则可以采用 Box Counting 的方法,通过统计图形占不同大小网格 (Box) 的数量。然后,计算网格数量和对应的网格比例之比。最后进行线性回归得到斜率,来计算分形维数:
图源:维基百科
进行分形分析之前,务必看一下这个视频,了解分形维数是怎样通过 Box counting 的方法,计算出来的:
https://www.bilibili.com/video/BV1wx411C7WT/?from=search&seid=8168926363651608613
这篇文章会介绍怎样利用 Fractal Box Count 以及 FracLac 这两个插件进行分形分析,得到分形维数。
这篇文章只介绍最简单的 Box counting 方法,测量二值化图像的分形维数,更多插件的功能需要详细阅读官网说明:
https://imagej.net/ij/plugins/fraclac/FLHelp/Introduction.htm
一、利用 Fractal Box Count 插件测量分形维数
Fractal Box Count 是 ImageJ 自带的,插件位置:
Analyze - Tools - Fractal Box Count
(1)打开图片,转成8-bit并二值化(Image -> Adjust -> Threshold)
设置好 Threshold,点击 Apply 即可把图像二值化。
(2)打开插件(Analyze -> Tools -> Fractal Box Count)
初始化参数,这张图片二值化后,白色部分 (pixel value = 255) 是想要的信号,黑色是背景,所以勾选 Black Background。
Box Sizes:即哪些尺寸的框进行统计,Box Sizes 不能设置过大,要根据分形本身所占多少 pixel 来定。如果线性回归的结果比较好,可以不做改动。
点击 OK 之后,即可得到线性回归结果,以及分形维数 D:
二、利用FracLac插件测量分形维数
首先需要在官网下载插件:
https://imagej.net/ij/plugins/fraclac/FLHelp/Installation.htm
或 公众号后台回复“分形”获取插件:
得到 Frac_Lac.jar 文件后 plugins 文件夹(Fiji的安装目录)下:
重启 ImageJ 即可。
(1)打开图像,二值化(同上)
(2)打开插件(Plugins -> Fractual Analysis -> FracLac)
插件界面
FracLac 有两排按钮,先点紫色那排,初始化参数后,才能点蓝色那排,进行 Scan 分析。
(3)初始化参数
点击 BC,即 Box Counting:
不用勾选 Legacy mode,点击 OK:
初始化界面:
这个初始化界面是比较劝退的,如果你需要更加复杂的分析,需要真正知道背后这些参数的原理,鼠标放在每一栏,中间都会有详细的说明,需要耐心阅读。
这里需要注意三个地方:
1、Image Type,选择使用二值化的图像
2、Grid Design,这里可以选择默认的12个
FracLac 可以随机生成不同网格,网格的起点不同,可能对结果也会有影响。
最后得到的结果是这 12 个随机生成网格,得到的 12 个分形维数的平均值。
两种不同生成 grid 的方式
3、Graphic options,这里是可选的,如果只是要得到分形维数的数值,可以一个都不勾选
初始化参数,一般使用默认的就可以,如果要调整参数,一定要了解清楚所调节参数的意义。
(3)分形维数测量
FracLac 可以测量某个 ROI 的分形维数,如果图片上没有 ROI,则测量整张图片的分形维数。
点击 Scan 后,即可得到结果:
END
往期回顾