macro 'Average LIVE'; { Displays averaged video image in real time. } var i,x,y,width,height,pid:integer; begin RequiresVersion(1.53); for i:= 2 to 100000 do begin StartCapturing; AverageFrames; end end; macro 'CaptureAveraged'; var x,y,i,s,f,t,width,height,pid:integer; begin RequiresVersion(1.53); SelectWindow('Camera'); GetRoi(x,y,width,height); if width=0 then begin PutMessage('Rectangular selection required.'); exit; end; SetNewSize(width,height); MakeNewStack('TrackStack'); s:=TickCount; for i:= 1 to 20 do begin SelectWindow('Camera'); MakeRoi(x,y,width,height); AverageFrames; Copy; SelectWindow('TrackStack'); Paste; AddSlice; end; f:=TickCount; SelectWindow('Camera'); MakeRoi(x,y,width,height); AverageFrames; Copy; SelectWindow('TrackStack'); SelectSlice(21); Paste; SelectWindow('Camera'); Dispose; t:=f-s; PutMessage('Time in sixtieth sec='t); end; macro 'AutoTrack'; var t:real; x,y,i,k,m,s,f,width,height,pid:integer; begin RequiresVersion(1.53); SelectWindow('Camera'); GetRoi(x,y,width,height); if width=0 then begin PutMessage('Rectangular selection required.'); exit; end; SetNewSize(width,height); MakeNewStack('TrackStack'); s:=TickCount; for i:= 1 to 20 do begin SelectWindow('Camera'); MakeRoi(x,y,width,height); AverageFrames; Copy; SelectWindow('TrackStack'); Paste; AddSlice; end; f:=TickCount; SelectWindow('Camera'); MakeRoi(x,y,width,height); AverageFrames; Copy; SelectWindow('TrackStack'); SelectSlice(21); Paste; SelectWindow('Camera'); Dispose; for i:= 1 to nSlices do begin SelectSlice(i); invert; SubtractBackground('2D Rolling Ball(faster)',50); EnhanceContrast; ApplyLut; SetThreshold(170); MakeBinary; Erode; Erode; end; MakeNewWindow('TRACKSET'); SelectWindow('TrackStack'); m:=nSlices; k:=m-1; for i:= 2 to k do begin SelectSlice(i); SelectAll; Copy; SelectWindow('TRACKSET'); Paste; SetOption; DoReplace; SelectWindow('TrackStack'); end; SelectWindow('TRACKSET'); SelectAll; MultiplybyConstant(0.5); SelectWindow('TrackStack'); SelectSlice(1); SelectAll; Copy; SelectWindow('TRACKSET'); Paste; Add; MultiplybyConstant(0.75); SelectWindow('TrackStack'); SelectSlice(m); SelectAll; Copy; SelectWindow('TRACKSET'); Paste; Add; t:=f-s; rMinor[1]:=t; PutMessage('Time in sixtieth sec='t); end; macro 'TrackLength'; var a,b,i,t:integer; TotalLength,c,d,e,s:real; begin SelectWindow('TRACKSET'); Duplicate('TRACKSET-labeled'); SelectWindow('TRACKSET-labeled'); SetThreshold(1); MakeBinary; SelectWindow('TrackStack'); SelectSlice(1); SelectAll; Copy; SelectWindow('TRACKSET-labeled'); Paste; Subtract; SetThreshold(254); MakeBinary; SetOptions('Area,Length'); IgnoreParticlesTouchingEdge(true); LabelParticles(true); SetMajorLabel('Speed u/s'); a:=GetNumber('Enter min size.',40); b:=GetNumber('Enter max size.',4000); t:=GetNumber('Verify time in sixtieth sec.',rMinor[1]); s:=GetNumber('units/pixel?',13.2); SetScale(s,'µm'); SetParticleSize(a,b); AnalyzeParticles; for i:=1 to rCount do begin TotalLength:=0; c:=(rLength[i]*rLength[i])-(16*rArea[i]); e:=abs(c); d:=sqrt(e); TotalLength:=(rLength[i]+d)*15/t; rMajor[i]:=TotalLength; ShowResults; end; end; macro 'AutoTrack after capture'; var t:real; x,y,i,k,m,s,f,width,height,pid:integer; begin for i:= 1 to nSlices do begin SelectSlice(i); invert; SubtractBackground('2D Rolling Ball(faster)',50); EnhanceContrast; ApplyLut; SetThreshold(170); MakeBinary; Erode; Erode; end; MakeNewWindow('TRACKSET'); SelectWindow('TrackStack'); m:=nSlices; k:=m-1; for i:= 2 to k do begin SelectSlice(i); SelectAll; Copy; SelectWindow('TRACKSET'); Paste; SetOption; DoReplace; SelectWindow('TrackStack'); end; SelectWindow('TRACKSET'); SelectAll; MultiplybyConstant(0.5); SelectWindow('TrackStack'); SelectSlice(1); SelectAll; Copy; SelectWindow('TRACKSET'); Paste; Add; MultiplybyConstant(0.75); SelectWindow('TrackStack'); SelectSlice(m); SelectAll; Copy; SelectWindow('TRACKSET'); Paste; Add; end;