def ReturnColorThresholdedPicture(PICPATH, L_min, L_max, a_min, a_max, b_min, b_max): imp = IJ.openImage(PICPATH) imp.show() ImageTitle = imp.getTitle() LabThresold_List = [[L_min, L_max], [a_min, a_max], [b_min, b_max]] Filt_List = ["pass", "pass", "pass"] ColorThresholder.RGBtoLab() IJ.run(imp, "RGB Stack", "") IJ.run("Stack to Images", "") IJ.selectWindow("Red") IJ.run('Rename...', 'title=0') #title=hoge =(equal)の間にスペースを入れてならない。 imp0 = IJ.getImage() IJ.selectWindow("Green") IJ.run('Rename...', 'title=1') imp1 = IJ.getImage() IJ.selectWindow("Blue") IJ.run('Rename...', 'title=2') imp2 = IJ.getImage() for i in range(3): WindowTitle = str(i) MinValue = float(LabThresold_List[i][0]) MaxValue = float(LabThresold_List[i][1]) IJ.selectWindow(WindowTitle) IJ.setThreshold(MinValue, MaxValue) IJ.run(IJ.getImage(), "Convert to Mask", "") if Filt_List[i] == "stop": ImageProcessor.invert() #コメントアウトした、imgculcは動かなくなくなった,謎 #imp3 = ImageCalculator.run(imp0, imp1, "and create") #imp4 = ImageCalculator.run(imp3,imp2, "and create") imp3 = ImageCalculator().run("and create", imp0, imp1) imp4 = ImageCalculator().run("and create", imp3, imp2) imp3.show() imp4.show() ResultTitle = imp4.getTitle() IJ.selectWindow(ResultTitle) imp4.setTitle(ImageTitle) #Saveした時点で画像の情報が失われる. imp.close() imp0.close() imp1.close() imp2.close() imp3.close() return imp4
def run_script(): '''Function to be run when this file is used as a script''' selected_mode, img1_in, img2_in = get_setup() if not selected_mode: return corrected_stack = drift.get_corrected_stack((img1_in, img2_in), mode=selected_mode) img1, img2 = tools.stack_to_list_of_imp(corrected_stack) img_ratio = ImageCalculator().run('Divide create', img2, img1) img_ratio.setTitle('Jump-ratio [%s divided by %s]' % (img2.getShortTitle(), img1.getShortTitle()) ) img_ratio.changes = True img_ratio.copyScale(img1_in) img_ratio.show() IJ.run(img_ratio, 'Enhance Contrast', 'saturated=0.35') # We want to optimise the lower displaylimit: minimum = img_ratio.getProcessor().getMin() maximum = img_ratio.getProcessor().getMax() stat = img_ratio.getStatistics(Stats.MEAN + Stats.STD_DEV) mean = stat.mean stdv = stat.stdDev if minimum < mean - stdv: if mean - stdv >= 0: img_ratio.getProcessor().setMinAndMax(mean - stdv, maximum) else: img_ratio.getProcessor().setMinAndMax(0, maximum) img_ratio.updateAndDraw()
def mousePressed(self, event): from ij import IJ, ImagePlus from ij.process import FloatProcessor import math from ij.plugin import ImageCalculator imp = IJ.getImage() imp.setSlice(3) ip = imp.getProcessor().convertToFloat() # as a copy pixels = ip.getPixels() imp.setSlice(2) ip1 = imp.getProcessor().convertToFloat() # as a copy pixels1 = ip1.getPixels() imp.setSlice(1) ip2 = imp.getProcessor().convertToFloat() # as a copy pixels2 = ip2.getPixels() canvas = event.getSource() p = canvas.getCursorLoc() imp = canvas.getImage() x = p.x * 1.0000 y = p.y * 1.0000 nx = x - imp.width / 2 ny = y - imp.height / 2 n_y = ny * -1 n_xx = nx / imp.width / 2 n_yy = n_y / imp.height / 2 z = math.sqrt(n_xx * n_xx + n_yy * n_yy) z1 = math.sqrt(1 - z * z) Xdir = map(lambda x: x * n_xx, pixels2) Ydir = map(lambda x: x * n_yy, pixels1) Zdir = map(lambda x: x * z1, pixels) ip3 = FloatProcessor(ip.width, ip.height, Xdir, None) imp3 = ImagePlus("", ip3) ip4 = FloatProcessor(ip.width, ip.height, Ydir, None) imp4 = ImagePlus("", ip4) ip5 = FloatProcessor(ip.width, ip.height, Zdir, None) imp5 = ImagePlus("", ip4) imp6 = ImageCalculator().run("Add create 32-bit stack", imp3, imp4) imp7 = ImageCalculator().run("Add create 32-bit stack", imp5, imp6) imp7.setTitle("Lighting Direction") imp7.show()
def ratiometric(LP, org_size, max_Y, min_Y): """ Generates ratiometric images of dFRET/aFRET for each timepoint. """ source_directory = "D:\\Image_Processing\\Virtualstacks\\Lif_Stack_Split_aligned_all\\" destination_directory = "D:\\Image_Processing\\Virtualstacks\\Ratiometrics\\" destination_directory2 = "D:\\Image_Processing\\Virtualstacks\\Ratiometrics_withROI\\" # As in nested_calculator. AER = ((8.8764*(LP**2)) + (1.8853*LP)) - 0.1035 DER = 0.1586 # File list of every image in every channel. channels = [] for root, directory, filenames in os.walk(source_directory): for filename in filenames: channels.extend(filename) # Channel-separator. IDD, IDA, IAA = channels[0::3], channels[1::3], channels[2::3] # Create combined ROI. rm = RoiManager.getInstance() rm.runCommand("Select All") rm.runCommand("Combine") rm.runCommand("Add") roi = rm.getRoi(rm.getCount()) for timepoint in range(len(IDD)): # Opens each image, clears outside ROIs. IDD_base = IJ.openImage(os.path.join(root, IDD[timepoint])) IDD_base_ip = IDD_base.getProcessor() IDD_base_ip.fillOutside(roi) IDA_base = IJ.openImage(os.path.join(root, IDA[timepoint])) IDA_base_ip = IDA_base.getProcessor() IDA_base_ip.fillOutside(roi) IAA_base = IJ.openImage(os.path.join(root, IAA[timepoint])) IAA_base_ip = IAA_base.getProcessor() IAA_base_ip.fillOutside(roi) # Duplicates IDD, IAA for subtraction of cross-talk. IDD_subtracted = Duplicator().run(IDD_base) IAA_subtracted = Duplicator().run(IAA_base) IJ.run(IDD_subtracted, "Multiply...", "value="+str(DER)) IJ.run(IDA_subtracted, "Multiply...", "value="+str(AER)) # Subtracts cross-talk from IDA. cFRET1 = ImageCalculator().run("Subtract create 32-bit", IDA, IDD_subtracted) cFRET = ImageCalculator().run("Subtract create 32-bit", cFRET1, IAA_subtracted) # Corrected donor concentration. donor_c = ImageCalculator().run("Add create 32-bit", IDD_base, cFRET) # dFRET. dFRET = ImageCalculator().run("Divide create 32-bit", cFRET, donorc) dFRET.setTitle("dFRET") IJ.run(dFRET, "Rainbow RGB", "") # aFRET. aFRET = ImageCalculator().run("Divide create 32-bit", cFRET, IAA_base) IJ.run(aFRET, "Divide...", "value=4.66") aFRET.setTitle("aFRET") IJ.run(aFRET, "Rainbow RGB", "") # Scalebar. dimensions = dFRET.getDimensions() size = dimensions[0] + dimensions[1] microns = org_size / size FRET = [aFRET, dFRET] for i in range(2): IJ.run(FRET[i], "Set Scale...", "distance=1 known="+str(microns)+" pixel=1 unit=micron") IJ.run(FRET[i], "Scale Bar...", "width=10 height=4 font=14 color=Yellow background=None location=[Lower Right] bold overlay") #FRET[i].getProcessor().setMinAndMax(0, 1) IJ.run(FRET[i], "Calibration Bar...", "location=[Upper Right] fill=None label=White number=3 decimal=2 font=12 zoom=1.5 bold overlay") IJ.run(FRET[i], "Flatten", "stack") # Save. IJ.saveAs(aFRET, "Tiff", os.path.join(destination_directory, IDD[i][0:7]+"aFRET")) IJ.saveAs(dFRET, "Tiff", os.path.join(destination_directory, IDD[i][0:7]+"dFRET"))