From 3126d5fc495d819d0095672e4bc104058f57a0c3 Mon Sep 17 00:00:00 2001 From: ac <andrew.r.cohen@drexel.edu> Date: Wed, 21 May 2025 10:09:03 -0400 Subject: [PATCH] quantizeImX moved from getImf --- .gitignore | 4 +++ src/MATLAB/+RSF/getImf.m | 51 ------------------------------- src/MATLAB/+RSF/quantizeImX.m | 50 ++++++++++++++++++++++++++++++ src/MATLAB/clusterExamples/goLR.m | 8 +++-- 4 files changed, 59 insertions(+), 54 deletions(-) create mode 100644 .gitignore create mode 100644 src/MATLAB/+RSF/quantizeImX.m diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0846812 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.png +src/MATLAB/clusterExamples/*.mat +*.xlsx +*.rtf diff --git a/src/MATLAB/+RSF/getImf.m b/src/MATLAB/+RSF/getImf.m index fbe762a..81b4d60 100644 --- a/src/MATLAB/+RSF/getImf.m +++ b/src/MATLAB/+RSF/getImf.m @@ -35,9 +35,6 @@ while startTarget <= size(pData,1) end end end -% NGPU = HIP.Cuda.DeviceCount; -% p = ljsStartParallel(8*NGPU); - end startTarget = startTarget + N_CUDA_PROCS; for i = 1:N_CUDA_PROCS @@ -47,52 +44,4 @@ while startTarget <= size(pData,1) end end -px = {}; % critical voxels -mx = []; % mean by stack -sx = []; % sigma by stack -for i = 1 : length(imf) - for c = 1:size(imf{i},4) - i1 = imf{i}(:,:,:,c); - px{i,c} = i1(find(i1)); - mx(i,c) = mean(px{i,c}); - sx(i,c) = std(px{i,c}); - end -end - -clipRange = [2.5,97.5]; -% clipRange = [0.5,99.5]; -for c = 1:size(imf{1},4) - p1 = vertcat(px{:,c}); - px_pos = p1(p1>0); - px_neg = abs(p1(p1<0)); - - clip_pos(c,:) = prctile(px_pos,clipRange); - clip_neg(c,:) = prctile(px_neg,clipRange); -end -4; -for i = 1:length(imf) - for c = 1 : size(imf{i},4) - if all(0==imf{i}(:,:,c)) - continue - end - imp = imf{i}(:,:,:,c); - imp(imp<0)=0; - imn = imf{i}(:,:,:,c); - imn(imn>0)=0; - imn=abs(imn); - imq_pos = SSF.quantize8(imp,clip_pos(c,:)); - imq_neg = SSF.quantize8(imn,clip_neg(c,:)); - if all(0==imq_pos) - imf{i}(:,:,:,c) = imq_neg; - else - % [0,127] for imq_neg, [128,255] imq_pos - imq_pos = (0.5 .* imq_pos) + uint8(128 .* (imq_pos>0)); - imq_neg = 0.5 .* imq_neg ; - imf{i}(:,:,:,c) = (imq_neg + imq_pos); - end - - end - - imf{i} = uint8(imf{i}); -end 4; diff --git a/src/MATLAB/+RSF/quantizeImX.m b/src/MATLAB/+RSF/quantizeImX.m new file mode 100644 index 0000000..6aead30 --- /dev/null +++ b/src/MATLAB/+RSF/quantizeImX.m @@ -0,0 +1,50 @@ +% imf is a cell array of images, e.g. per patient +function imf = quantizeImX(imf,clipRange) +% +px = {}; % critical voxels +for i = 1 : length(imf) + for c = 1:size(imf{i},4) + i1 = imf{i}(:,:,:,c); + px{i,c} = i1(find(i1)); + end +end +if ~exist("clipRange",'var') + clipRange = [2.5,97.5]; + % clipRange = [0.5,99.5]; + % clipRange = [0,100] +end + +for c = 1:size(imf{1},4) + p1 = vertcat(px{:,c}); + px_pos = p1(p1>0); + px_neg = abs(p1(p1<0)); + + clip_pos(c,:) = prctile(px_pos,clipRange); + clip_neg(c,:) = prctile(px_neg,clipRange); +end +4; +for i = 1:length(imf) + for c = 1 : size(imf{i},4) + if all(0==imf{i}(:,:,c)) + continue + end + imp = imf{i}(:,:,:,c); + imp(imp<0)=0; + imn = imf{i}(:,:,:,c); + imn(imn>0)=0; + imn=abs(imn); + imq_pos = SSF.quantize8(imp,clip_pos(c,:)); + imq_neg = SSF.quantize8(imn,clip_neg(c,:)); + if all(0==imq_pos) + imf{i}(:,:,:,c) = imq_neg; + else + % [0,127] for imq_neg, [128,255] imq_pos + imq_pos = (0.5 .* imq_pos) + uint8(128 .* (imq_pos>0)); + imq_neg = 0.5 .* imq_neg ; + imf{i}(:,:,:,c) = (imq_neg + imq_pos); + end + + end + + imf{i} = uint8(imf{i}); +end diff --git a/src/MATLAB/clusterExamples/goLR.m b/src/MATLAB/clusterExamples/goLR.m index 80bfc5d..2901e21 100644 --- a/src/MATLAB/clusterExamples/goLR.m +++ b/src/MATLAB/clusterExamples/goLR.m @@ -1,5 +1,5 @@ tic -ROOT = '/g/leverjs/Schuman_OCT/OCT/qualifiedYes'; +ROOT = '/g/leverjs/Schuman_OCT/OCT/qualified'; PID = 'P10010'; % PID = 'P10125' @@ -16,11 +16,13 @@ tblMeta = tblMeta(contains(tblMeta.scanType,'Optic'),:); p = ljsStartParallel(96); -% radii = {[0.5,8,8],[5,5,5],[0,0,0]}; % plate,blob -radii = {[0.5,8,8]}; % plate +radii = {[0.5,8,8],[5,5,5],[0,0,0]}; % plate,blob +% radii = {[0.5,8,8]}; % plate +% radii = {[5,5,5]}; % radii = {[3]} % dark tubes imf = RSF.getImf(tblMeta,radii); +imf = RSF.quantizeImX(imf,[2.5,97.5]); d = []; parfor i = 1:length(imf) dj = []; -- GitLab