macro 'Convert Line Plot to Points [C]'; { Requires a binary image conatining a black plot on a white background. Select the plot before running this macro. It may be necessary to increase Max Measurements in Options. } var left,top,width,height,i,nPixels,mean,mode,min,max:integer; begin RequiresVersion(1.45); Measure; GetResults(nPixels,mean,mode,min,max); if (histogram[0]+histogram[255])<>nPixels then begin PutMessage('This macro only works on binary images.'); exit; end; if histogram[0]width; RotateRight(true); SetOptions('X-Y Center'); LabelParticles(false); SetParticleSize(1,999999); InvertY(false); AnalyzeParticles; RestoreState; end; macro 'Plot Points [P]'; { Plots the data points contained in the X and Y results columns. Note that X and Y are reversed because Analyze Particles scans from top to bottom, not left to right. } var xmin,xmax,ymin,ymax,i,xscale,yscale:real; width,height,margin,pwidth,pheight:integer; begin SaveState; margin:=40; width:=500; height:=300; xmin:=999999; xmax:=-999999; ymin:=999999; ymax:=-999999; for i:=1 to rCount do begin if rX[i]xmax then xmax:=rX[i]; if rY[i]ymax then ymax:=rY[i]; end; SetNewSize(width,height); SetForeground(255); SetBackground(0); MakeNewWindow('Plot'); pwidth:=width-2*margin; pheight:=height-2*margin; xscale:=pheight/(xmax-xmin); yscale:=pwidth/(ymax-ymin); SetForeground(255); SetBackground(0); MoveTo(margin,margin); for i:=1 to rCount do begin LineTo(margin+(rY[i]-ymin)*yscale,margin+(rX[i]-xmin)*xscale); end; MakeRoi(margin,margin,pwidth+1,pheight+2); MoveTo(margin,margin); LineTo(margin+pwidth,margin); MoveTo(margin,margin); LineTo(margin,margin+pheight); FlipVertical; KillRoi; SetFont('Geneva'); SetFontSize(9); SetText('Centered'); MoveTo(margin+4,margin+pheight+12); writeln(ymin:1:2); MoveTo(margin+pwidth,margin+pheight+12); writeln(ymax:1:2); SetText('Right Justified'); MoveTo(margin-2,margin+pheight-5); writeln(xmin:1:2); MoveTo(margin-2,margin); writeln(xmax:1:2); RestoreState; end; macro 'Clear Outside [O]' {Outline the line plot with the wand tool and then use this macro to} {erase everything else.} begin Copy; SelectAll; Clear; RestoreRoi; Paste; KillRoi; end;