Considering QuPath, but wishing you could just use Fiji? 🤔
Then the QuPath for Fiji Fans I2K 2024 workshop is for you.
In this repo you'll find scripts & docs that show how you can use your ImageJ and Fiji skills with QuPath, to get the best of both.
Important
The main docs for QuPath & Fiji/ImageJ are here but they haven't been updated to have all the new stuff described in the workshop yet.
QuPath comes with its own minimal ImageJ (ij.jar
).
If you want to be able to access more plugins, you'll need to point QuPath to a local ImageJ or Fiji installation.
There are two (equivalent) ways to do this:
- Extensions → ImageJ → Set local ImageJ directory
- This gives a directory chooser, and makes an educated guess where ImageJ or Fiji might be installed.
- Edit → Preferences...
- This allows you to type the path to the directory
Tip
You can also set the plugins directory to a Fiji installation. Not all Fiji plugins are guaranteed to work when run within QuPath, but many do.
You can interactively send regions from QuPath to ImageJ, and also bring ImageJ Rois back as QuPath objects.
Regions can be cropped and rescaled, and QuPath should take care of transforming all the regions appropriately.
The docs here describe this in more detail.
QuPath v0.6.0-rc3 introduces an all-new command: Extensions → ImageJ → ImageJ script runner
This is intended to replace Extensions → ImageJ → ImageJ macro runner.
The purpose of this command is to make it easier to send cropped and rescaled regions to ImageJ for processing in batch, and then get the results back into QuPath.
But you can also do more things, like set classifications or add measurements to QuPath objects.
The workshop videos will show this in more detail, or check out File → Open example....
Note
The ImageJ script runner provides an easy way to apply any of ImageJ's automatic thresholding methods within QuPath.
Tip
The new script runner supports both the ImageJ macro language and Groovy scripts.
Currently, it attempts to guess which you're writing based on whether IJ.getImage()
is present.
Caution
The parameters at the bottom of the script runner are important! These determine what is sent to ImageJ, and what is brought back to QuPath.
Tip
If you have a script that is working well, turn on the Add script to command history option if you want to be able to apply it in batch across multiple images.