实现了Matlab Fraclab Toolbox计盒维数方法
方法一:Binary Data
图像输入为二值图 (dpi=100 640x480)
DimensionCalculation.m 计算图像盒维数
%计算图像盒维数
function [boxdim]=DimensionCalculation(frame)
reg=0; %-1指定范围输出维度,0计算线性回归时考虑所有框尺寸,没有图,2考虑所有框的尺寸,有图,输出维数
Waitbar=0; %1输出等候栏,0不输出
Size=[1/2,1/4,1/8,1/16,1/32,1/64,1/128,1/256,1/512];
Ratio = [];%[1 1]
Axes = [];%[0 1; 0 1]
%二值图boxdim_binaire 灰度图boxdim_classique
[boxdim,Nboxes,handefig] = boxdim_binaire(frame,Size,Ratio,Axes,Waitbar,reg);%fraclab函数
%close(figure(gcf));
end
readImage.m 实现批量读取并处理图像
files = dir(fullfile('C:\\Users\\Administrator\\Desktop\original\\','*.jpg'));
lengthFiles = length(files);
for i = 1:lengthFiles;
Img = imread(strcat('C:\\Users\\Administrator\\Desktop\\original\\',files(i).name));%文件所在路径
Img = rgb2gray(Img);%将RGB图变为灰度图
thresh = graythresh(Img); %自动确定阈值
Img = im2bw(Img,thresh); %对图像二值化\
[a] = DimensionCalculation(Img);
fprintf('盒维数%.4f\t',a);
fprintf('\t');
disp(files(i).name);
fid = fopen('C:\\Users\\Administrator\\Desktop\\test\\test.txt','a');
fprintf(fid,'盒维数%.4f \n',a);
fclose(fid);
end
方法二:Graysclae data
图像输入为灰度图
DimensionCalculation.m
%计算图像盒维数
function [boxdim]=DimensionCalculation(frame)
reg=0; %-1指定范围输出维度,0计算线性回归时考虑所有框尺寸,没有图,2考虑所有框的尺寸,有图,输出维数
Waitbar=0; %1输出等候栏,0不输出
Size=[1/2,1/4,1/8,1/16,1/32,1/64,1/128,1/256,1/512];
Ratio = [];%[1 1]
Axes = [];%[0 1; 0 1]
%二值图boxdim_binaire 灰度图boxdim_classique
[boxdim,Nboxes,handefig,ags] = boxdim_classique(frame,Size,Ratio,Axes,Waitbar,reg);%fraclab函数
%close(figure(gcf));
end
readImage.m
files = dir(fullfile('C:\\Users\\Administrator\\Desktop\original\\','*.jpg'));
lengthFiles = length(files);
for i = 1:lengthFiles;
Img = imread(strcat('C:\\Users\\Administrator\\Desktop\\original\\',files(i).name));%文件所在路径
Img = rgb2gray(Img);%将RGB图变为灰度图
thresh = graythresh(Img); %自动确定阈值
Img = im2bw(Img,thresh); %对图像二值化\
[a] = DimensionCalculation(Img);
fprintf('盒维数%.4f\t',a);
fprintf('\t');
disp(files(i).name);
fid = fopen('C:\\Users\\Administrator\\Desktop\\test\\test.txt','a');
fprintf(fid,'盒维数%.4f \n',a);
fclose(fid);
end