多重分形谱分析 - CFAImageMFS

基于固定ROI归一化的2D图像盒计数多重分形分析

应用场景

使用示例

基础用法

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

初始化参数

参数类型默认值说明
imagenumpy.ndarray必填输入2D灰度图像
corp_typeint-1裁剪方式(-1:裁剪, 0:严格, 1:填充)
q_listarray-likelinspace(-5,5,51)q值列表
with_progressboolTrue是否显示进度条
bg_thresholdfloat0.01背景阈值(归一化后)
bg_otsuboolFalse对原始图像使用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) # 多重分形谱

重要说明

  1. 图像自动归一化到[0,1];使用 bg_thresholdbg_otsu=True 去除背景
  2. 推荐q范围:−5到5,20-51个点
  3. f(α)曲线越宽 → 多重分形性越强;D(q)随q单调递减 → 多重分形数据
  4. 使用 CFAImageMFSGPU 可获得5-20×加速