a b/All Matlab Code/Code for Fractal Analysis/boxdiv3.m
1
%% Quantification of Trabeculae Inside the Heart from MRI Using Fractal Analysis 
2
3
%% This code is written by-
4
                %Md. Kamrul Hasan, M1 MAIA
5
                %Md. Fakrul Islam Tushar, M1 MAIA
6
%%
7
function c=boxdiv3(c,p)
8
siz = length(c);
9
if siz==1
10
    c=true;
11
else
12
    siz2 = round(siz/2);
13
14
    % sub-cube top-left  front
15
    c(1:siz2,1:siz2,1:siz2) = c(1:siz2,1:siz2,1:siz2) & (rand<p);
16
    if c(1,1,1)
17
        c(1:siz2,1:siz2,1:siz2) = boxdiv3(c(1:siz2,1:siz2,1:siz2),p);
18
    end
19
20
    % sub-cube top-right  front
21
    c((1+siz2):siz,1:siz2,1:siz2) = c((1+siz2):siz,1:siz2,1:siz2) & (rand<p);
22
    if c(1+siz2,1,1)
23
        c((1+siz2):siz,1:siz2,1:siz2) = boxdiv3(c((1+siz2):siz,1:siz2,1:siz2),p);
24
    end
25
26
    % sub-cube bottom-left  front
27
    c(1:siz2,(1+siz2):siz,1:siz2) = c(1:siz2,(1+siz2):siz,1:siz2) & (rand<p);
28
    if c(1,1+siz2,1)
29
        c(1:siz2,(1+siz2):siz,1:siz2) = boxdiv3(c(1:siz2,(1+siz2):siz,1:siz2),p);
30
    end
31
32
    % sub-cube bottom-right  front
33
    c((1+siz2):siz,(1+siz2):siz,1:siz2) = c((1+siz2):siz,(1+siz2):siz,1:siz2) & (rand<p);
34
    if c(1+siz2,1+siz2,1)
35
        c((1+siz2):siz,(1+siz2):siz,1:siz2) = boxdiv3(c((1+siz2):siz,(1+siz2):siz,1:siz2),p);
36
    end
37
38
    % sub-cube top-left  bottom
39
    c(1:siz2,1:siz2,(1+siz2):siz) = c(1:siz2,1:siz2,(1+siz2):siz) & (rand<p);
40
    if c(1,1,1+siz2)
41
        c(1:siz2,1:siz2,(1+siz2):siz) = boxdiv3(c(1:siz2,1:siz2,(1+siz2):siz),p);
42
    end
43
44
    % sub-cube top-right  bottom
45
    c((1+siz2):siz,1:siz2,(1+siz2):siz) = c((1+siz2):siz,1:siz2,(1+siz2):siz) & (rand<p);
46
    if c(1+siz2,1,1+siz2)
47
        c((1+siz2):siz,1:siz2,(1+siz2):siz) = boxdiv3(c((1+siz2):siz,1:siz2,(1+siz2):siz),p);
48
    end
49
50
    % sub-cube bottom-left  bottom
51
    c(1:siz2,(1+siz2):siz,(1+siz2):siz) = c(1:siz2,(1+siz2):siz,(1+siz2):siz) & (rand<p);
52
    if c(1,1+siz2,1+siz2)
53
        c(1:siz2,(1+siz2):siz,(1+siz2):siz) = boxdiv3(c(1:siz2,(1+siz2):siz,(1+siz2):siz),p);
54
    end
55
56
    % sub-cube bottom-right  bottom
57
    c((1+siz2):siz,(1+siz2):siz,(1+siz2):siz) = c((1+siz2):siz,(1+siz2):siz,(1+siz2):siz) & (rand<p);
58
    if c(1+siz2,1+siz2,1+siz2)
59
        c((1+siz2):siz,(1+siz2):siz,(1+siz2):siz) = boxdiv3(c((1+siz2):siz,(1+siz2):siz,(1+siz2):siz),p);
60
    end
61
end
62
%%             END