Switch to side-by-side view

--- a
+++ b/All Matlab Code/Code for Fractal Analysis/boxcount.m
@@ -0,0 +1,107 @@
+%% Quantification of Trabeculae Inside the Heart from MRI Using Fractal Analysis 
+
+%% This code is written by-
+                %Md. Kamrul Hasan, M1 MAIA
+                %Md. Fakrul Islam Tushar, M1 MAIA
+%%
+function [Number_of_BOX,BOX_Size] = boxcount(c,varargin)
+error(nargchk(1,2,nargin));
+% check for true color image (m-by-n-by-3 array)
+if ndims(c)==3
+    if size(c,3)==3 && size(c,1)>=8 && size(c,2)>=8
+        c = sum(c,3);
+    end
+end
+c = logical(squeeze(c));
+dim = ndims(c); % dim is 2 for a vector or a matrix, 3 for a cube
+if dim>3
+    error('Maximum dimension is 3.');
+end
+% transpose the vector to a 1-by-n vector
+if length(c)==numel(c)
+    dim=1;
+    if size(c,1)~=1   
+        c = c';
+    end   
+end
+width = max(size(c));    % largest size of the box
+p = log(width)/log(2);   % nbre of generations
+if p~=round(p) || any(size(c)~=width)
+    p = ceil(p);
+    width = 2^p;
+    switch dim
+        case 1
+            mz = zeros(1,width);
+            mz(1:length(c)) = c;
+            c = mz;
+        case 2
+            mz = zeros(width, width);
+            mz(1:size(c,1), 1:size(c,2)) = c;
+            c = mz;
+        case 3
+            mz = zeros(width, width, width);
+            mz(1:size(c,1), 1:size(c,2), 1:size(c,3)) = c;
+            c = mz;            
+    end
+end
+Number_of_BOX=zeros(1,p+1); 
+switch dim
+    case 1        
+        Number_of_BOX(p+1) = sum(c);
+        for g=(p-1):-1:0
+            siz = 2^(p-g);
+            siz2 = round(siz/2);
+            for i=1:siz:(width-siz+1)
+                c(i) = ( c(i) || c(i+siz2));
+            end
+            Number_of_BOX(g+1) = sum(c(1:siz:(width-siz+1)));
+        end
+    case 2         
+        Number_of_BOX(p+1) = sum(c(:));
+        for g=(p-1):-1:0
+            siz = 2^(p-g);
+            siz2 = round(siz/2);
+            for i=1:siz:(width-siz+1)
+                for j=1:siz:(width-siz+1)
+                    c(i,j) = ( c(i,j) || c(i+siz2,j) || c(i,j+siz2) || c(i+siz2,j+siz2) );
+                end
+            end
+            Number_of_BOX(g+1) = sum(sum(c(1:siz:(width-siz+1),1:siz:(width-siz+1))));
+        end
+    case 3         
+        Number_of_BOX(p+1) = sum(c(:));
+        for g=(p-1):-1:0
+            siz = 2^(p-g);
+            siz2 = round(siz/2);
+            for i=1:siz:(width-siz+1),
+                for j=1:siz:(width-siz+1),
+                    for k=1:siz:(width-siz+1),
+                        c(i,j,k)=( c(i,j,k) || c(i+siz2,j,k) || c(i,j+siz2,k) ...
+                            || c(i+siz2,j+siz2,k) || c(i,j,k+siz2) || c(i+siz2,j,k+siz2) ...
+                            || c(i,j+siz2,k+siz2) || c(i+siz2,j+siz2,k+siz2));
+                    end
+                end
+            end
+            Number_of_BOX(g+1) = sum(sum(sum(c(1:siz:(width-siz+1),1:siz:(width-siz+1),1:siz:(width-siz+1)))));
+        end
+end
+Number_of_BOX = Number_of_BOX(end:-1:1);
+BOX_Size = 2.^(0:p); 
+if any(strncmpi(varargin,'slope',1))
+    s=-gradient(log(Number_of_BOX))./gradient(log(BOX_Size));
+    semilogx(BOX_Size, s, 's-');
+    ylim([0 dim]);
+    xlabel('r, Box Size'); ylabel('- d ln n / d ln r, Local Dimension');
+    title('Local FD VS Box Size');
+    grid on
+elseif nargout==0 || any(strncmpi(varargin,'plot',1))
+    loglog(BOX_Size,Number_of_BOX,'s-');
+    xlabel('r, Box Size'); ylabel('n(r), Number of Boxes');
+    title('Number of Boxes VS Box Size');
+    grid on;
+end
+if nargout==0
+    clear Number_of_BOX
+    clear BOX_Size
+end
+%%                          END