-
Notifications
You must be signed in to change notification settings - Fork 0
/
Overlayanimator.py
65 lines (51 loc) · 2.17 KB
/
Overlayanimator.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
from ij import IJ
from ij.plugin.frame import RoiManager
from ij.gui import Roi
import os
from ij.process import ImageConverter
from ij import IJ, WindowManager, ImagePlus
def Overlayer(ROIs, Title):
""" Overlays ROIs, saves to .tif and animates aligned images to .gif """
Source_Directory = "D:\\Image_Processing\\Virtualstacks\\Lif_Stack_Split_aligned_all"
Destination_Directory = "D:\\Image_Processing\\Virtualstacks\\Overlays"
gif_Directory = "D:\\Image_Processing\\Virtualstacks\\gifs\\"
if not os.path.exists(Destination_Directory):
os.makedirs(Destination_Directory)
if not os.path.exists(gif_Directory):
os.makedirs(gif_Directory)
rm = RoiManager().getInstance()
total_rois = rm.getIndexes()
# Removes artefact ROIs from ROI manager.
for roi in total_rois:
if roi not in ROIs:
rm.select(roi)
rm.runCommand("Delete")
# Overlays ROI on aligned images, converts to 8-bit (for gif).
for root, directories, filenames in os.walk(Source_Directory):
for filename in filenames:
imp = IJ.openImage(os.path.join(root, filename))
converter = ImageConverter(imp)
converter.setDoScaling(True)
converter.convertToGray8()
rm.moveRoisToOverlay(imp)
# Apply relevant (but enhanced) colors.
if "C=0" in filename:
IJ.run(imp, "Cyan Hot", "")
elif "C=1" or "C=2" in filename:
IJ.run(imp, "Yellow Hot", "")
IJ.saveAs(imp, "Tiff", os.path.join(Destination_Directory, filename))
# Opens overlaid images, saves as tiff stack.
overlay_stack = IJ.run("Image Sequence...", "open="+Destination_Directory+
" number=100 starting=0 increment=1 scale=100 file=.tif")
IJ.saveAs(overlay_stack, "Tiff", os.path.join(gif_Directory+Title))
# Animates tiff stack.
for root, directories, filenames in os.walk(gif_Directory):
for filename in filenames:
if Title in filename:
# set=xx parameter controls gif speed.
# for additional parameters run with macro recorder.
gif = IJ.run("Animated Gif ... ", "set=20 filename="+(os.path.join(root, filename)))
IJ.saveAs(gif, "Animated Gif...", os.path.join(gif_Directory+Title))
# Close (because overlay_stack and gif are nonetype objects).
imp = WindowManager.getCurrentImage()
imp.close()