first commit
This commit is contained in:
60
Flowcytometer_Focusing_Jeevan2018/focusstack_3.m
Normal file
60
Flowcytometer_Focusing_Jeevan2018/focusstack_3.m
Normal file
@@ -0,0 +1,60 @@
|
||||
function [Zval, Variance] = focusstack_3(s,vid,z)
|
||||
t1 = toc;currzpos=z;
|
||||
% fINECRUDE AF.
|
||||
Z_travel_for_crude = 1000; crude_step_count = 50;
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
crude_pulse_count = Z_travel_for_crude / crude_step_count;
|
||||
crude_max_var=0;
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% go to starting Z loc (we've hit limit switch via arduino already so its z=0)
|
||||
crude_start_loc = z - (Z_travel_for_crude/2);
|
||||
gotoZ(s,crude_start_loc,currzpos); currzpos=crude_start_loc;
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% now keep going up and taking var
|
||||
crude_curr_loc = crude_start_loc;
|
||||
|
||||
for i=1: crude_pulse_count
|
||||
% variance
|
||||
crude_img = double(getsnapshot(vid)); crude_curr_var=var(crude_img(:));
|
||||
|
||||
if (crude_curr_var > crude_max_var)
|
||||
crude_max_var = crude_curr_var;
|
||||
crude_loc_max_var = crude_curr_loc;
|
||||
end
|
||||
% update loc
|
||||
crude_curr_loc = crude_curr_loc + crude_step_count ;
|
||||
gotoZ(s,crude_curr_loc,currzpos); currzpos=crude_curr_loc;
|
||||
end
|
||||
gotoZ(s,crude_loc_max_var,currzpos);currzpos=crude_loc_max_var;
|
||||
|
||||
% The fine AF begins here
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
Ztotaltravel = 100; final_go_backpulses = 0 ;
|
||||
currZ = crude_loc_max_var;
|
||||
|
||||
% first go above
|
||||
start_above_loc = currZ - (Ztotaltravel/2);
|
||||
gotoZ(s,start_above_loc,currzpos);currzpos=start_above_loc;
|
||||
% now build the var array
|
||||
localAF_loc_array = zeros(1,Ztotaltravel); localAF_var_array = zeros(1,Ztotaltravel);
|
||||
localAF_curr_loc = start_above_loc;
|
||||
for q=1:(Ztotaltravel/5)
|
||||
% location
|
||||
localAF_loc_array(q) = localAF_curr_loc;
|
||||
% variance
|
||||
localAF_img = double(getsnapshot(vid)); localAF_var_array(q)=var(localAF_img(:));
|
||||
|
||||
% move and update loc
|
||||
localAF_curr_loc = localAF_curr_loc + 5; gotoZ(s,localAF_curr_loc,currzpos);
|
||||
currzpos=localAF_curr_loc;
|
||||
end
|
||||
|
||||
% Finally go to the max var location
|
||||
index_of_max_var = localAF_var_array == max(localAF_var_array);
|
||||
loc_of_max_var = localAF_loc_array(index_of_max_var) - final_go_backpulses ;
|
||||
gotoZ(s,loc_of_max_var,currzpos);currzpos=loc_of_max_var;
|
||||
Zval = loc_of_max_var;
|
||||
Variance = max(localAF_var_array);
|
||||
t2 = toc;
|
||||
disp(t2-t1)
|
||||
end
|
||||
Reference in New Issue
Block a user