-
Notifications
You must be signed in to change notification settings - Fork 0
/
applyThreshold_.py
109 lines (88 loc) · 3.26 KB
/
applyThreshold_.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
from ij import IJ, ImagePlus, ImageStack
from ij.io import FileSaver
from sys import argv
from os import path
from ij.measure import ResultsTable as RT
from ij.plugin import Macro_Runner as MR
from ij import WindowManager as WM
def main():
#checkArgs(argv)
#makeStack(argv[1])
#applyFilter(argv[1]+"/stack.tif")
straighten("/Users/juliansegert/Documents/Roots/Four_root_image_stacks/Pos01/stack-filtered(Li).tif")
def applyFilter(stackName):
imp = IJ.openImage(stackName)
stack = imp.getImageStack()
for i in xrange(1, imp.getNSlices()+1):
image = ImagePlus(str(i), stack.getProcessor(i))
IJ.run(image, "Auto Threshold", "method=Li white")
#IJ.run(image, "Analyze Particles...", "size= 1000-Infinity circularity=0.00-1.00 show=Masks in_situ")
imp2 = ImagePlus("Threshold", stack)
fs = FileSaver(imp2)
print "Saving filtered stack"
fs.saveAsTiff(stackName[:-4] + "-filtered(Li).tif")
def straighten(stackName):
'''
IJ.run("Set Measurements...", "area mean min center redirect=None decimal=3")
IJ.open(stackName)
imp = IJ.getImage()
stack = imp.getImageStack()
for i in xrange(1, imp.getNSlices()+1):
image = ImagePlus(str(i), stack.getProcessor(i))
xvals = []
yvals = []
maxvals = []
j = 0
for k in xrange(0, 512, 2):
IJ.makeRectangle(k, 0, 4, 512)
IJ.run("Measure")
table = RT.getResultsTable()
x = table.getValue("XM", 0)
y = table.getValue("YM", 0)
#maxi = IJ.getResult("Max")
table = []
xvals.append(k)
yvals.append(y)
#maxvals.append(maxi)
#if maxvals[j] == 0 and j > 0:
#yvals[j] = yvals[j-1]
j += 1
print "xvals:", xvals
print "yvals:", yvals
mr = MR()
IJ.run("Make Selection...", "freeline, "+str(xvals)+" ,"+ str(yvals))
#IJ.runMacro("makeSelection...", "freeline, "+str(xvals)+" ,"+ str(yvals));
#IJ.run("makeSelection(\"freeline\", xvals, yvals);")
#IJ.run("Straighten...", "line = 80")
'''
IJ.open(stackName)
imp = IJ.getImage()
stack = imp.getImageStack()
print imp.getNSlices()
for i in range(1, imp.getNSlices()+1):
image = ImagePlus(str(i), stack.getProcessor(i))
IJ.runMacroFile("/Users/juliansegert/repos/Bio119_root_tracking/straightenOneImage.ijm")
newImp = WM.getCurrentImage()
fs = FileSaver(newImp)
fs.saveAsTiff("/Users/juliansegert/Documents/Roots/Four_root_image_stacks/Pos01/"+str(i)+".tif")
newImp.close()
#fs = FileSaver(imp)
#fs.saveAsTiff(stackName+"Straightened.tif")
def makeStack(stackDir, stackName = "stack"):
IJ.run("Image Sequence...", "open="+stackDir+" file = (\"img_.*\") sort")
imp = IJ.getImage()
#IJ.run("8-bit")
fs = FileSaver(imp)
print "Saving stack"
fs.saveAsTiff(stackDir + "/" +stackName+".tif")
def checkArgs(argv):
"""Checks for a valid directory"""
if len(argv) != 2:
print "Usage: applyThreshold_.py folder"
exit(0)
stackDir = argv[1]
if not path.exists(stackDir) or not path.isdir(stackDir):
print "Invalid directory"
exit(0)
if __name__ == "__main__":
main()