If you’ve ever worked with confocal microscopy, you know how tedious it can be to separate and save channels from multiple images manually. Luckily, you can automate this process using a simple code snippet in FIJI (which, by the way, stands for Fiji Is Just ImageJ – notice the initials?).
In this tutorial, I’ll guide you through a script that will help you batch process images, split channels, and save them as JPEG files in a separate output folder. This is especially useful if you’re dealing with a large number of multi-channel images. Let’s dive into the code and how it works.
The Code Breakdown
Below is the code snippet you can use in FIJI to automate channel splitting and saving images as JPEGs.
// Ask user to select a folder
dir = getDirectory("Select A folder");
// Get the list of files (and folders) in it
fileList = getFileList(dir);
// Prepare a folder to output the images
output_dir = dir + File.separator + "output" + File.separator;
File.makeDirectory(output_dir);
// Activate batch mode to speed up the process
setBatchMode(true);
// Loop through the list of files
for (i = 0; i < lengthOf(fileList); i++) {
// Define the "path" by concatenation of directory and current file
current_imagePath = dir + fileList[i];
// Check that the current file is not a directory and ends with ".lsm"
if (!File.isDirectory(current_imagePath) && endsWith(current_imagePath, ".lsm")) {
// Open the image and split it into channels
open(current_imagePath);
getDimensions(width, height, channels, slices, frames);
// If it's a multi-channel image, split the channels
if (channels > 1) run("Split Channels");
// Save each channel as a JPEG in the output directory
ch_nbr = nImages;
for (c = 1; c <= ch_nbr; c++) {
selectImage(c);
currentImage_name = getTitle();
saveAs("jpeg", output_dir + replace(currentImage_name, ".tif", ".jpg"));
}
// Close all images before opening the next one
run("Close All");
}
}
// Deactivate batch mode once done
setBatchMode(false);
How the Code Works
- Folder Selection: The script begins by asking the user to select a folder that contains the images you want to process. The "getDirectory" command opens a dialog to select the directory.
- File List Creation: It retrieves the list of files within the selected folder using "getFileList", preparing the files for processing.
- Output Directory: An output folder named "output" is automatically created within the selected directory to store the processed images.
- Batch Mode: To speed things up, batch mode is activated. This ensures that the processing happens efficiently, especially when handling large datasets.
- File Processing Loop: The loop iterates over each file in the folder, checking if it's an image file (not a subfolder) and processes it. For multi-channel images, it splits the channels using FIJI's built-in "Split Channels" function.
- Saving Images: Once the channels are split, the code saves each channel as a JPEG image, replacing the original ".tif" extension with ".jpg".
- Cleanup: After processing each image, the script closes all open images to prevent memory overload.
When to Use This Script
This script is perfect for:
- Batch processing multi-channel confocal microscopy images.
- Automating tedious channel splitting and saving tasks.
- Saving time when working with large datasets.
Memory updated
Thank you for clarifying! Here's the corrected "How to Run the Script" section for FIJI:
How to Run the Script in FIJI
- Open FIJI: Launch FIJI (ImageJ).
- Create a New Macro: Go to
Plugins -> New -> Macro
to open the macro editor. - Paste the Script: Copy the script provided and paste it into the macro editor.
- Save the Macro: Save the macro if you'd like to reuse it by going to
File -> Save As...
. - Run the Script: Click the Run button in the macro editor, select your folder when prompted, and let FIJI do the heavy lifting!
Final Thoughts
This simple automation can save you hours of manual work, especially if you're dealing with numerous confocal images. For the code-inclined, feel free to tweak the script to suit your specific needs. Happy coding!