Matlab批量计算盒维数并进行t检验

DimensionCalculation.m

%计算图像盒维数 
function [boxdim]=DimensionCalculation(frame)
reg=0;  %-1指定范围输出维度,0计算线性回归时考虑所有框尺寸,没有图,2考虑所有框的尺寸,有图,输出维数
Waitbar=0; %1输出等候栏,0不输出
Sizes=[1/2,1/4,1/8,1/16,1/32,1/64,1/128,1/256,1/512];
Size = [];
Ratio = [];%[1 1]
Axes = [];%[0 1; 0 1]
%二值图boxdim_binaire 灰度图boxdim_classique
[boxdim,Nboxes,handefig,bound] = boxdim_binaire(frame,Sizes,Ratio,Axes,Waitbar,reg,'ls');%fraclab函数
%close(figure(gcf));

end

readImage.m

%导入原始图片
files1 = dir(fullfile('C:\Users\Administrator\Desktop\测试盒维数\ori\','*.jpg'));
lengthFiles = length(files1);
genArr = [];
for i = 1:lengthFiles;
    Img = imread(strcat('C:\Users\Administrator\Desktop\测试盒维数\ori\',files1(i).name));%文件所在路径
    Img = rgb2gray(Img);%将RGB图变为灰度图
    thresh = graythresh(Img); %自动确定阈值
    Img = im2bw(Img,thresh); %对图像二值化\
    [a] = DimensionCalculation(Img);
    genArr(i) = a;
    fprintf('盒维数%.4f\t',a);
    fprintf('\t');
    disp(files1(i).name);
    fid = fopen('C:\\Users\\Administrator\\Desktop\\test\\test.txt','a');
    fprintf(fid,'盒维数%.4f \n',a);
    fclose(fid);
end
%导入生成图片
files2 = dir(fullfile('C:\Users\Administrator\Desktop\测试盒维数\gen\','*.jpg'));
oriArr =[];
for i = 1:lengthFiles;
    Img = imread(strcat('C:\Users\Administrator\Desktop\测试盒维数\gen\',files2(i).name));%文件所在路径
    Img = rgb2gray(Img);%将RGB图变为灰度图
    thresh = graythresh(Img); %自动确定阈值
    Img = im2bw(Img,thresh); %对图像二值化\
    [a] = DimensionCalculation(Img);
    oriArr(i) = a;
    fprintf('盒维数%.4f\t',a);
    fprintf('\t');
    disp(files2(i).name);
    fid = fopen('C:\\Users\\Administrator\\Desktop\\test\\test.txt','a');
    fprintf(fid,'盒维数%.4f \n',a);
    fclose(fid);
end
[h,p,ci] = ttest2(oriArr,genArr)
genArr
oriArr
mean(genArr)
mean(oriArr)
涉及知识细节参考前几篇博客。


猜你喜欢

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