Skip to content
Snippets Groups Projects
Commit 16094486 authored by ac's avatar ac
Browse files

plate,blob updates

parent 1d5703f1
No related branches found
No related tags found
No related merge requests found
function imf = getImf(pData,radii,scanType)
% radii is 1-element or 3-element cell array. [0,0,0] for unused channel
% FLIF takes 1 or 3 UBYTE
radii = {[0.5,8,8],[5,5,5],[10,10,10]}; % plate,blob
% NGPU = HIP.Cuda.DeviceCount;
% p = ljsStartParallel(8*NGPU);
N_CUDA_PROCS = 48;
startTarget = 1;
imf = {};
im1 = Composite();
pp = Composite();
while startTarget <= size(pData,1)
spmd
pp = spmdIndex - 1 + startTarget;
if spmdIndex <= N_CUDA_PROCS && pp <= size(pData,1)
strDB = fullfile(pData.folder{pp},pData.filename{pp});
[im] = SSF.loadImage(strDB,1);
% 3-channel plate,blob,0
for c = 1:length(radii)
if all(0==radii{c})
im1(:,:,:,c) = zeros(size(im));
else
im1(:,:,:,c) = RSF.imPreProcess(im,radii{c});
end
end
end
startTarget = startTarget + N_CUDA_PROCS;
for i = 1:N_CUDA_PROCS
if pp{i} <= size(pData,1)
imf{pp{i}} = im1{i};
end
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;
...@@ -2,7 +2,7 @@ function imf = getImf(pData,radii,scanType) ...@@ -2,7 +2,7 @@ function imf = getImf(pData,radii,scanType)
% radii is 1-element or 3-element cell array. [0,0,0] for unused channel % radii is 1-element or 3-element cell array. [0,0,0] for unused channel
% FLIF takes 1 or 3 UBYTE % FLIF takes 1 or 3 UBYTE
radii = {[0.5,8,8],[5,5,5],[10,10,10]}; % plate,blob radii = {[0.5,8,8],[5,5,5],[0,0,0]}; % plate,blob
% radii = {[0.5,8,8]}; % plate % radii = {[0.5,8,8]}; % plate
% NGPU = HIP.Cuda.DeviceCount; % NGPU = HIP.Cuda.DeviceCount;
......
% clipLimits = [minVal,maxVal];
function [im, clipLimits] = quantize8(i1,i2)
if isa(i1,'uint8') && isa(i2,'uint8')
return
end
pix = [i1(find(i1)),i2(find(i2))];
% clip at 99.9%
clipLimits = prctile(pix,[0.05,99.95]);
im = max(im,clipLimits(1));
im = min(im,clipLimits(end));
im = (im - clipLimits(1)) ./ (clipLimits(end) - clipLimits(1));
im = im2uint8(im);
im(0 == im_in) = 0;
4;
...@@ -34,16 +34,20 @@ tD = tblMeta(strcmp(tblMeta.eye,'OS'),:); ...@@ -34,16 +34,20 @@ tD = tblMeta(strcmp(tblMeta.eye,'OS'),:);
t1 = tS; t1 = tS;
t2 = tD; t2 = tD;
% tO = tblMeta(contains(tblMeta.scanType,'Optic'),:); tO = tblMeta(contains(tblMeta.scanType,'Optic'),:);
% tM = tblMeta(contains(tblMeta.scanType,'Macular'),:); tM = tblMeta(contains(tblMeta.scanType,'Macular'),:);
% t3 = tO; t3 = tO;
% t4 = tM; t4 = tM;
clf;hold on clf;hold on
plot3(t1.Y(:,1),t1.Y(:,2),t1.Y(:,3),'r*') plot3(t1.Y(:,1),t1.Y(:,2),t1.Y(:,3),'r*')
plot3(t2.Y(:,1),t2.Y(:,2),t2.Y(:,3),'og') plot3(t2.Y(:,1),t2.Y(:,2),t2.Y(:,3),'og')
legend({'OS','OD'})
% plot3(t3.Y(:,1),t3.Y(:,2),t3.Y(:,3),'mx') xlabel('NCD1')
% plot3(t4.Y(:,1),t4.Y(:,2),t4.Y(:,3),'cs') ylabel('NCD2')
zlabel('NCD3')
plot3(t3.Y(:,1),t3.Y(:,2),t3.Y(:,3),'mx')
plot3(t4.Y(:,1),t4.Y(:,2),t4.Y(:,3),'cs')
legend({'ONH','macula'})
toc toc
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment