mirror of
https://github.com/c-sooyoung/fold_slice.git
synced 2026-09-17 20:39:08 +09:00
124 lines
4.9 KiB
Matlab
124 lines
4.9 KiB
Matlab
% Integrates frames from a loopscan
|
||
%
|
||
% Syntax:
|
||
% [int] = integrate_frames(base_path,scan_num,plotfigure,det_num,savedata,maskfilename,masktype)
|
||
% Needed parameters: base_path (e.g. '~/Data10/')
|
||
% scan_num (scan number)
|
||
% Optional parameters: plotfigure (figure number for final plot, 0 for no plotting, by default is 0)
|
||
% det_num (detector number, default 1)
|
||
% savedata (=1 to save data in 'analysis/integrated_frames/', default 0)
|
||
% maskfilename (valid mask file name. If empty [], no mask used)
|
||
% masktype (type of valid mask file name: 'bin' for binary or 'Oliver')
|
||
% 14-11-2012
|
||
|
||
%*-----------------------------------------------------------------------*
|
||
%| |
|
||
%| Except where otherwise noted, this work is licensed under a |
|
||
%| Creative Commons Attribution-NonCommercial-ShareAlike 4.0 |
|
||
%| International (CC BY-NC-SA 4.0) license. |
|
||
%| |
|
||
%| Copyright (c) 2017 by Paul Scherrer Institute (http://www.psi.ch) |
|
||
%| |
|
||
%| Author: CXS group, PSI |
|
||
%*-----------------------------------------------------------------------*
|
||
% You may use this code with the following provisions:
|
||
%
|
||
% If the code is fully or partially redistributed, or rewritten in another
|
||
% computing language this notice should be included in the redistribution.
|
||
%
|
||
% If this code, or subfunctions or parts of it, is used for research in a
|
||
% publication or if it is fully or partially rewritten for another
|
||
% computing language the authors and institution should be acknowledged
|
||
% in written form in the publication: “Data processing was carried out
|
||
% using the “cSAXS matlab package” developed by the CXS group,
|
||
% Paul Scherrer Institut, Switzerland.”
|
||
% Variations on the latter text can be incorporated upon discussion with
|
||
% the CXS group if needed to more specifically reflect the use of the package
|
||
% for the published work.
|
||
%
|
||
% A publication that focuses on describing features, or parameters, that
|
||
% are already existing in the code should be first discussed with the
|
||
% authors.
|
||
%
|
||
% This code and subroutines are part of a continuous development, they
|
||
% are provided “as they are” without guarantees or liability on part
|
||
% of PSI or the authors. It is the user responsibility to ensure its
|
||
% proper use and the correctness of the results.
|
||
|
||
function [int] = integrate_frames(base_path,scan_num,plotfigure,det_num,savedata,maskfile,masktype)
|
||
import beamline.pilatus_valid_pixel_roi
|
||
import io.image_read
|
||
import io.spec_read
|
||
import utils.compile_x12sa_filename
|
||
|
||
if exist('det_num') == 0
|
||
det_num=1;
|
||
end
|
||
if exist('savedata') == 0
|
||
savedata=0;
|
||
end
|
||
if exist('maskfile') == 0
|
||
maskfile=[];
|
||
end
|
||
if exist('plotfigure') == 0
|
||
plotfigure = 0;
|
||
end
|
||
if exist('masktype') == 0
|
||
plotfigure ='Oliver';
|
||
end
|
||
%maskfile=[];
|
||
if savedata
|
||
savefolder=[base_path 'analysis/integrated_frames/'];
|
||
if savefolder ~= 7
|
||
mkdir(savefolder)
|
||
end
|
||
end
|
||
|
||
path=sprintf('%spilatus_%01d',base_path,det_num);
|
||
filename0=compile_x12sa_filename(scan_num,0);
|
||
data0=image_read(filename0);
|
||
img0=data0.data;
|
||
dims=size(img0);
|
||
S=spec_read(base_path,'ScanNr',scan_num);
|
||
num=size(S.bpm4i,1);
|
||
|
||
if ~isempty(maskfile)
|
||
switch lower(masktype)
|
||
case 'oliver'
|
||
load(maskfile)
|
||
valid_mask = pilatus_valid_pixel_roi(valid_mask,'RoiSize',size(img0));
|
||
mask = zeros(size(img0));
|
||
mask(valid_mask.indices) = 1;
|
||
case 'bin'
|
||
load(maskfile)
|
||
otherwise
|
||
disp('masktype unknown')
|
||
end
|
||
else
|
||
mask = ones(size(img0));
|
||
end
|
||
|
||
int=img0*0;
|
||
stack=zeros(dims(1),dims(2),num);
|
||
|
||
for jj=1:num
|
||
filename=compile_x12sa_filename(scan_num,jj-1);
|
||
data1=image_read(filename);
|
||
img=data1.data.*mask;
|
||
int=int+img;
|
||
stack(:,:,jj)=img;
|
||
end
|
||
|
||
if plotfigure ~= 0
|
||
figure(plotfigure)
|
||
figure_position=[187 295 817 650];
|
||
set(gcf,'Position',figure_position);
|
||
imagesc(log10(int)); axis xy equal tight; colorbar; colormap jet
|
||
title(sprintf('integrated frames S%05d',scan_num))
|
||
end
|
||
if savedata
|
||
savefilename=sprintf('%s/S%05d_%01d_integrated_frames',savefolder,scan_num,det_num);
|
||
save([savefilename '.mat'],'int')
|
||
print('-f2','-djpeg','-r300',[ savefilename '.jpg'] );
|
||
print('-f2','-depsc','-r1200',[savefilename '.eps'] );
|
||
end |