diff --git a/src/MATLAB/Hessian/drawEye.m b/src/MATLAB/Hessian/drawEye.m
index 6621fcb8a6eb638ae19266b3b54b9b46d69faa57..412856fb21a17605902bd4562358a72d08f94444 100644
--- a/src/MATLAB/Hessian/drawEye.m
+++ b/src/MATLAB/Hessian/drawEye.m
@@ -11,10 +11,31 @@ thickness = 8; % pixels
 sigma = 1/sqrt(3) * thickness * vx;
 
 % imLoG = HIP.LoG(im,sigma,0);
-plateRadii = 1/sqrt(3) * [0.5,8,8];
+% % imcomplement :: dark tubes in im -> bright tubes in imLoG; 
+% % complement makes bright tubes dark again. same below. 
+% imLoG = mat2gray((imLoG));
+% 
+% plateRadii = 1/sqrt(3) * [0.5,8,8];
 % imPlate = HIP.LoG(im,plateRadii,0);
+% imPlate = mat2gray(imcomplement(imPlate));
+% 
 % imGauss = HIP.Gaussian(im,sigma,1,0);
+% imGauss = mat2gray(imcomplement(imGauss));
+% 
+% thickness = 3; % pixels
+% sigma = 1/sqrt(3) * thickness * vx;
+% bw = imbinarize(im);
+% bw = bwareaopen(bw,1e3);
+% bw = imdilate(bw,ones(4*thickness));
 % 
+% imHess = getHessian(im,bw,sigma);
+% imHessLoG = getHessian(imcomplement(imLoG),bw,sigma);
+% imHessLoG = mat2gray(imHessLoG);
+% imLoG = imLoG .* bw;
+% imPlate = imPlate .* bw;
+% imGauss = imGauss .* bw;
+% imHessLoG = imHessLoG .* bw;
+
 if exist('v','var')
     close(v)
 end
@@ -22,24 +43,26 @@ v = VideoWriter('gaussEye.mp4','MPEG-4');
 
 v.Quality = 100;
 v.open();
-cb1 = min([min(im(:)),min(imGauss(:)),min(imPlate(:)),min(imLoG(:))]);
-cb2 = max([max(im(:)),max(imGauss(:)),max(imPlate(:)),max(imLoG(:))]);
+
+imCompositeFM = 0 * squeeze(imfm(1,:,:));
+
 for i = 1:size(im,1)
-%     imc1 = ind2rgb(gray2ind(squeeze(im(i,:,:))',255),gray(255));
-%     imc2 = ind2rgb(gray2ind(squeeze(imGauss(i,:,:))',255),parula(255));
-%     imc3 = ind2rgb(gray2ind(squeeze(imLoG(i,:,:))',255),parula(255));
-%     im2 = [imc1,imc2,imc3];
-    im2 = squeeze([im(i,:,:),imGauss(i,:,:),imLoG(i,:,:),imPlate(i,:,:)]);
-    im2 = im2';   
+    if all(0==vertcat(bw(i,:,:)),'all'),continue,end
+    imCompositeFM = max(imCompositeFM,squeeze(imfm(i,:,:))');
+    im2 = squeeze([im(i,:,:),imPlate(i,:,:),imLoG(i,:,:)])';
+    im2 = [im2,imCompositeFM];
+%     im22 = squeeze([imLoG(i,:,:),imHessLoG(i,:,:),imHess(i,:,:)])';
+%     im2 = [im21;im22];   
     clf;imagesc(im2);axis image;axis off
     text(5,5,['Y = ' num2str(i)],'color','w')
-    text(205,5,'Gauss Blob','color','w')
-    text(405,5,'LoG Blob','color','w')
-    text(605,5,'LoG Plate','color','w')
+    text(205,5,'LoG bright plate','color','w')
+    text(405,5,'LoG dark blob','color','w')    
+    text(605,5,'fibermetric (LoG dark blob) composite','color','w')
     cb = colorbar();
-    cb.Limits = [cb1,cb2];
-%     cb.Ticks = [0,0.5,1];cb.TickLabels={'-1.0','0.0','1.0'};
-    f = getframe(gca);
+    cb.Limits = [0,1];
+%     cb.Limits = [cb1,cb2];
+%     cb.Ticks = [0,1];cb.TickLabels={'0.0','1.0'};
+    f = getframe(gcf);
     v.writeVideo(f);
     
 end
diff --git a/src/MATLAB/Hessian/getHessian.m b/src/MATLAB/Hessian/getHessian.m
new file mode 100644
index 0000000000000000000000000000000000000000..aceb1292008523df6da237cfd018024d4e7d9ae4
--- /dev/null
+++ b/src/MATLAB/Hessian/getHessian.m
@@ -0,0 +1,49 @@
+function imout = getHessian(im,bw,sigma)
+
+% im = mat2gray(im);
+Ig = HIP.Gaussian(im,sigma,1,0);
+[gx,gy,gz] = gradient(Ig);
+[gxx,gxy,gxz] = gradient(gx);
+[gyx,gyy,gyz] = gradient(gy);
+[gzx,gzy,gzz] = gradient(gz);
+
+% vx = voxelSize;
+% for d1 = 1:length(vx)
+%     for d2 = 1:length(vx)
+%         v_xyz(d1,d2) = vx(d1) * vx(d2);
+%     end
+% end
+
+imout   = 0 * im;
+
+idx = find(bw);
+for i = 1:length(idx)
+    idx1 = idx(i);    
+       hessian1 = [ gxx(idx1), gxy(idx1), gxz(idx1);gyx(idx1),gyy(idx1),gyz(idx1);...
+        gzx(idx1),gzy(idx1),gzz(idx1)];
+    % divide by voxelSize for anisotropy
+%        hessian1 = hessian1 ./ v_xyz;
+
+    [evec,eigval] = eig(hessian1);
+    
+    eigval = diag(eigval);
+    
+    if all(0==eigval),continue,end
+    if any(isnan(eigval)),continue,end
+    [~,idxev] = sort(abs(eigval));
+    ev = eigval(idxev);
+%     ev = ev ./ norm(ev);    
+    if any(ev(2:3) > 0)
+        % dark tubes here, see Frangi table 1, \lamdba_{2,3} both H+
+        imout(idx1) = eps;
+        continue
+    end
+    ev = abs(ev);
+    rb =  ev(1) / sqrt(ev(2)*ev(3)) ; 
+    ra = ev(2)/ev(3); 
+    s = im(idx1);
+    v =  (1-exp(-ra^2 / 0.5) ) * (exp(-rb^2 / 0.5)) * (1 - exp(-s^2 / 0.5));
+    imout(idx1) = v;
+end
+
+imout = mat2gray(imout);
\ No newline at end of file
diff --git a/src/MATLAB/Hessian/goHessian.asv b/src/MATLAB/Hessian/goHessian.asv
new file mode 100644
index 0000000000000000000000000000000000000000..17dedc7dae07fda6cfaa3d93603d29deb2f08548
--- /dev/null
+++ b/src/MATLAB/Hessian/goHessian.asv
@@ -0,0 +1,66 @@
+ROOT = 'C:\Users\ANDYR\OneDrive - Drexel University\teaching\ctia\images\OCT';
+fname = 'P10010_Optic Disc Cube 200x200_3-15-2017_10-26-59_OS_sn0975_cube_raw.LEVER';
+fname = fullfile(ROOT,fname);
+
+[im,CONSTANTS] = leversc.loadImage(fname,1,1);
+im = mat2gray(im);
+voxelSize = CONSTANTS.imageData.PixelPhysicalSize;
+voxelSize([1,2]) = voxelSize([2,1]); % swap (x,y,z) to matlab column major (y,x,z)
+vx = max(voxelSize)./voxelSize;
+% [im,imf,imn,imp,bw] = loadImages(fname,[16,3,3]);
+bw = imbinarize(im);
+bw = bwareaopen(bw,1e3);
+bw = imdilate(bw,ones(6));
+
+% im = mat2gray(im);
+thickness = 4;
+Ig = HIP.Gaussian(im,thickness * vx,1,0);
+[gx,gy,gz] = gradient(Ig);
+[gxx,gxy,gxz] = gradient(gx);
+[gyx,gyy,gyz] = gradient(gy);
+[gzx,gzy,gzz] = gradient(gz);
+
+for d1 = 1:length(voxelSize)
+    for d2 = 1:length(voxelSize)
+        v_xyz(d1,d2) = voxelSize(d1) * voxelSize(d2);
+    end
+end
+
+imout   = 0 * im;
+
+idx = find(bw);
+for i = 1:length(idx)
+    idx1 = idx(i);    
+       hessian1 = [ gxx(idx1), gxy(idx1), gxz(idx1);gyx(idx1),gyy(idx1),gyz(idx1);...
+        gzx(idx1),gzy(idx1),gzz(idx1)];
+    % divide by voxelSize for anisotropy
+       hessian1 = hessian1 ./ v_xyz;
+
+    [evec,eigval] = eig(hessian1);
+    
+    eigval = diag(eigval);
+    
+    if all(0==eigval),continue,end
+    if any(isnan(eigval)),continue,end
+    [~,idxev] = sort(abs(eigval));
+    ev = eigval(idxev);
+%     ev = ev ./ norm(ev);    
+    if ev(end)>0
+        % dark vessel
+%         continue
+    end
+    if ev(end)<0
+        % bright vessel
+        imout(idx1) = eps;
+        continue
+    end
+
+    ev = abs(ev);
+    rb =  ev(1) / sqrt(ev(2)*ev(3)) ; 
+    ra = ev(2)/ev(3); 
+    s = im(idx1);
+    v =  (1-exp(-ra^2 / 0.5) ) * (exp(-rb^2 / 0.5)) * (1 - exp(-s^2 / 0.5));
+    imout(idx1) = v;
+end
+% imout = imout .* imbinarize(imout);
+4;
\ No newline at end of file
diff --git a/src/MATLAB/Hessian/goHessian.m b/src/MATLAB/Hessian/goHessian.m
index c5b53a8f802ae5e55380c0efa6ddb70cc6c70c7f..04a4069522484b24447c3ead7556c644953d9171 100644
--- a/src/MATLAB/Hessian/goHessian.m
+++ b/src/MATLAB/Hessian/goHessian.m
@@ -10,62 +10,8 @@ vx = max(voxelSize)./voxelSize;
 % [im,imf,imn,imp,bw] = loadImages(fname,[16,3,3]);
 
 thickness = 8; % pixels
-
-bw = imbinarize(im);
-bw = bwareaopen(bw,1e3);
-bw = imdilate(bw,ones(4*thickness));
-
-% im = mat2gray(im);
-
 sigma = 1/sqrt(3) * thickness * vx;
-Ig = HIP.Gaussian(im,sigma,1,0);
-[gx,gy,gz] = gradient(Ig);
-[gxx,gxy,gxz] = gradient(gx);
-[gyx,gyy,gyz] = gradient(gy);
-[gzx,gzy,gzz] = gradient(gz);
-
-vx = voxelSize;
-for d1 = 1:length(vx)
-    for d2 = 1:length(vx)
-        v_xyz(d1,d2) = vx(d1) * vx(d2);
-    end
-end
-
-imout   = 0 * im;
-
-idx = find(bw);
-for i = 1:length(idx)
-    idx1 = idx(i);    
-       hessian1 = [ gxx(idx1), gxy(idx1), gxz(idx1);gyx(idx1),gyy(idx1),gyz(idx1);...
-        gzx(idx1),gzy(idx1),gzz(idx1)];
-    % divide by voxelSize for anisotropy
-%        hessian1 = hessian1 ./ v_xyz;
-
-    [evec,eigval] = eig(hessian1);
-    
-    eigval = diag(eigval);
-    
-    if all(0==eigval),continue,end
-    if any(isnan(eigval)),continue,end
-    [~,idxev] = sort(abs(eigval));
-    ev = eigval(idxev);
-%     ev = ev ./ norm(ev);    
-    if ev(end)>0
-        % dark vessel
-%         continue
-    end
-    if ev(end)<0
-        % bright vessel
-        imout(idx1) = eps;
-        continue
-    end
 
-    ev = abs(ev);
-    rb =  ev(1) / sqrt(ev(2)*ev(3)) ; 
-    ra = ev(2)/ev(3); 
-    s = im(idx1);
-    v =  (1-exp(-ra^2 / 0.5) ) * (exp(-rb^2 / 0.5)) * (1 - exp(-s^2 / 0.5));
-    imout(idx1) = v;
-end
+imout = getHessian(im,thickness,sigma);
 % imout = imout .* imbinarize(imout);
 4;
\ No newline at end of file