diff --git a/matlab/+SSF/getClipLimits.m b/matlab/+SSF/getClipLimits.m index c3d93db28f4b9fd2de248cffb944b7124b238f61..5eb239d722123d4d52ddce3616e4cc7fe3158b7b 100644 --- a/matlab/+SSF/getClipLimits.m +++ b/matlab/+SSF/getClipLimits.m @@ -29,10 +29,9 @@ parfor ff=1:length(flist) end kymoPixels = vertcat(kymoPixels{:}); -cl = [mean(kymoPixels)-std(kymoPixels), mean(kymoPixels)+std(kymoPixels)]; -q1 = length(find(kymoPixels<cl(1)))./length(kymoPixels); -q2 = 1 - length(find(kymoPixels>cl(2)))./length(kymoPixels); -pxTarget = linspace(q1,q2,254); -clipLimits = quantile(kymoPixels,pxTarget); + +clip_neg = SSF.getClipQuantiles(kymoPixels(kymoPixels<0),127); +clip_pos = SSF.getClipQuantiles(kymoPixels(kymoPixels>0),127); +clipLimits = [clip_neg,clip_pos]; clipLimits = repmat({clipLimits},length(flist),1); 4; diff --git a/matlab/+SSF/getClipQuantiles.m b/matlab/+SSF/getClipQuantiles.m new file mode 100644 index 0000000000000000000000000000000000000000..b6cf656da7db13c1329c2e9925aea4501b021cff --- /dev/null +++ b/matlab/+SSF/getClipQuantiles.m @@ -0,0 +1,12 @@ +function clipLimits = getClipQuantiles(voxels,nQuant) +% +% mx = mean(voxels); +% sx = std(voxels); +% cl = [mx-sx, mx+sx]; +% q1 = length(find(voxels<cl(1)))./length(voxels); +% q2 = 1 - length(find(voxels>cl(2)))./length(voxels); +% pxTarget = linspace(q1,q2,nQuant); +% clipLimits = quantile(voxels,pxTarget); + +pxTarget = linspace(2.5,97.5,nQuant); +clipLimits = prctile(voxels,pxTarget); diff --git a/matlab/+SSF/go_ssf_ncd.m b/matlab/+SSF/go_ssf_ncd.m index db4ad479a60237e9b7570dff9c6a1d6849d486c6..5a06be400d6cd46bdf199c095f77668f5f3918fc 100644 --- a/matlab/+SSF/go_ssf_ncd.m +++ b/matlab/+SSF/go_ssf_ncd.m @@ -24,7 +24,7 @@ kymoPixels = {}; p = ljsStartParallel(); % -if ~exist('clipLimits','var') +if ~exist('clipLimits','var') || isempty(clipLimits) clipLimits = SSF.getClipLimits(flist,targetChannels,nKeep,tClip); end %