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

plate,blob updates

parent 1d5703f1
Branches
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)
% 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
radii = {[0.5,8,8],[5,5,5],[0,0,0]}; % plate,blob
% radii = {[0.5,8,8]}; % plate
% 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'),:);
t1 = tS;
t2 = tD;
% tO = tblMeta(contains(tblMeta.scanType,'Optic'),:);
% tM = tblMeta(contains(tblMeta.scanType,'Macular'),:);
% t3 = tO;
% t4 = tM;
tO = tblMeta(contains(tblMeta.scanType,'Optic'),:);
tM = tblMeta(contains(tblMeta.scanType,'Macular'),:);
t3 = tO;
t4 = tM;
clf;hold on
plot3(t1.Y(:,1),t1.Y(:,2),t1.Y(:,3),'r*')
plot3(t2.Y(:,1),t2.Y(:,2),t2.Y(:,3),'og')
% plot3(t3.Y(:,1),t3.Y(:,2),t3.Y(:,3),'mx')
% plot3(t4.Y(:,1),t4.Y(:,2),t4.Y(:,3),'cs')
legend({'OS','OD'})
xlabel('NCD1')
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
\ 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