From 64abcc0603526055069956fdc324293fd28d5fa1 Mon Sep 17 00:00:00 2001
From: Eric Wait <eric@waitphoto.com>
Date: Thu, 30 Mar 2017 16:26:48 -0400
Subject: [PATCH] Auto transfer function will deal with blank or bright images

---
 src/matlab/+D3d/+UI/AutoTransferFunction.m | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/matlab/+D3d/+UI/AutoTransferFunction.m b/src/matlab/+D3d/+UI/AutoTransferFunction.m
index e037d5b..c4f3afc 100644
--- a/src/matlab/+D3d/+UI/AutoTransferFunction.m
+++ b/src/matlab/+D3d/+UI/AutoTransferFunction.m
@@ -5,15 +5,30 @@ function AutoTransferFunction(im)
     
     for c=1:size(im,4)
         curIm = imC(:,:,:,c,:);
+        if (nnz(curIm(:))==0)
+            lb(c) = 0;
+            ub(c) = 255;
+            continue
+        end
         N = histcounts(curIm(curIm>0),255);
         
         forwardSum = cumsum(N);
         lowerBound = forwardSum > sum(N)*0.05;
-        lb(c) = find(lowerBound,1,'first');
+        l = find(lowerBound,1,'first');
+        if (isempty(l))
+            lb(c) = 0;
+        else
+            lb(c) = l;
+        end
         
         reverseSum = cumsum(N,'reverse');
         upperBound = reverseSum < sum(N)*0.005;
-        ub(c) = find(upperBound,1,'first');
+        u = find(upperBound,1,'first');
+        if (isempty(u))
+            ub(c) = 255;
+        else
+            ub(c) = u;
+        end
     end
 
     [imageData, ucolors, channelData] = D3d.UI.Ctrl.GetUserData();
-- 
GitLab