Switch to side-by-side view

--- a
+++ b/Image features calculation code/Working/haralick/cooccur.m
@@ -0,0 +1,60 @@
+function h = cooccur( m,mask,dir,dist )
+%COOCCUR Calculate a co-occurrence matrix
+%
+%   Mike Lam
+%   27 June 2006
+%
+%   Calculates the co-occurrence matrix of m taken dist units along 
+%   the direction given by dir.
+    
+    % convert data array to 16-bit signed integers
+    m = int16(m);
+    
+    % convert direction to offset vector [dr,dc]
+    % take the negative of the row element because
+    % rows are the inverse of the y-axis
+    radians = dir/180*pi;
+    dr = int16(-round(sin(radians)));
+    dc = int16(round(cos(radians)));
+    
+    % find size of matrix and range of values
+    mcols = int16(size(m,2));
+    mrows = int16(size(m,1));
+        
+    % find size of matrix and range of values (again)
+    mmin = min(m(:));
+    mmax = max(m(:));
+    
+    % initialize co-occurrence matrix
+    crows = int16(mmax-mmin)+1;
+    ccols = int16(mmax-mmin)+1;
+    com = int16(zeros(crows,ccols));
+    
+    % build co-occurrence matrix
+    for r = 1:int16(mrows)
+        for c = 1:int16(mcols)  
+            %PFS 7/15/2013
+            %guard on nodule extraction, only allow pixels in the
+            %segmentation to be used
+            if( mask(r,c) )
+                for d = 1:dist
+                    % given direction
+                    nr = r+(dr*int16(d));
+                    nc = c+(dc*int16(d));
+                    if (nr > 0 && nr <= mrows && nc > 0 && nc <= mcols)
+                        i = m(r,c)-int16(mmin)+1;
+                        j = m(nr,nc)-int16(mmin)+1;
+                        com(i,j) = com(i,j) + 1;
+                    end
+                end
+            end
+        end
+    end    
+    
+    %convert to floating-point data for analysis
+    com = double(com);
+    
+    % return feature vector
+    h = calcHaralick(com); 
+    
+end