// This Macros are made for PETIS Image Analysis. // Created by Naoki Kawachi. // Version1.0.3(b) 17/Jan/2007 macro "Import ALL PETIS Images of text format" { // This Macro Make a stack image from the All PETIS Text Images in a Directory. // Select the directory and check the image property. // Set Target Text Images Directory. dir=getDirectory(""); dirlist = getFileList(dir); FILE_list = lengthOf(dirlist); j=0; for (i=0; iend;i--){ setSlice(i); run("Delete Slice"); } for (i=start-1;i>0;i--){ setSlice(i); run("Delete Slice"); } } macro "Re-Stack PETIS Image [f3]" { // This Macro Make a New Stack Image. // Choose a Target Image and Restacking. ////1. Select Target Stack Image////// if (nImages>1){ title = getTitle(); Dialog.create("Select Target Image"); Dialog.addMessage("Target Images is "+title); Dialog.show(); selectWindow(title); } else if (nImages==1){ title = getTitle(); selectWindow(title); } else if (nImages==0){ open(""); } ////2. Read Image Informations////// name=getTitle(); name_head=split(name, "."); name_head=name_head[0]; width=getWidth(); height=getHeight(); frame=nSlices; step = floor(frame/10); ////3. Set New Stack Image Parameters////// selectWindow(name); Dialog.create("Set New Frame Info"); Dialog.addNumber("Enter Start Frame No.", 1); Dialog.addNumber("How Many Steps?",step); Dialog.addString("Restack Image File Name", name_head+"_restack"); Dialog.show(); start = Dialog.getNumber(); step = Dialog.getNumber(); new_name = Dialog.getString(); new_frame = floor((frame-start+1) / step); tag = "Frame interval"; period = getTag(tag); period = split(period," "); period = (0+period[0])*step; tag="PETIS Comment"; comment="PETIS Comment:"+getTag(tag); tag="PETIS Measurement Date"; PETIS_date="PETIS Measurement Date:"+getTag(tag); tag="PETIS Positron RI"; PETIS_RI="PETIS Positron RI:"+getTag(tag); tag="PETIS Blank"; PETIS_Blank="PETIS Blank:"+getTag(tag); ////4. Make New Stack Images ////// newImage(new_name,"32-bit",width,height,new_frame); run("Properties...", "width="+width+" height="+height+" channels=1 depth=1 frames="+new_frame+" unit=mm pixel_width=1.10000 pixel_height=1.10000 voxel_depth=1.00000 frame="+period+" origin=0,0"); PETIS_header = "Info:"+comment+"\n"+PETIS_date+"\n"+PETIS_RI+"\n"+PETIS_Blank; setMetadata(PETIS_header); for (l=1;l<=new_frame;l++){ selectWindow(name); pixel_count=newArray(width*height); for (k=start;k<=start+step-1;k++){ setSlice(k+step*(l-1)); //print("Slice="+k+step*(l-1)); for (j=0;j1){ title = getTitle(); Dialog.create("Select Target Image"); Dialog.addMessage("Target Images is "+title); Dialog.show(); selectWindow(title); } else if (nImages==1){ title = getTitle(); selectWindow(title); } else if (nImages==0){ open(""); } ////2. Read Image Informations////// depth=nSlices; name = getTitle(); if(lengthOf(name)>4) title = substring(name,0,lengthOf(name)-4); else title = name; tag="PETIS Comment"; comment="PETIS Comment:"+getTag(tag); tag="PETIS Measurement Date"; PETIS_date="PETIS Measurement Date:"+getTag(tag); tag="PETIS Positron RI"; PETIS_RI="PETIS Positron RI:"+getTag(tag); tag="PETIS Blank"; PETIS_Blank="PETIS Blank:"+getTag(tag); tag="Frame interval"; str=getTag(tag); PETIS_Period="PETIS Stack Image Frame Interval:"+str; ////3. Make Montage Image////// rows = floor(depth / 5); Dialog.create("Make Montage with PETIS Images"); Dialog.addMessage("This Stack Image has "+depth+" frames."); Dialog.addNumber("columns", 5); Dialog.addNumber("rows", rows); Dialog.addNumber("first frame", 1); Dialog.addNumber("last frame", depth); Dialog.addNumber("border", 2); Dialog.show(); columns = Dialog.getNumber(); rows = Dialog.getNumber(); first = Dialog.getNumber(); last = Dialog.getNumber(); boader = Dialog.getNumber(); run("Make Montage...", "columns="+columns+" rows="+rows+" scale=1 first="+first+" last="+last+" increment=1 border="+boader+""); PETIS_header = "Info:"+comment+"\n"+PETIS_date+"\n"+PETIS_RI+"\n"+PETIS_Blank+"\n"+PETIS_Period; setMetadata(PETIS_header); }//EOMacro macro "--Look up Tables for Image Color--" {} macro " 256G RGB" { reds = newArray(256); greens = newArray(256); blues = newArray(256); G256_RGB_LUT(reds,greens,blues); setLut(reds, greens, blues); } macro " 256G RGBw" { reds = newArray(256); greens = newArray(256); blues = newArray(256); G256_RGB_LUT(reds,greens,blues); reds[255] = 255; greens[255] = 255; blues[255] = 255; setLut(reds, greens, blues); } macro " 256G NIH" { reds = newArray(256); greens = newArray(256); blues = newArray(256); G256_NIH_LUT(reds,greens,blues); setLut(reds, greens, blues); } macro " 256G NIHw" { reds = newArray(256); greens = newArray(256); blues = newArray(256); G256_NIH_LUT(reds,greens,blues); reds[255] = 255; greens[255] = 255; blues[255] = 255; setLut(reds, greens, blues); } macro " 256G Red" { reds = newArray(256); greens = newArray(256); blues = newArray(256); for (i=0; i<256; i++) reds[i] = i; setLut(reds, greens, blues); } macro " 256G Green" { reds = newArray(256); greens = newArray(256); blues = newArray(256); for (i=0; i<256; i++) greens[i] = i; setLut(reds, greens, blues); } macro " 256G Blue" { reds = newArray(256); greens = newArray(256); blues = newArray(256); for (i=0; i<256; i++) blues[i] = i; setLut(reds, greens, blues); } macro " Invert LUT" { requires("1.30j"); getLut(reds, greens, blues); for (i=0; i array[i]) { minValue=array[i]; } } return minValue; } function getMax(array){ n=lengthOf(array); maxValue=array[0]; for (i=0; i