diff --git a/src/matlab/+D3d/+UI/AutoTransferFunction.m b/src/matlab/+D3d/+UI/AutoTransferFunction.m index e037d5b00a0467ea7c3420750698a7ffa4d0749c..c4f3afc3d6f5dcbfafb975389ad9cc0ed99a9d2b 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();