mirror of
https://github.com/c-sooyoung/fold_slice.git
synced 2026-09-17 22:59:07 +09:00
initial commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
% FIND_RECONSTRUCTION_ROI_EXTERNAL precalculate the reconstruction regions
|
||||
% Modified by YJ for external use outside the GPU engines
|
||||
% ROI is consistent with "obj_proj" in LSQML.m
|
||||
%
|
||||
% [oROI, oROI_vec, sub_px_shift] = find_reconstruction_ROI2( positions,Np_o, Np_p )
|
||||
%
|
||||
% ** positions Npox*2 vector of scanning positions
|
||||
% ** Np_o object size
|
||||
% ** Np_p probe size
|
||||
%
|
||||
% returns:
|
||||
% ++ oROI cell array contaning range for each view
|
||||
% ++ oROI_vec cell array contaning range for each view in vector shape
|
||||
% ++ sub_px_shift subpixel rounding errors, used for subpixel shift
|
||||
%
|
||||
|
||||
function [oROI, oROI_vec, sub_px_shift] = find_reconstruction_ROI_external( positions,Np_o, Np_p )
|
||||
|
||||
positions = positions(:,[2,1]);
|
||||
positions = positions + ceil(Np_o/2-Np_p/2);
|
||||
sub_px_shift = positions - round(positions);
|
||||
|
||||
sub_px_shift = sub_px_shift(:,[2,1]); % return to the original XY coordinates
|
||||
|
||||
positions = round(positions);
|
||||
|
||||
range = [min(positions), max(positions)+ Np_p];
|
||||
|
||||
if any(range(1:2) < 0) || any(range(3:4) > Np_o)
|
||||
error('Object size is too small, not enough space for probes !! \nposition range: %i %i %i %i, \nobject size: %i %i ', range(1), range(2), range(3), range(4), Np_o(1), Np_o(2))
|
||||
end
|
||||
|
||||
oROI = cell(2,1);
|
||||
for dim = 1:2
|
||||
oROI{dim} = [positions(:,dim),positions(:,dim)+ Np_p(dim)-1];
|
||||
oROI{dim} = uint32(oROI{dim});
|
||||
end
|
||||
|
||||
if nargout > 1
|
||||
Npos = length(positions);
|
||||
oROI_vec = cell(Npos,2);
|
||||
for ii = 1:Npos
|
||||
for i = 1:2
|
||||
oROI_vec{ii,i} = (oROI{i}(ii,1)):(oROI{i}(ii,2));
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user