Fraclab工具包计盒维数程序实现

实现了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

猜你喜欢

转载自blog.csdn.net/qq_38826019/article/details/81030385
今日推荐