Пример #1
0
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
Пример #2
0
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()
Пример #4
0
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"))