应用场景
- 纹理分析:量化图像纹理的多尺度特性
- 医学图像:分析组织结构异质性
- 材料科学:研究材料表面的多重分形特征
- 金融分析:分析价格波动的多重分形特性
- 地球科学:研究地形地貌的多尺度特征
使用示例
基础用法
import cv2, numpy as np
from FreeAeonFractal.FAImageMFS import CFAImageMFS
rgb_image = cv2.imread('./images/face.png')
gray_image = cv2.cvtColor(rgb_image, cv2.COLOR_BGR2GRAY)
MFS = CFAImageMFS(gray_image, q_list=np.linspace(-5, 5, 51))
df_mass, df_fit, df_spec = MFS.get_mfs()
print(df_spec[['q', 'alpha', 'f_alpha']].head(10))
MFS.plot(df_mass, df_fit, df_spec)
GPU加速版本
from FreeAeonFractal.FAImageMFSGPU import CFAImageMFSGPU as CFAImageMFS
MFS = CFAImageMFS(gray_image, q_list=np.linspace(-5, 5, 51))
df_mass, df_fit, df_spec = MFS.get_mfs()
MFS.plot(df_mass, df_fit, df_spec)
局部奇异度图
MFS = CFAImageMFS(gray_image)
alpha_map, info = MFS.compute_alpha_map(scales=None, roi_mode="center", empty_policy="nan")
CFAImageMFS.plot_alpha_map(alpha_map)
批量处理
import glob, cv2, numpy as np
from FreeAeonFractal.FAImageMFS import CFAImageMFS
images = [cv2.imread(f, cv2.IMREAD_GRAYSCALE) for f in glob.glob('./images/*.png')]
results = CFAImageMFS.get_batch_mfs(images, q_list=np.linspace(-5, 5, 26))
for df_mass, df_fit, df_spec in results:
print(df_fit[['q', 'tau', 'Dq']].head())
类说明
CFAImageMFS
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
image | numpy.ndarray | 必填 | 输入2D灰度图像 |
corp_type | int | -1 | 裁剪方式(-1:裁剪, 0:严格, 1:填充) |
q_list | array-like | linspace(-5,5,51) | q值列表 |
with_progress | bool | True | 是否显示进度条 |
bg_threshold | float | 0.01 | 背景阈值(归一化后) |
bg_otsu | bool | False | 对原始图像使用Otsu法 |
get_mass_table(max_size, max_scales=80, min_box=2, roi_mode="center")
计算各尺度配分函数表。返回DataFrame,列:scale, eps, q, value, kind(kind='logMq'/'N'/'S')
fit_tau_and_D1(df_mass, min_points=6, ...)
线性回归拟合τ(q)和D(q)。返回DataFrame,列:q, tau, Dq, D1, r_value, n_points等
alpha_falpha_from_tau(df_fit, spline_k=3, exclude_q1=True, spline_s=0)
通过τ(q)的样条导数(Legendre变换)计算α(q)和f(α)。
get_mfs(max_size, max_scales=80, min_points=6, ...)
完整分析流水线。返回 (df_mass, df_fit, df_spec)。
compute_alpha_map(scales=None, roi_mode="center", empty_policy="nan")
逐像素局部Hölder指数,流式OLS(嵌套网格优化)。返回 (alpha_map, info)。
plot(df_mass, df_fit, df_spec)
2×3子图:log M(q,ε)热图、f(α) vs α、τ(q)、D(q)、α(q)、f(α) vs q
get_batch_mfs(img_list, ...) [静态]
批量CPU多重分形谱,与CFAImageMFSGPU.get_batch_mfs API兼容。
理论背景
μᵢ(ε) = mass_i / total_mass # 盒概率
M(q, ε) = Σᵢ μᵢ^q # 配分函数
τ(q) = lim log M(q,ε) / log ε # 质量指数
D(q) = τ(q) / (q-1), q≠1 # 广义维度
α(q) = dτ(q)/dq # 奇异性强度(样条导数)
f(α) = q·α - τ(q) # 多重分形谱
重要说明
- 图像自动归一化到[0,1];使用
bg_threshold或bg_otsu=True去除背景 - 推荐q范围:−5到5,20-51个点
- f(α)曲线越宽 → 多重分形性越强;D(q)随q单调递减 → 多重分形数据
- 使用
CFAImageMFSGPU可获得5-20×加速