应用场景
- 图像纹理分析:量化图像的粗糙度和复杂性
- 医学图像分析:分析组织结构的复杂程度
- 材料科学:研究材料表面的分形特征
- 计算机视觉:图像特征提取和分类
- 地质学:地形和地貌复杂度分析
使用示例
基础用法
import cv2
from FreeAeonFractal.FAImageFD import CFAImageFD
from FreeAeonFractal.FAImage import CFAImage
rgb_image = cv2.imread('./images/fractal.png')
gray_image = cv2.cvtColor(rgb_image, cv2.COLOR_BGR2GRAY)
bin_image, threshold = CFAImage.otsu_binarize(gray_image)
fd_bc = CFAImageFD(bin_image).get_bc_fd(corp_type=-1)
fd_dbc = CFAImageFD(gray_image).get_dbc_fd(corp_type=-1)
fd_sdbc = CFAImageFD(gray_image).get_sdbc_fd(corp_type=-1)
print("BC 分形维度:", fd_bc['fd'])
print("DBC 分形维度:", fd_dbc['fd'])
print("SDBC 分形维度:", fd_sdbc['fd'])
CFAImageFD.plot(rgb_image, gray_image, bin_image, fd_bc, fd_dbc, fd_sdbc)
GPU加速版本
from FreeAeonFractal.FAImageFDGPU import CFAImageFDGPU
fd_bc = CFAImageFDGPU(bin_image, device='cuda').get_bc_fd()
fd_dbc = CFAImageFDGPU(gray_image, device='cuda').get_dbc_fd()
fd_sdbc = CFAImageFDGPU(gray_image, device='cuda').get_sdbc_fd()
# 注意:GPU版本 p_value 为 None
批量处理
import cv2, glob
from FreeAeonFractal.FAImageFD import CFAImageFD
images = [cv2.imread(f, cv2.IMREAD_GRAYSCALE) for f in glob.glob('./images/*.png')]
results_bc = CFAImageFD.get_batch_bc(images)
results_dbc = CFAImageFD.get_batch_dbc(images)
results_sdbc = CFAImageFD.get_batch_sdbc(images)
for r in results_bc:
print("BC FD:", r['fd'])
类说明
CFAImageFD
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
image | numpy.ndarray | 必填 | 输入2D单通道数组 |
max_size | int | None | 最大盒子尺寸(默认为图像最小维度) |
max_scales | int | 30 | 目标不同尺度数量 |
with_progress | bool | True | 是否显示进度条 |
min_size | int | 2 | 最小盒子尺寸 |
get_bc_fd(corp_type=-1, fit_range=None)
盒计数法(BC),适用于二值图像。返回 dict:fd, scales, counts, log_scales, log_counts, intercept, r_value, p_value, std_err
get_dbc_fd(corp_type=-1, fit_range=None)
差分盒计数法(DBC,Sarkar & Chaudhuri 1994)。公式:n_r = ceil(I_max/h) - ceil(I_min/h) + 1。适用于灰度图像。
get_sdbc_fd(corp_type=-1, fit_range=None)
移位差分盒计数法(SDBC,Chen et al. 1995)。公式:n_r = floor((I_max - I_min)/h) + 1。小尺度精度更高。
get_fd(scale_list, box_count_list)
对自定义尺度和计数数据进行对数-对数线性回归。
plot(raw_img, gray_img, bin_img, fd_bc, fd_dbc, fd_sdbc) [静态]
2×3子图可视化:原始图像、灰度图、二值图,以及三种方法的拟合结果。
get_batch_bc / get_batch_dbc / get_batch_sdbc [静态]
批量处理,共享尺度生成。返回结果字典列表。
算法说明
BC法
D = lim(ε→0) log(N(ε)) / log(1/ε)
DBC法
h = s × H / G_max
n_r(i,j) = ceil(I_max / h) - ceil(I_min / h) + 1
SDBC法
n_r(i,j) = floor((I_max - I_min) / h) + 1
重要说明
- BC需要二值图像;DBC/SDBC直接接受灰度图像
fit_range可限制拟合范围,排除不可靠的极端尺度- 2D图像分形维度通常在1-2之间;
r_value接近1表示良好的幂律拟合 - 批量处理或大图像时使用
CFAImageFDGPU
参考文献
- Sarkar, N., & Chaudhuri, B. B. (1994). IEEE Transactions on Systems, Man, and Cybernetics.
- Chen, W. S., et al. (1995). Pattern Recognition.