Пример #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 process_pi_signal(path, position, unsynchronized=True):

    if unsynchronized:
        path_signal = path + "\\pi"
        path_signal_before = path_signal + "\\before"
        path_signal_after = path_signal + "\\after"
        path_signal_merged = path_signal + "\\merged"
        path_imp_before = path_signal_before + "\\pi_in-focusxy%sc1.tif" % position
        path_imp_after = path_signal_after + "\\pixy%sc1.tif" % position
        path_imp_merged = path_signal_merged + "\\merged.tif"
        path_imp_merged_sub = path_signal_merged + "\\merged_sub.tif"

        imp1 = IJ.openImage(path_imp_before)
        imp1.show()
        imp2 = IJ.openImage(path_imp_after)
        imp2.show()

        zp1 = ZProjector(imp1)
        zp1.setMethod(ZProjector.AVG_METHOD)
        zp1.doProjection()
        zpimp1 = zp1.getProjection()

        zp2 = ZProjector(imp2)
        zp2.setMethod(ZProjector.AVG_METHOD)
        zp2.doProjection()
        zpimp2 = zp2.getProjection()

        imp_sub1 = ImageCalculator().run("Subtract create stack", imp1, zpimp1)
        imp_sub1.show()

        imp_sub2 = ImageCalculator().run("Subtract create stack", imp2, zpimp2)
        imp_sub2.show()

        concatenate_files(imp1, imp2, path_imp_merged)
        concatenate_files(imp_sub1, imp_sub2, path_imp_merged_sub)

    else:
        path_signal = path + "\\pi\\seq0002xy%sc1.tif" % position
        path_sub = path + "\\pi\\sub.tif"

        imp = IJ.openImage(path_signal)
        imp.show()

        zp = ZProjector(imp)
        zp.setMethod(ZProjector.AVG_METHOD)
        zp.doProjection()
        zpimp = zp.getProjection()

        imp_sub = ImageCalculator().run("Subtract create stack", imp, zpimp)
        imp_sub.show()

        IJ.saveAs(imp_sub, "Tiff", path_sub)

        imp.changes = False
        imp.close()
        zpimp.changes = False
        zpimp.close()
        imp_sub.changes = False
        imp_sub.close()
Пример #3
0
def process_caspase_signal(path_signal, path_imp, path_imp_out):

    path_imp = path_signal + path_imp
    imp = IJ.openImage(path_imp)
    imp.show()

    zp = ZProjector(imp)
    zp.setMethod(ZProjector.AVG_METHOD)
    zp.doProjection()
    zpimp = zp.getProjection()

    imp_sub = ImageCalculator().run("Subtract create stack", imp, zpimp)
    imp_sub.show()
    IJ.saveAs(imp_sub, "Tiff", path_signal + path_imp_out)

    imp.changes = False
    imp.close()
    imp_sub.changes = False
    imp_sub.close()
IJ.run(imp, "Duplicate...",
       "title=wy")  #create wy by rotating wx by 90 degrees
IJ.run("Rotate 90 Degrees Left")
imp2 = IJ.getImage()
imp2.changes = False

#integration in the phase domain by shifting Pi/2, see equation 21 in Frankot-Chellapa
A = ImageCalculator().run("Multiply create 32-bit stack", DZDX, imp)
B = ImageCalculator().run("Multiply create 32-bit stack", DZDY,
                          imp2)  # numerator of
C = ImageCalculator().run("Add create 32-bit stack", A, B)  # eq 21
D = ImageCalculator().run("Multiply create 32-bit", imp, imp)  # square wx
E = ImageCalculator().run("Multiply create 32-bit", imp2, imp2)  # square wy
F = ImageCalculator().run("Add create 32-bit", D, E)  # demnominator of eq 21
Z = ImageCalculator().run("Divide create 32-bit stack", C, F)  # solve eq 21
Z.show()
IJ.run("Inverse FFT")  #results of integration
IJ.run(
    "Stack to Images"
)  #separate real and imaginary... why does imaginary produce result? more reading needed.

#clean-up by closing un-necessary images
imp2.close()
DZDX.close()
DZDY.close()
imp.changes = False
imp.close()
A.changes = False
A.close()
Z.close()