CINXE.COM
Frequently Asked Questions
<!DOCTYPE html> <html> <head> <title>Frequently Asked Questions</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=3" /> <meta content="ImageJ Wiki" property="og:site_name"> <meta content="Frequently Asked Questions" property="og:title"> <meta content="article" property="og:type"> <meta content="The ImageJ wiki is a community-edited knowledge base on topics relating to ImageJ, a public domain program for processing and analyzing scientific images, and its ecosystem of derivatives and variants, including ImageJ2, Fiji, and others." property="og:description"> <meta content="https://imagej.github.io/learn/faq" property="og:url"> <meta content="https://imagej.github.io/media/icons/imagej2.png" property="og:image"> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> <link rel="manifest" href="/site.webmanifest"> <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"> <meta name="msapplication-TileColor" content="#da532c"> <meta name="theme-color" content="#ffffff"> <link rel="stylesheet" href="/assets/css/lightbox.min.css" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.css@7/themes/algolia-min.css"/> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/dygraphs@2.1.0/dist/dygraph.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dygraphs@2.1.0/dist/dygraph.min.css" /> <link rel="stylesheet" href="/assets/css/main.css" /> <link rel="stylesheet" href="/assets/css/layout.css"/> <link rel="stylesheet" href="/assets/css/includes.css" /> <link rel="stylesheet" href="/assets/css/dock.css"/> <noscript><link rel="stylesheet" href="/assets/css/noscript.css" /></noscript> <link rel="stylesheet" href="/assets/css/page.css" /> </head> <body class="is-preload"> <!-- Top bar --> <section id="top-bar"> <a href="/"><img id="site-logo" src="/media/icons/imagej2.png"></a> <div id="search-panel"> <div id="search-box"></div> </div> </section> <!-- Page-info --> <div class="page-info"> <a href="https://github.com/imagej/imagej.github.io/commits/main/_pages/learn/faq.md">Page history</a> <a href="https://github.com/imagej/imagej.github.io/edit/main/_pages/learn/faq.md">Edit this page</a> <a href="/editing">How do I edit this website?</a></div> <section id="left-column" class="sidebar dock"> <!-- Menu --> <div class="menu dockable"> <div class="drag-handle"></div><h3>ImageJ Docs</h3> <ul> <li><a href="/downloads">Download</a></li> <li><details open><summary>Learn</summary><ul> <li><details open><summary><a href="/learn">ImageJ Basics</a></summary><ul> <li><a href="/tutorials">Tutorials</a></li> <li><a href="/learn/user-guides">User Guides</a></li> <li><a href="/learn/keyboard-shortcuts">Keyboard Shortcuts</a></li> <li><a href="/learn/tips-and-tricks">Tips and Tricks</a></li> <li><a href="/learn/troubleshooting">Troubleshooting</a></li> <li><a class="current-page">Frequently Asked Questions</a></li> <li><details><summary><a href="/platforms">Supported Platforms</a></summary><ul> <li><a href="/platforms/windows">Windows</a></li> <li><a href="/platforms/macos">MacOS</a></li> <li><a href="/platforms/linux">Linux</a></li> <li><a href="/platforms/pi">Raspberry Pi</a></li> <li><a href="/platforms/android">Android</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/Supported Platforms --> <li><details><summary><a href="/formats">File Formats</a></summary><ul> <li><a href="/formats/bio-formats">Bio-Formats</a></li> <li><a href="/formats/video">Video formats</a></li> <li><a href="/formats/quicktime">QuickTime</a></li> <li><a href="/formats/tiff">TIFF</a></li> <li><a href="/formats/pdf">PDF</a></li> <li><a href="/formats/dicom">DICOM</a></li> <li><a href="/formats/lsm">Zeiss LSM</a></li> <li><a href="/formats/olympus">Olympus VSI</a></li> <li><a href="/formats/lurawave">Opera Flex</a></li> <li><a href="/formats/fib-sem">FIB-SEM</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/File Formats --> </ul></details></li> <!-- Learn/ImageJ --> <li><details><summary><a href="/imaging">Scientific Imaging</a></summary><ul> <li><a href="/imaging/principles">Principles of Scientific Imaging</a></li> <li><a href="/imaging/annotating-images">Annotating Images</a></li> <li><a href="/imaging/colocalization-analysis">Colocalization</a></li> <li><a href="/imaging/color-image-processing">Color Image Processing</a></li> <li><a href="/imaging/deconvolution">Deconvolution</a></li> <li><a href="/imaging/image-intensity-processing">Image Intensity Processing</a></li> <li><a href="/imaging/particle-analysis">Particle Analysis</a></li> <li><a href="/imaging/registration">Registration</a></li> <li><a href="/imaging/segmentation">Segmentation</a></li> <li><a href="/imaging/stack-slice-manipulations">Stack-slice Manipulations</a></li> <li><a href="/imaging/t-functions">T-functions</a></li> <li><a href="/imaging/tracking">Tracking</a></li> <li><a href="/imaging/visualization">Visualization</a></li> <li><a href="/imaging/z-functions">Z-functions</a></li> </ul></details></li> <!-- Learn/Scientific Imaging --> </ul></details></li> <!-- Learn --> <li><details><summary><a href="/plugins">Extend</a></summary><ul> <li><a href="/list-of-extensions">List of Extensions</a></li> <li><details><summary><a href="/update-sites">Update Sites</a></summary><ul> <li><a href="/list-of-update-sites">List of Update Sites</a></li> <li><a href="/update-sites/following">Following an Update Site</a></li> <li><a href="/update-sites/setup">Creating an Update Site</a></li> <li><a href="/update-sites/tos">Terms of Service</a></li> <li><a href="/update-sites/automatic-uploads">Automatic Upload</a></li> <li><a href="/update-sites/core-uploads">Uploading to Core Sites</a></li> <li><a href="/update-sites/faq">Update Sites FAQ</a></li> <li><a href="/update-sites/stats">Statistics</a></li> </ul></details></li> <!-- Extend/Update Sites --> <li><details><summary><a href="/scripting">Scripting</a></summary><ul> <li><a href="/scripting/basics">Scripting Basics</a></li> <li><a href="/scripting/script-editor">Script Editor</a></li> <li><a href="/scripting/parameters">Parameters</a></li> <li><a href="/scripting/user-input">User Input</a></li> <li><a href="/scripting/auto-imports">Auto Import</a></li> <li><a href="/scripting/templates">Templates</a></li> <li><a href="/scripting/batch">Batch Processing</a></li> <li><a href="/scripting/headless">Running Headlessly</a></li> <li><a href="/scripting/comparisons">Scripting Comparisons</a></li> <li><a href="/scripting/toolbox">Toolbox</a></li> <li><details><summary>Languages</summary><ul> <li><a href="/scripting/beanshell">BeanShell Scripting</a></li> <li><a href="/scripting/groovy">Groovy Scripting</a></li> <li><a href="/scripting/macro">ImageJ Macro</a></li> <li><a href="/scripting/javascript">JavaScript</a></li> <li><a href="/scripting/clojure">Lisp (Clojure)</a></li> <li><a href="/scripting/matlab">MATLAB</a></li> <li><a href="/scripting/jython">Python (Jython)</a></li> <li><a href="/scripting/python">Python (native)</a></li> <li><a href="/scripting/renjin">R (Renjin)</a></li> <li><a href="/scripting/jruby">Ruby (JRuby)</a></li> <li><a href="/scripting/scala">Scala Scripting</a></li> </ul></details></li> <!-- Extend/Scripting/Languages --> </ul></details></li> <!-- Extend/Scripting --> <li><details><summary><a href="/develop">Development</a></summary><ul> <li><a href="/develop/philosophy">Philosophy</a></li> <li><a href="/develop/architecture">Architecture</a></li> <li><a href="/develop/source">Source code</a></li> <li><a href="/develop/project-management">Project management</a></li> <li><a href="/develop/coding-style">Coding style</a></li> <li><a href="/develop/javadoc">Using Javadoc</a></li> <li><a href="/develop/debugging">Debugging</a></li> <li><a href="/develop/wish-list">Wish list</a></li> <li><details><summary>Tools</summary><ul> <li><a href="/develop/github">GitHub</a></li> <li><a href="/develop/maven">Maven</a></li> <li><a href="/develop/ci">CI/CD</a></li> <li><a href="/develop/dotfiles">Dotfiles</a></li> <li><details><summary><a href="/develop/ides">IDEs</a></summary><ul> <li><a href="/develop/eclipse">Eclipse</a></li> <li><a href="/develop/netbeans">NetBeans</a></li> <li><a href="/develop/intellij">IntelliJ IDEA</a></li> <li><a href="/develop/command-line">Command Line</a></li> </ul></details></li> </ul></details></li> <!-- Extend/Development/Tools --> <li><details><summary>Guides</summary><ul> <li><a href="/develop/plugins">Writing plugins</a></li> <li><a href="/develop/improving-the-code">Contributing to a plugin</a></li> <li><a href="/develop/releasing">Development lifecycle</a></li> <li><a href="/develop/building-a-pom">Building a POM</a></li> <li><a href="/develop/debugging-exercises">Hands-on debugging</a></li> <li><a href="/develop/writing-ops">Adding new ops</a></li> <li><a href="/develop/formats">Adding new formats</a></li> <li><a href="/develop/native-libraries">Using native libraries</a></li> <li><a href="/develop/tips">Tips for developers</a></li> <li><a href="/develop/cpp-tips">Tips for C++ developers</a></li> <li><a href="/develop/ij1-plugins">ImageJ 1.x plugins</a></li> <li><a href="/develop/versioning">Versioning</a></li> <li><a href="/develop/logging">Logging</a></li> <li><a href="/develop/uber-jars">Uber-JARs</a></li> </ul></details></li> <!-- Extend/Development/Guides --> <li><details><summary><a href="/develop/git">Git</a></summary><ul> <li><a href="/develop/git/eclipse">Git in Eclipse (EGit)</a></li> <li><a href="/develop/git/mini-howto">Git mini howto</a></li> <li><a href="/develop/git/workshop">Git workshop</a></li> <li><a href="/develop/git/conflicts">Git conflicts</a></li> <li><a href="/develop/git/topic-branches">Git topic branches</a></li> <li><a href="/develop/git/notes">Git notes</a></li> <li><a href="/develop/git/reflogs">Git reflogs</a></li> <li><a href="/develop/git/submodules">Git submodules</a></li> <li><a href="/develop/git/pinpoint-regressions">How to pinpoint regressions</a></li> <li><a href="/develop/git/publish-a-repository">How to publish a git repository</a></li> <li><a href="/develop/git/extract-a-subproject">How to extract a subproject</a></li> </ul></details></li> <!-- Extend/Development/Git --> </ul></details></li> <!-- Extend/Development --> </ul></details></li> <!-- Extend --> <li><details><summary><a href="/contribute">Contribute</a></summary><ul> <li><a href="/contribute/citing">Citing</a></li> <li><a href="/people">Contributors</a></li> <li><a href="/orgs">Organizations</a></li> <li><a href="/contribute/governance">Governance</a></li> <li><a href="/contribute/funding">Funding</a></li> <li><a href="/contribute/fiji">Contributing to Fiji</a></li> <li><details><summary><a href="/licensing">Licensing</a></summary><ul> <li><details><summary><a href="/licensing/open-source">Open Source</a></summary><ul> <li><a href="/licensing/apache">Apache</a></li> <li><a href="/licensing/bsd">BSD</a></li> <li><a href="/licensing/epl">EPL</a></li> <li><a href="/licensing/gpl">GPL</a></li> <li><a href="/licensing/lgpl">LGPL</a></li> <li><a href="/licensing/mit">MIT</a></li> <li><a href="/licensing/public-domain">Public domain</a></li> <li><a href="/licensing/big">BIG</a></li> </ul></details></li> <!-- Contribute/Licensing/Open Source --> <li><a href="/licensing/closed-source">Proprietary</a></li> </ul></details></li> <!-- Contribute/Licensing --> <li><details><summary><a href="/editing">Editing the Wiki</a></summary><ul> <li><a href="/editing/advanced">Advanced Editing</a></li> <li><a href="/editing/buttons">Buttons</a></li> <li><a href="/editing/citations">Citations</a></li> <li><a href="/editing/code">Source Code</a></li> <li><a href="/editing/debugging">Debugging</a></li> <li><a href="/editing/headers">Headers</a></li> <li><a href="/editing/icons">Icons</a></li> <li><a href="/editing/images">Images</a></li> <li><a href="/editing/keys">Keyboard Shortcuts</a></li> <li><a href="/editing/linking">Linking</a></li> <li><a href="/editing/math">Math Expressions</a></li> <li><a href="/editing/menu-paths">Menu Paths</a></li> <li><a href="/editing/navigation">Navigation</a></li> <li><a href="/editing/notices">Notices</a></li> <li><a href="/editing/people">People</a></li> <li><a href="/editing/pitfalls">Pitfalls</a></li> <li><a href="/editing/quizzes">Quizzes</a></li> <li><a href="/editing/statbox">Statbox</a></li> <li><a href="/editing/symbols">Symbols</a></li> <li><a href="/editing/tables">Tables</a></li> <li><a href="/editing/tooltips">Tooltips</a></li> <li><a href="/editing/videos">Videos</a></li> <li><a href="/editing/whitespace">Whitespace</a></li> </ul></details></li> <!-- Contribute/Editing the Wiki --> </ul></details></li> <!-- Contribute --> <li><details><summary><a href="/discuss">Discuss</a></summary><ul> <li><a href="/discuss/bugs">Reporting Issues</a></li> <li><a href="/discuss/mailing-lists">Mailing Lists</a></li> <li><a href="/discuss/chat">Chat</a></li> </ul></details></li> <!-- Discuss --> <li><details><summary>Explore</summary><ul> <li><a href="/news">News</a></li> <li><details><summary><a href="/events">Events</a></summary><ul> <li><a href="/events/presentations">Presentations</a></li> <li><a href="/events/conferences">Conferences</a></li> <li><a href="/events/hackathons">Hackathons</a></li> <li><a href="/events">More...</a></li> </ul></details></li> <!-- Discuss/Events --> <li><details><summary><a href="/libs">Libraries</a></summary><ul> <li><a href="/libs/imagej-ops">ImageJ Ops</a></li> <li><a href="/libs/imagej-common">ImageJ Common</a></li> <li><a href="/libs/imagej-legacy">ImageJ Legacy</a></li> <li><a href="/libs/scijava">SciJava</a></li> <li><a href="/libs/scifio">SCIFIO</a></li> <li><details><summary><a href="/libs/imglib2">ImgLib2</a></summary><ul> <li><a href="/libs/imglib2/getting-started">Getting Started</a></li> <li><a href="/libs/imglib2/accessors">Accessors</a></li> <li><a href="/libs/imglib2/accessibles">Accessibles</a></li> <li><a href="/libs/imglib2/examples">Examples</a></li> <li><a href="/libs/imglib2/workshop-introductory">Introductory Workshop</a></li> <li><a href="/libs/imglib2/workshop-advanced">Advanced Workshop</a></li> <li><a href="/libs/imglib2/matlab">ImgLib2 images in MATLAB</a></li> <li><a href="/libs/imglib2/benchmarks">Benchmarks</a></li> <li><a href="/libs/imglib2/faq">FAQ</a></li> <li><a href="/libs/imglib2/developing">Developing ImgLib2</a></li> <li><a href="/libs/imglib2/discussion">ImgLib2 Discussion</a></li> </ul></details></li> <!-- Explore/Libraries/ImgLib2 --> <li><a href="/libs">More...</a></li> </ul></details></li> <!-- Explore/Libraries --> <li><details><summary><a href="/software">Software</a></summary><ul> <li><a href="/software/nih-image">NIH Image</a></li> <li><a href="/software/imagej">ImageJ</a></li> <li><a href="/software/imagej2">ImageJ2</a></li> <li><a href="/software/fiji">Fiji</a></li> <li><a href="/software">More...</a></li> </ul></details></li> <!-- Explore/Software --> </ul></details></li> <!-- Explore --> </ul> </div> </section> <section id="right-column" class="sidebar dock"> <!-- Vital stats --> <!-- Table of contents --> <div id="toc" class="toc menu dockable"> <div class="drag-handle"></div> <h3>Page contents</h3> <ul data-toc="#content" data-toc-headings="h1,h2,h3,h4,h5,h6"></ul> </div> </section> <!-- Page title --> <div class="container"> <header class="major special"> <h1>Frequently Asked Questions</h1> </header> </div> <!-- Nav bar --> <div id="nav-bar"><ul class="shadowed-box"><li><a href="/learn/index">Introduction</a></li><li>FAQ</li><li><a href="/learn/headless">Headless</a></li><li><a href="/learn/keyboard-shortcuts">Keyboard Shortcuts</a></li><li><a href="/learn/launcher">Launcher</a></li><li><a href="/learn/tips-and-tricks">Tips and Tricks</a></li><li><a href="/learn/troubleshooting">Troubleshooting</a></li><li><a href="/learn/user-guides">User Guides</a></li></ul></div> <!-- Main content --> <section id="page" class="main style1"> <div class="container"> <div class="box alt"></div> <div id="content" class="page-content"> <p>This page lists answers to the most frequently asked questions.</p> <h1 id="usage">Usage</h1> <h2 id="how-do-i-apply-an-operation-or-macro-to-multiple-images">How do I apply an operation or macro to multiple images?</h2> <p>See the <a href="/scripting/batch">Batch Processing</a> page.</p> <h2 id="what-is-the-largest-size-image-that-imagej-can-open">What is the largest size image that ImageJ can open?</h2> <p>There is a 2 gigapixel limit when opening and displaying image planes using the original <a href="/software/imagej">ImageJ</a> user interface’s default image viewer. However, one major goal of the <a href="/software/imagej2">ImageJ2</a> project is to break this limit. ImageJ2 uses the <a href="/libs/imglib2">ImgLib2</a> library as its data model, which has much larger limits on the number of pixels (theoretically: ~\(2^{63}\) per dimension, up to ~ \(2^{31}\) dimensions, totaling ~\(2^{63^{31}}\) pixels). Hence, you can open larger images using the <a href="https://github.com/imagej/tutorials/">ImageJ2 API</a>. But you will not be able to display them in the user interface yet.</p> <p>Furthermore, the <a href="/libs/scifio">SCIFIO</a> library (what ImageJ2 uses for data I/O) supports opening such images on-demand as “cell images” such that blocks are read from disk as you iterate over the image. This is similar to (but more powerful than) ImageJ’s virtual stacks feature. In this way, you can write code to process these large images without displaying them.</p> <p>The <a href="/software/fiji">Fiji</a> project also includes the <a href="/plugins/bdv">BigDataViewer</a> (BDV) plugin, which currently functions as an alternative viewer, to display arbitrarily large images backed by ImgLib2. In the future we hope to integrate BDV-driven UI technology more completely into ImageJ2 core. But there are a couple of limitations right now:</p> <ol> <li>BDV was originally designed for large SPIM data; opening large image files more generally currently requires some coding. But we want to change this.</li> <li>Many ImageJ plugins assume the data is stored in an ImageJ 1.x data structure, which is not what BDV uses. So <a href="/libs/imagej-legacy">“mixing and matching” ImageJ and ImageJ2 functionality</a> is tricky here. But we are working to lift these restrictions as time goes on.</li> </ol> <h1 id="macos">macOS</h1> <p>See the <a href="/platforms/macos">MacOS</a> page.</p> <h1 id="running">Running</h1> <h2 id="how-do-i-launch-imagej-with-a-different-version-of-java">How do I launch ImageJ with a different version of Java?</h2> <h3 id="bundled-java">Bundled Java</h3> <p>ImageJ will look for a “bundled” Java in the <code class="language-plaintext highlighter-rouge">java</code> subdirectory, in a platform- and architecture-specific directory. For example, if you <a href="/fiji/downloads">downloaded</a> the “Windows 64-bit” Fiji it would come with a Java installation in the <code class="language-plaintext highlighter-rouge">Fiji.app\java\win64</code> directory. The possible <code class="language-plaintext highlighter-rouge">platform + architecture</code> directories are:</p> <ul> <li><code class="language-plaintext highlighter-rouge">win64</code></li> <li><code class="language-plaintext highlighter-rouge">win32</code></li> <li><code class="language-plaintext highlighter-rouge">linux-amd64</code></li> <li><code class="language-plaintext highlighter-rouge">linux</code></li> <li><code class="language-plaintext highlighter-rouge">macosx</code></li> </ul> <p>If you replace the Java in the directory appropriate for your platform (or create the indicated subdirectory structure, if you downloaded the “No JRE” Fiji) then ImageJ will try to launch with that “bundled” Java first.</p> <h3 id="system-java">System Java</h3> <p>If no bundled Java is found, ImageJ will fall back to your “system Java”, which is indicated by the <code class="language-plaintext highlighter-rouge">JAVA_HOME</code> environment variable. Usually this is set when installing Java, but see also <a href="http://stackoverflow.com/questions/1672281/environment-variables-for-java-installation">Java environment variable setup</a>.</p> <h3 id="command-line-option">Command-line option</h3> <p>Finally, ImageJ supports the <code class="language-plaintext highlighter-rouge">java-home</code> command-line flag that allows it to be started with a particular Java version <em>for just that run</em>. To use this flag you would run the platform- + architecture-specific launcher (aka “binary” or “excutable”) in the <a href="https://en.wikipedia.org/wiki/Command-line_interface">CLI</a> of your choice, with a syntax like:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/path/to/ImageJ/launcher --java-home '/path/to/java' </code></pre></div></div> <p>The ImageJ launcher path would be one of:</p> <ul> <li>Fiji.app/ImageJ-win64.exe</li> <li>Fiji.app/ImageJ-win32.exe</li> <li>Fiji.app/Contents/MacOS/ImageJ-macosx</li> <li>Fiji.app/ImageJ-linux32</li> <li>Fiji.app/ImageJ-linux64</li> </ul> <h4 id="on-macos">On macOS</h4> <div class="notice" style="font-size: 2; background: #e6e6e6; border-left: 10px solid #bdbdbd"><div class="notice-icon"><img src="/media/icons/tech.png" /></div><div class="notice-content"><p>Old versions of Mac OS X shipped with Apple’s fork of OpenJDK 6, which included some Mac-specific features. But Apple Java is long discontinued now. If you wish to install your own OpenJDK(s) on modern versions of macOS, it is recommended to use <a href="https://brew.sh/">Homebrew</a>, or simply download and unpack the OpenJDK distribution(s) of your choice into a <code class="language-plaintext highlighter-rouge">Java</code> folder inside your user folder.</p> </div> </div> <p>See “How do I setup a launcher app” below for instructions on turning this invocation into a Dock icon.</p> <h4 id="on-linux">On Linux</h4> <p>One downside of doing this is that ImageJ will launch in a separate process, which has some unintuitive side effects. For example, Ubuntu’s Unity user interface will not allow you to “Pin to Launcher” in this case.</p> <h2 id="how-do-i-setup-a-launcher-app-for-macos-for-running-with-a-different-jvm-version">How do I setup a launcher app for macOS for running with a different JVM version?</h2> <p>Start Automator and select to create an <em>Application</em>. Double-click <em>Run Shell Script</em> in the Library/Utilities folder and replace the text content — cat — with the following:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>open -a "Fiji.app" --args --java-home \ /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/ </code></pre></div></div> <p>Save anywhere you like.</p> <p>To replace this application’s icon, Get Info on your real Fiji, click on the icon on the top left, press <kbd class="key">⌘ Command</kbd> + <kbd class="key">C</kbd>, Get Info on your Fiji Automator app, click the icon, and press <kbd class="key">⌘ Command</kbd> + <kbd class="key">V</kbd>.</p> <p>You will then see two icons in the dock, the one of the launcher app and the one of Fiji when it’s running.</p> <p>(based on <a href="http://superuser.com/a/271697">this</a> guide)</p> <h2 id="what-is-this-headless-mode-and-what-do-i-need-it-for">What is this <em>headless</em> mode and what do I need it for?</h2> <p>The term <em>headless</em> refers to running ImageJ without a graphical desktop, e.g. on a cluster. See the <a href="/learn/headless">Headless</a> page for more information.</p> <h1 id="installingupdating">Installing/Updating</h1> <h2 id="how-can-i-verify-that-my-imagej-is-really-100-up-to-date">How can I verify that my ImageJ is really 100% up to date?</h2> <p>ImageJ will report itself as “up to date” as long as all files installed in your ImageJ match the latest versions from the remote update sites. However, there are cases where your ImageJ may report itself as “up to date” but still be missing critical files, or have mismatching versions (e.g., the dreaded <a href="/learn/troubleshooting#nosuchmethoderror-or-noclassdeffounderror"><code class="language-plaintext highlighter-rouge">NoSuchMethodError</code></a>).</p> <p>To be certain, run <span class="bc"><span>Help</span> › <span>Update…</span></span>, and click the “Advanced mode” button. Then verify the following View Options:</p> <ul> <li><strong>View uninstalled files only:</strong> Shows files that are available from remote ImageJ update sites, but <em>not</em> installed in your ImageJ. Consider changing the “Status/Action” to “/downloads” for these items, especially any <code class="language-plaintext highlighter-rouge">.jar</code> files that are flagged with “Not installed” status.</li> <li><strong>View locally modified files only:</strong> Shows files that have been edited locally (i.e., do not match any version from the remote update sites). Consider changing the “Status/Action” to “Update” for these items, especially any <code class="language-plaintext highlighter-rouge">.jar</code> files that you did not intentionally modify.</li> <li><strong>View local-only files:</strong> Shows files that are not known at all to the remote update sites. These files were likely added manually (e.g., if you installed additional plugins manually; see “How do I install additional plugins” below). Consider deleting these files if you do not need them, especially any <code class="language-plaintext highlighter-rouge">.jar</code> files of unknown origin or conflicting file names.</li> </ul> <p>If you flag any changes to be made, press the “Apply changes” to update your ImageJ. And after restarting ImageJ, you might want to run <span class="bc"><span>Help</span> › <span>Update…</span></span> again to make sure everything looks the way you expect!</p> <h2 id="how-do-i-install-additional-plugins">How do I install additional plugins?</h2> <p>If the plugin is published on an <a href="/update-sites">ImageJ update site</a>, you can run <span class="bc"><span>Help</span> › <span>Update</span></span> then click <span class="app-button">Manage update sites</span> to enable it. Not only does this install the plugins for you automatically, but you will also be notified of any updates whenever they are released.</p> <p>Otherwise, you can drag ‘n drop the <code class="language-plaintext highlighter-rouge">.jar</code> files onto the ImageJ window, or use <span class="bc"><span>Plugins</span> › <span>Install Plugin…</span></span> with .jar, .class and .java files, or copy the plugins to <code class="language-plaintext highlighter-rouge">ImageJ.app/plugins/</code> and restart ImageJ. See the <a href="/plugins#installing-plugins">walk-through with screenshots</a>.</p> <h2 id="how-do-i-downgrade-imagej">How do I downgrade ImageJ?</h2> <p>Downgrading is generally not recommended as a long-term solution, but can be handy to avoid new bugs that crop up.</p> <p><em>If you need to downgrade to avoid a critical bug, please <a href="/discuss/bugs">report that bug</a> to the developers so that it can be fixed in a future version!</em></p> <ul> <li>You can change the version of <a href="/software/imagej">ImageJ</a> used via the <span class="bc"><span>Help</span> › <span>Update ImageJ…</span></span> menu item. Note that this <em>only</em> changes the version of ImageJ itself—not any installed extensions. This command also works in ImageJ2, but only changes the version of the embedded ImageJ 1.x, not all ImageJ2 components.</li> <li>You can <a href="#how-do-i-launch-imagej-with-a-different-version-of-java">switch to a different version of Java</a>.</li> <li>You can <a href="/software/fiji/downloads#life-line-fiji-versions">download a Fiji Life-Line version</a>.</li> </ul> <p>Lastly, if you have not yet upgraded, and have a currently working configuration, you can make a backup copy of your ImageJ folder before upgrading. Then if the upgrade has undesirable consequences, switch back to the old copy.</p> <h2 id="my-plugin-runs-fine-in-the-script-editor-but-it-does-not-show-up-in-the-menus-when-i-install-it-whats-wrong">My plugin runs fine in the <a href="/scripting/script-editor">Script Editor</a>, but it does not show up in the menus when I install it. What’s wrong?</h2> <p>To be picked up as a plugin, the <code class="language-plaintext highlighter-rouge">.jar</code>’s file name must contain an underscore, and it either needs to contain an appropriate <code class="language-plaintext highlighter-rouge">plugins.config</code> file or the class name needs to contain an underscore, too.</p> <p>The safest way to ensure these conventions is to use the <span class="bc"><span>File</span> › <span>Export as .jar file</span></span> menu item.</p> <h2 id="i-tried-to-update-imagej-via-help--update-but-it-throws-an-exception-instead">I tried to update ImageJ via <span class="bc"><span>Help</span> › <span>Update</span></span>, but it throws an exception instead?</h2> <p>Please download a fresh copy from <a href="/downloads">here</a>.</p> <h2 id="i-updated-imagej-via-help--update-and-now-it-does-not-start-anymore">I updated ImageJ via <span class="bc"><span>Help</span> › <span>Update</span></span>, and now it does not start anymore!</h2> <p>See <a href="/learn/troubleshooting#if-imagej-does-not-start-up">If ImageJ does not start up</a> on the Troubleshooting page.</p> <h2 id="the-updater-always-says-connection-refused-maybe-it-does-not-use-the-proxy">The Updater always says <em>Connection refused</em>. Maybe it does not use the proxy?</h2> <p>Indeed, an earlier version of the Updater does not use your system-wide network proxy settings. You can <a href="/downloads">download a new ImageJ</a> to receive the fix. Or you can update the Updater manually like this:</p> <ul> <li>open the <a href="/scripting/script-editor">Script Editor</a> with <span class="bc"><span>File</span> › <span>New</span> › <span>Script</span></span></li> <li>set the language to <em>BeanShell</em> in the <span class="bc"><span>Language</span></span> menu of the editor</li> <li> <p>paste the following code (and adjust it to match your settings):</p> <p>import ij.IJ;</p> <p>System.setProperty(“java.net.useSystemProxies”, “true”); IJ.run(“Update…”);</p> </li> <li>run the script via the <span class="bc"><span>Run</span></span> menu</li> </ul> <h1 id="compatibility">Compatibility</h1> <h2 id="what-is-the-difference-between-imagej-and-imagej2">What is the difference between ImageJ and ImageJ2?</h2> <p><a href="/software/imagej">ImageJ</a> is an extensible platform for scientific image analysis. <a href="/software/imagej2">ImageJ2</a> is redesigned from the ground up to meet the same needs, yet engineered with future-proof flexibility to adapt to researchers’ growing requirements (new data types, higher dimensionality, huge images, etc…).</p> <h2 id="will-imagej-macros-plugins-and-scripts-still-work-in-imagej2">Will ImageJ macros, plugins and scripts still work in ImageJ2?</h2> <p>Yes. We are completely committed to 100% backwards compatibility with the original ImageJ. ImageJ2 includes the latest version of ImageJ “under the hood” so that existing macros, plugins and scripts will still run the same as before.</p> <p>ImageJ2 user interfaces are just plugins; ImageJ2 runs with the <em>ImageJ UI</em> by default. But we have also created a new ImageJ2 user interface modeled after the original ImageJ to a very large extent, with all the same shortcut keys and behaviors whenever possible. Either way, ImageJ2 looks and feels like the original ImageJ, but with a powerful new infrastructure allowing it to process a wider variety of image data more quickly and easily.</p> <h2 id="does-imagej2-support-the-imagej-macro-language-is-it-deprecated">Does ImageJ2 support the ImageJ macro language? Is it deprecated?</h2> <p>Thanks to the <a href="https://github.com/imagej/imagej-legacy/">ImageJ legacy layer</a>, <a href="/software/imagej">ImageJ</a> <a href="/scripting/macro">macros</a> will run unchanged in <a href="/software/imagej2">ImageJ2</a>, while also allowing to harness ImageJ2’s new parameterized <a href="/scripting">scripting</a> paradigm—something that was previously not possible with the macro language.</p> <p>The ImageJ macro language has been extremely useful to many users. However, it has a substantial limitation: its functions are separate from those available from Java and the other scripting languages.</p> <p>In ImageJ2, the goal is to provide one unified set of functions, which is fully accessible from Java and all scripting languages. Hence, ImageJ2 plugins and scripts are more flexible than <a href="/software/imagej">ImageJ</a> <a href="/plugins">plugins</a> and <a href="/scripting/macro">macros</a>. They can run <a href="/learn/headless">headless</a> on a server, and are accessible from various applications such as CellProfiler, <a href="/software/knime">KNIME</a>, OMERO, and headless from the command line. We would encourage newly developed scripts and plugins to use the ImageJ2 API since it offers these advantages, but the ImageJ API will remain accessible, too.</p> <h2 id="can-i-call-imagej-api-from-an-imagej2-command">Can I call ImageJ API from an ImageJ2 command?</h2> <p>Yes, although it is not recommended. You will lose most of the advantages of ImageJ2 if you embed calls to ImageJ within your command. The original ImageJ is tightly coupled to AWT and hence does not work well headless. For details, see the <a href="/learn/headless">Headless</a> page.</p> <h2 id="can-i-call-imagej2-api-from-an-imagej-plugin">Can I call ImageJ2 API from an ImageJ plugin?</h2> <p>Yes, see the <a href="https://github.com/imagej/tutorials/blob/d3ff8e818bb26cb4713371878b239b36cb7d4877/howtos/src/main/java/howto/adv/ModernFromLegacy.java">call-modern-from-legacy</a> tutorial example.</p> <h2 id="how-do-i-find-equivalent-commands-between-the-imagej-and-imagej2-apis">How do I find equivalent commands between the ImageJ and ImageJ2 APIs?</h2> <p><a href="/develop/ij1-ij2-cheat-sheet">ImageJ1-ImageJ2 cheat sheet</a> is available.</p> <h1 id="fiji"><a href="/software/fiji">Fiji</a></h1> <h2 id="what-is-the-difference-between-fiji-and-imagej">What is the difference between Fiji and ImageJ?</h2> <p>Fiji is a <em>distribution</em> of ImageJ + ImageJ2: it bundles the core application with a curated selection of plugins pre-installed.</p> <h2 id="how-do-i-install-fiji">How do I install Fiji?</h2> <p>See <a href="/software/fiji/downloads#installation">here</a> for instructions.</p> <h2 id="how-do-i-install-a-fiji-plugin-into-plain-imagej">How do I install a Fiji plugin into plain <a href="/software/imagej">ImageJ</a>?</h2> <p>Doing this is not recommended:</p> <ul> <li>Fiji plugin authors test their plugins in Fiji, not plain <a href="/software/imagej">ImageJ</a>.</li> <li>An increasing number of plugins use features of <a href="/software/imagej2">ImageJ2</a>, which are not available in the original <a href="/software/imagej">ImageJ</a>.</li> <li>If you install multiple plugins with complex dependency chains in this manner, you may have dependency <a href="/develop/architecture#versioning">version</a> conflicts. For things to work, you will need to ensure that all the library versions are compatible. The <a href="/contribute/governance">Fiji maintainers</a> have already solved this problem for the <a href="/software/fiji">Fiji</a> distribution.</li> </ul> <p>So you could save yourself a lot of pain by using Fiji instead.</p> <p>That said, you can install a Fiji plugin in a plain ImageJ installation, as long as you copy all its dependencies with it. You can do this as follows:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone git://github.com/fiji/Stitching cd Stitching mvn dependency:copy-dependencies </code></pre></div></div> <p>Then copy <code class="language-plaintext highlighter-rouge">target/dependency/*.jar</code> into your ImageJ installation.</p> <p>You will need <a href="/develop/git">Git</a> and <a href="/develop/maven">Maven</a> installed for this to work.</p> <h1 id="interoperability">Interoperability</h1> <h2 id="how-can-i-call-imagej-from-matlab-or-vice-versa">How can I call ImageJ from MATLAB, or vice versa?</h2> <p>Use the ImageJ-MATLAB <a href="/update-sites">update site</a>. See the <a href="/scripting/matlab">MATLAB</a> page for details.</p> <h1 id="development">Development</h1> <h2 id="why-do-i-get-a-nosuchmethoderror-or-nosuchclassdeffounderror-when-running-a-rebuilt-plugin">Why do I get a <code class="language-plaintext highlighter-rouge">NoSuchMethodError</code> or <code class="language-plaintext highlighter-rouge">NoSuchClassDefFoundError</code> when running a rebuilt plugin?</h2> <p>This is most likely caused by version skew, i.e. when an incompatible version of a build dependency is installed. Example: if you build against <code class="language-plaintext highlighter-rouge">mpicbg-1.0.0.jar</code> and run that plugin in a Fiji which has only installed <code class="language-plaintext highlighter-rouge">mpicbg-0.6.1.jar</code>, the latter might miss some methods or classes, or even contain incompatible class definitions.</p> <p>To investigate, you can use <code class="language-plaintext highlighter-rouge">mvn dependency:copy-dependencies</code> on the command-line (to copy all build dependencies into <code class="language-plaintext highlighter-rouge">target/dependency/</code>) and then use your favorite Zip tool to look for the class name mentioned in the exception. In Eclipse, you can simply use <span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">⇧ Shift</kbd> + <kbd class="key">T</kbd> to look open the respective class; If a recent enough Eclipse is used, and the default settings have not been tampered with, this will start downloading and show the source attached to the dependency.</p> <p>Once you know which dependency is supposed to contain the class/method, compare the version number of the file(s) in <code class="language-plaintext highlighter-rouge">ImageJ.app/plugins/</code> and <code class="language-plaintext highlighter-rouge">ImageJ.app/jars/</code>.</p> <p>Sometimes, classes are contained in multiple <code class="language-plaintext highlighter-rouge">.jar</code> files. This is a frequent source of problems e.g. when some developers try to be helpful and include dependencies’ classes into their plugin <code class="language-plaintext highlighter-rouge">.jar</code> files. This is a problem because those class files are naturally not updated when the dependency is installed as a proper, separate <code class="language-plaintext highlighter-rouge">.jar</code> file and updated. To investigate such issues, use the <span class="bc"><span>Plugins</span> › <span>Utilities</span> › <span>Find Jar For Class</span></span> command in Fiji, to determine which <code class="language-plaintext highlighter-rouge">.jar</code> file serves the class you are looking for.</p> <h2 id="what-is-maven-and-why-did-you-pick-it">What is Maven, and why did you pick it?</h2> <p>Maven is a system to build <code class="language-plaintext highlighter-rouge">.jar</code> files from source code, and to manage dependencies (i.e. it is easy to specify which minimal version of, say, ImageJ is required by the source code).</p> <p>We picked it because we need a standard way to interact and collaborate with other projects and with each other. For starters, it allows developers to stay with their favorite development environment (Eclipse, Netbeans, IntelliJ, etc).</p> <p>For details, please refer to our page on <a href="/develop/maven">Maven</a>.</p> <h2 id="what-is-minimaven-and-why-did-you-create-it">What is MiniMaven and why did you create it?</h2> <p>Please refer to the <a href="/develop/minimaven">MiniMaven</a> and <a href="/develop/supported-compilers">Supported Compilers</a> pages for an explanation.</p> <h2 id="how-do-i-create-a-new-imagej-plugin-using-maven">How do I create a new ImageJ plugin using Maven?</h2> <p>Please refer to our page on <a href="/develop/maven">Maven</a>.</p> <h2 id="how-do-i-upload-a-new-release-of-an-imagej-plugin">How do I upload a new release of an ImageJ plugin?</h2> <p>Please refer to the <a href="/develop/uploading-plugins">Uploading plugins</a> tutorial.</p> <h2 id="how-do-i-upload-a-new-release-of-a-core-imagej-library-such-as-imglib">How do I upload a new release of a core ImageJ library such as ImgLib?</h2> <p>The same way you do a plugin. But it will upload to the ImageJ update site (you can only upload to one update site at a time, though, see also <a href="http://trac.imagej.net/ticket/1468">this ticket</a>).</p> <h2 id="what-is-the-recommended-way-to-develop-in-imagej">What is the recommended way to develop in ImageJ?</h2> <p>Over the years we evolved a development style as follows:</p> <ul> <li>create a topic branch</li> <li>test as much as you need to be comfortable to merge</li> <li>merge</li> <li>deal with any fall-out</li> </ul> <p>This development style has been adopted by the <a href="/people">ImageJ2 team</a>, with two additions (making the fall-out step much smaller):</p> <ul> <li>tests are added as automated regression tests (to be run by the <a href="/develop/ci">continuous integration</a> whenever new changes were pushed) whenever possible.</li> <li>merges are usually done with <code class="language-plaintext highlighter-rouge">--no-ff</code>, so that even fast-forwarding branches (i.e. rebased on top of <em>master</em>) will get a merge commit in which the branch is described more broadly.</li> </ul> <p>See also <a href="/develop/coding-style">coding style</a>.</p> <h2 id="class-loading-issue-in-3-rd-party-libraries-eg-jppf">Class loading issue in 3-rd party libraries (e.g. JPPF)</h2> <p>Libraries trying to load resources or classes with the current thread’s class loader rather than with IJ’s class loader may fail. The solution is to first set the current thread’s class loader to the IJ-classloader. This must be done from <u>the same thread</u> that will later call the problematic code:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Thread.currentThread().setContextClassLoader(IJ.getClassLoader()); </code></pre></div></div> <h2 id="how-do-i-see-the-source-code-for-a-command">How do I see the source code for a command?</h2> <p>ImageJ is open source; as such, it is possible to inspect the source code for any command, in the interest of transparency and reproducibility.</p> <p>Here are several ways to do so:</p> <ol> <li><strong>Using <a href="http://search.imagej.net">search.imagej.net</a>:</strong> <ul> <li>Go to http://search.imagej.net/</li> <li>Type in your search</li> <li>Click the GitHub button!</li> </ul> </li> <li><strong>Using the search bar:</strong> <ul> <li>Press <kbd class="key">L</kbd> to focus the search bar.</li> <li>Type the name of the command.</li> <li>Press <kbd class="key">↓ Down</kbd> to select it.</li> <li>Click the Source button.</li> <li>This will open the source in a browser window.</li> </ul> </li> <li><strong>Using GitHub:</strong> <ul> <li>Using the search bar, locate your command, taking note of the Class column’s value. <ul> <li>E.g., if we type “make binary” we see that the class is <code class="language-plaintext highlighter-rouge">ij.plugin.Thresholder</code>.</li> </ul> </li> <li>Open the relevant project in GitHub: <ul> <li>E.g., for “ij.” classes, go to: https://github.com/imagej/ImageJ</li> </ul> </li> <li>Press the <kbd class="key">T</kbd> key, and type the name of the file you are looking for. <ul> <li>In the example above, this is Thresholder.java.</li> </ul> </li> <li>You should end up with a hit like: https://github.com/imagej/ImageJ/blob/-/ij/plugin/Thresholder.java.</li> <li>This method requires that you know in which repository the code lives. However, you can combine it with <strong>search.imagej.net</strong> method above to figure out which repository, then load the code on GitHub, if desired.</li> </ul> </li> <li><strong>Using the “Open Source for Menu Item” command:</strong> <ul> <li>Run <span class="bc"><span>Plugins</span> › <span>Scripting</span> › <span>Open Source for Menu Item</span></span>. <ul> <li>Unfortunately, you must select this from the menu, not using the search bar.</li> </ul> </li> <li>Run the command whose source you want to see. <ul> <li>E.g., <span class="bc"><span>Process</span> › <span>Binary</span> › <span>Make Binary</span></span>.</li> <li>Again, select it from the menu directly, not using the search bar.</li> </ul> </li> <li>This will open the source in your web browser.</li> </ul> </li> </ol> <p>In the future, we plan to make this easier by having one single easy command for viewing the source code.</p> <h2 id="what-are-external-plugins">What are “external” plugins?</h2> <p>As far as users are concerned, external Fiji plugins are exactly the same as internal Fiji plugins. For developers, <a href="/develop/git/extract-a-subproject">“external plugin”</a> simply implies that the plugin’s source code is maintained in its own source code repository. For example, <a href="/plugins/trakem2">TrakEM2</a> has been an external Fiji plugin since Fiji’s inception.</p> <h2 id="where-should-i-put-the-jars-of-my-plugin">Where should I put the jars of my plugin?</h2> <p>If you develop a Fiji plugin, the result will be in the form of one or more jars containing your plugin and possibly third-party libraries that you rely on. To deploy your plugin you put the jars in the plugins/ or jars/ Fiji subdirectories. The general idea is that only the jars directly containing plugin classes go into plugins/. Auxiliary and third-party jars go into jars/. (see <a href="https://groups.google.com/g/fiji-devel/c/pMe86pY_Kmc/m/vI-hUJyyrUwJ">this mail</a> for more background on this.)</p> <h2 id="how-can-i-call-imagej-from-my-software">How can I call ImageJ from my software?</h2> <p>If your software is written in Java, we recommend using <a href="/develop/maven">Maven</a> to structure your project. You can then add dependencies to portions of ImageJ that are of interest to you. See the <a href="https://github.com/imagej/tutorials/">ImageJ tutorials</a> for examples.</p> <p>If your software is written in another language such as C or Python, there are <a href="http://loci.wisc.edu/bio-formats/interfacing-non-java-code">many ways to integrate Java functionality</a>. You must choose which one is best for your particular requirements.</p> <p>To facilitate some use cases, we provide a script for generating a combined bundle of all ImageJ-related JARs in a single <a href="/develop/uber-jars">uber-JAR</a> library. To use, check out the ImageJ <a href="/develop/source">source code</a> and execute:</p> <blockquote> <p><code class="language-plaintext highlighter-rouge">mvn -Pdeps package</code></p> </blockquote> <p>For convenience, we provide a build of this combined JAR file (with suffix <code class="language-plaintext highlighter-rouge">-all</code>) from the latest DEVELOPMENT, UNSTABLE version of ImageJ. This build includes the latest changes on the <a href="https://github.com/imagej/imagej/">master branch of the source repository</a>. It has not been thoroughly tested and may contain new bugs.</p> <p>In some cases, use of this JAR file is appropriate and convenient; for example, <a href="http://cellprofiler.org/">CellProfiler</a> uses it to integrate with ImageJ. However, you should consider carefully what would be best for your project; see the <a href="/develop/uber-jars">Uber-JAR</a> page for further information.</p> <h2 id="does-imagej-work-on-mobile-devices-such-as-android">Does ImageJ work on mobile devices such as Android?</h2> <p>Not yet as an end-user application. But since Android is a Java-based platform, there is hope. One of the <a href="/software/imagej2">ImageJ2</a> project’s central design goals was a better <a href="https://en.wikipedia.org/wiki/Separation_of_concerns">separation of concerns</a>, which could make things like an Android version of ImageJ possible. In particular, the <a href="/software/imagej2#imagej2-is-more-than-just-an-application">core components of ImageJ2</a> are militant in their avoidance of certain Java SE packages not present in the Android version of Java (which is based on Java ME), such as <a href="https://en.wikipedia.org/wiki/Abstract_Window_Toolkit">Java AWT</a>.</p> <p>That said, ImageJ2 has not even been compile-tested yet using an Android SDK, so there are surely many problems which would need to be resolved. In the future, the ImageJ development team hopes to set up some continuous integration surrounding Android. If you are interested in helping drive this effort forward, please see the <a href="http://forum.imagej.sc/tag/android"><code class="language-plaintext highlighter-rouge">android</code> tag on the Image.sc Forum</a>!</p> <p>Another possibility for the future is a client/server version of ImageJ that runs in a web browser using HTML5 and JavaScript, which could include cross-platform support for mobile devices (Android, iPhone, tablets, etc.). Again, much groundwork has been done to make the <a href="/software/imagej2">ImageJ2</a> core design compatible with such an application, but no one has written the server- or client-side yet. If you are seriously interested in helping to pursue such an application, you might also want to check out the <a href="/software/omero">OMERO</a> project, which is a client/server application which has some <a href="https://github.com/imagej/imagej-omero">integration with ImageJ</a>.</p> <h1 id="community">Community</h1> <h2 id="why-is-there-fiji-when-there-is-already-imagej-and-what-is-this-imagej2-about">Why is there Fiji when there is already ImageJ? And what is this ImageJ2 about?</h2> <p>The <a href="/software/imagej">ImageJ</a>, <a href="/software/fiji">Fiji</a> and <a href="/software/imagej2">ImageJ2</a> projects are very closely related. See <a href="/learn/flavors">ImageJ Flavors</a> for a thorough breakdown of the differences.</p> <p>See also:</p> <ul> <li><a href="/news/2011-10-05-the-relation-between-imageja-and-imagej">an ImageJ2 blog post clarifying specifically the relationship between ImageJ and the version used in Fiji</a></li> <li><a href="/news/2012-02-01-the-fiji-updater-has-been-integrated-into-the-imagej2-code-base">an ImageJ2 blog post illustrating that we move code from Fiji to ImageJ2 as appropriate</a></li> </ul> <p>In short: we all collaborate, but have slightly different focus, hence the different projects and names.</p> <h2 id="how-can-we-be-sure-that-imagej-imagej2-and-fiji-arent-going-to-diverge-or-fork-over-time">How can we be sure that ImageJ, ImageJ2 and Fiji aren’t going to diverge or fork over time?</h2> <p>We are working to create an architecture where the programs work together and preserve compatibility. Fiji is just ImageJ with batteries included, and ImageJ2 includes ImageJ as-is for maximum compatibility. Fiji now uses ImageJ2 at its core. Most importantly, all involved developers are strongly dedicated to avoiding divergence—we are working closely together to ensure that ImageJ2 represents a continuation of ImageJ and Fiji, rather than a project fork.</p> <h2 id="would-it-make-sense-to-merge-the-imagej2-and-fiji-projects">Would it make sense to merge the ImageJ2 and Fiji projects?</h2> <p><a href="/software/fiji">Fiji</a> and <a href="/software/imagej2">ImageJ2</a> are fundamentally the same software, using the same <a href="/learn/launcher">launcher</a>. So from the standpoint of development effort, the ImageJ2 and Fiji projects have indeed merged. ImageJ2 is the core software, and several pieces of infrastructure originally developed for Fiji have now migrated to ImageJ2 (e.g., the <a href="/plugins/updater">Updater</a>, <a href="/learn/launcher">Launcher</a> and <a href="/scripting/script-editor">Script Editor</a> components). At heart, Fiji is just a big collection of life sciences plugins (though “Fijabcolsp” doesn’t have quite the same ring to it). In other words, Fiji is just an ImageJ update site (“Fijaius”)—and as such, you can obtain a working Fiji installation by downloading ImageJ2, running the updater, and enabling the Fiji update site.</p> <p>All of that said, we do not want to get rid of the two distinct project names, since people are familiar with both. But we are integrating resources when feasible: e.g., the <a href="/">ImageJ wiki</a> serves all ImageJ content including Fiji-specific content (which is marked with the Fiji logo). But we want to ensure it is clear that ImageJ is not a life-sciences-specific project, whereas Fiji is. Historically, because Fiji has a life sciences focus, there have been some users who refused to switch from the original <a href="/software/imagej">ImageJ</a> to Fiji even though Fiji makes users’ lives easier in lots of ways. With ImageJ2, we want to avoid such misconceptions.</p> <p>More effort is still needed to clarify web resources, to explain concisely and clearly where people should go in different circumstances. We also have plans to make bug reporting simpler and easier across the projects.</p> <h2 id="this-is-a-wiki-but-i-cannot-edit-it-why">This is a Wiki but I cannot edit it! Why?</h2> <p>To make changes, you need <a href="https://github.com/join">a GitHub account</a>. Then you can click the “Edit this page” link at the top right corner of any page.</p> <h2 id="the-wiki-is-lacking-documentation-about-x-y-and-z">The Wiki is lacking documentation about X, Y and Z</h2> <p>Please feel free to enhance the Wiki! We are thankful for all contributions!</p> <h2 id="how-do-i-find-more-information-about-command-x">How do I find more information about Command X?</h2> <p>Try searching for the command in <a href="/learn#the-search-bar">ImageJ’s search bar</a>, and clicking the <span class="app-button">Help</span> button. Alternately, check this wiki: you can use its search bar above, or visit the <a href="/list-of-extensions">list of extensions</a> page, which includes links to many documentation pages of ImageJ’s various extensions.</p> <p>If documentation is missing for the command you’re interested in, you can always view the source directly:</p> <ol> <li>Jump to the <a href="/learn#the-search-bar">search bar</a> (Shortcut: <kbd class="key">L</kbd>)</li> <li>Filter to the command you’re interested in.</li> <li>The `File` column will tell you the plugin where the desired command is contained.</li> <li>You can then use this information to find the source code on GitHub - for core <a href="https://github.com/imagej">ImageJ</a> or <a href="https://github.com/fiji">Fiji</a> plugins.</li> <li>From the appropriate project on GitHub, you can find the repository corresponding to the desired plugin.</li> <li>Finally, you can search for the actual file for the command of interest (Shortcut: <kbd class="key">T</kbd>).</li> </ol> <p>As a complete example, if you were interested in the <a href="/plugins/2d-histogram">2D Histogram</a> command:</p> <ul> <li>The <a href="/learn#the-search-bar">search bar</a> indicates it’s located in VIB.jar</li> <li>VIB is a Fiji plugin, so we go to <a href="https://github.com/fiji/VIB">the VIB repository</a>.</li> <li>On GitHub, press <kbd class="key">T</kbd>, search for “Histogram”, and find <a href="https://github.com/fiji/VIB/blob/-/src/main/java/util/Histogram_2D.java">the Histogram 2D</a> source.</li> </ul> <h2 id="i-have-a-problem-that-is-not-covered-on-this-page">I have a problem that is not covered on this page!</h2> <p>If you have an issue that is not mentioned here, you might want to <a href="/discuss">ask on one of the mailing lists, or via IRC</a>, or <a href="/discuss/bugs">enter a bug report</a>.</p> <h2 id="how-to-report-issues">How to report issues?</h2> <p>Please see <a href="/discuss/bugs">Report a Bug</a>’ %}. While private mail might seem more desirable sometimes, but it is almost always inferior to the open process we established in ImageJ. For starters, bug reporters are unlikely to know who would be the best person to address the issue.</p> <h2 id="i-reported-an-issue-but-it-is-still-not-fixed-why-not">I reported an issue, but it is still not fixed! Why not?</h2> <p><a href="/software/imagej">ImageJ</a> and its <a href="/learn/flavors">variants</a> are <a href="/licensing/open-source">open source</a> community projects. The list of <a href="/people">contributors</a> is large but many of the people involved are not paid to work on it. We greatly value community contributions and assistance.</p> <p>There are not many professional developers whose formal jobs include responding to and addressing bug reports. These developers are not paid <em>solely</em> to fix bugs—rather, they are working to solve scientific problems and to advance the software’s capabilities. And their attention is spread thin across many projects: <a href="https://github.com/imagej">ImageJ</a>, <a href="https://github.com/fiji">Fiji</a>, <a href="https://github.com/scifio">SCIFIO</a>, <a href="https://github.com/scijava">SciJava</a>, <a href="https://github.com/uw-loci">LOCI</a>, <a href="https://github.com/openmicroscopy">OME</a>, <a href="https://github.com/imglib">ImgLib2</a>, <a href="https://github.com/openspim">OpenSPIM</a>, and others.</p> <p>The organizations above total over 300 source code repositories, many of which have dozens of open issues in their issue trackers. There are also several hundred tickets in the <a href="https://imagej.net/tickets/">old ImageJ2 issue tracker</a> that were never migrated to GitHub Issues, as well as over a hundred <a href="https://fiji.sc/bug/">open issues archived in the Fiji Bugzilla</a>.</p> <p>So please understand that just because we have not responded to a bug report, does not mean we are uninterested in fixing it. It’s just that we are very busy, and can use all the help we can get!</p> <p>If you want to increase the chances of your issue being worked on, you can:</p> <ul> <li><a href="/discuss/bugs">Report the issue</a>.</li> <li>Provide a <a href="http://stackoverflow.com/help/mcve">minimal, complete, verifiable example</a>.</li> <li><a href="http://whathaveyoutried.com/">Describe what you already tried</a>.</li> <li><a href="http://stackoverflow.com/help/how-to-ask">Put as much effort into your question</a> as you expect to be put into its response.</li> <li>Consider <a href="/develop/debugging">debugging</a> the issue yourself and <a href="/contribute">submitting a fix</a> as a <a href="https://help.github.com/articles/using-pull-requests">pull request</a>.</li> </ul> <p>See the <a href="/discuss/bugs#bug-reporting-best-practices">bug reporting best practices</a> article for details.</p> <h2 id="how-do-i-contribute-a-bug-fix-or-patch-or-propose-an-idea-for-a-change">How do I contribute a bug fix or patch, or propose an idea for a change?</h2> <p>See the <a href="/contribute">Contributing</a> page!</p> <h1 id="miscellaneous">Miscellaneous</h1> <h2 id="why-do-you-program-in-java-is-c-not-much-faster">Why do you program in Java? Is C++ not much faster?</h2> <p>See the <a href="/develop/philosophy#why-java">Philosophy</a> page!</p> <h2 id="with-oracle-buying-sun-and-apple-deprecating-java-does-java-have-a-future">With Oracle buying Sun and Apple deprecating Java, does Java have a future?</h2> <p>Yes. Java is one of the <a href="http://langpop.com/">most popular programming languages</a> and still one of the top choices for high-performance, cross-platform applications. Oracle is unlikely to attempt to “kill” Java, but even if they tried they probably couldn’t—OpenJDK is open source and there is a massive community of Java developers behind it. Now that <a href="http://www.apple.com/pr/library/2010/11/12openjdk.html">Apple is partnering with Oracle and the OpenJDK community</a>, we are likely to see Java on macOS get better, not worse. Java’s popularity will eventually wane, but not because of any company’s actions now. Rather, as with any programming language, new technologies will emerge and gain popularity, over a course of many years.</p> <h2 id="why-does-imagej-still-target-java-6">Why does ImageJ still target Java 6?</h2> <p>As of June 2014, around 19% of macOS systems still run version 10.6 Snow Leopard or older <a href="http://www.netmarketshare.com/_1">http://www.netmarketshare.com/ 1</a>. (In December 2013, it was around 25%.) Unfortunately, Apple and the OpenJDK developer community decided to target OS X 10.7 Lion and above for Java 7 and 8. For the time being, to avoid abandoning older machines which cannot be upgraded from Snow Leopard, ImageJ continues to target Java 6.</p> <p>Furthermore, updating the required version to a newer version of Java would necessitate improvements to the ImageJ <a href="/plugins/updater">Updater</a> such that it could also update the bundled version of Java, which would be a substantial undertaking. Otherwise, most existing installations of ImageJ would stop working, and those users would need to download ImageJ from scratch again.</p> <p>See <a href="https://list.nih.gov/cgi-bin/wa.exe?A2=IMAGEJ;29652c34.1412">this mailing list thread</a> for further details.</p> <h2 id="how-are-you-addressing-the-fact-that-with-increased-modularity-comes-increased-complexity">How are you addressing the fact that with increased modularity comes increased complexity?</h2> <p>See the <a href="/develop/philosophy#convention-over-configuration">Philosophy</a> page!</p> <h2 id="how-about-a-version-of-imagej-for-the-web-browser-mobile-devices-etc">How about a version of ImageJ for the web browser, mobile devices, etc.?</h2> <p>While a pure web version of ImageJ would be desirable for a number of reasons, there are several substantial challenges with current technology. In particular, it would be difficult for a Javascript-based ImageJ to maintain compatibility with existing plugins, macros and scripts. For now, our goal is to continue improving the Java version of ImageJ, while remaining cognizant of developments in the web applications domain, to reduce the difficulties of a web version at some future date.</p> <p>We are developing ImageJ with a careful eye toward modularity, avoiding gratuitous dependencies—particularly on AWT, which is not available on most mobile devices. We hope this approach makes it easier to port ImageJ to additional platforms in the future.</p> <p>A shorter term pragmatic solution would be an ImageJ web client that connects to a remote server running ImageJ in headless mode, which does the heavy lifting. See also the <a href="http://openmicroscopy.org/info/omero">OMERO project</a>.</p> <h2 id="why-is-open-software-vital-to-science">Why is open software vital to science?</h2> <p>See the <a href="/licensing/open-source">Open Source</a> page!</p> <h2 id="is-java-still-free-and-open-source-i-heard-oracle-is-charging-for-java-now">Is Java still free and open source? I heard Oracle is charging for Java now!</h2> <p>Java is still free and open source. The only reason to pay Oracle for a Java license is to continue receiving commercial support from Oracle after January 2019 for the <em>Oracle version of Java 8</em>. If you use OpenJDK, you are fine. If you use an older version of Oracle Java 8 (such as the one currently shipping with <a href="/software/fiji">Fiji</a>), you are fine. See <a href="https://medium.com/@javachampions/java-is-still-free-c02aef8c9e04">this article</a> for details.</p> </div> </div> </section> <!-- Footer --> <section id="footer"> <ul class="icons"> <li><a href="https://forum.image.sc/tag/imagej" class="icon alt"><img src="/media/icons/image-sc.png" width="24" style="vertical-align: middle; margin-top: -10px"><span class="label">Forum</span></a></li> <li><a href="https://twitter.com/hashtag/ImageJ" class="icon brands alt fa-twitter"><span class="label">Twitter</span></a></li> <li><a href="https://github.com/imagej" class="icon brands alt fa-github"><span class="label">GitHub</span></a></li> </ul> <ul class="copyright"> <li>Design: <a href="http://html5up.net">HTML5 UP</a></li> </ul> </section> <!-- Hamburger menu --> <nav role="navigation"> <div id="ham-toggle"> <input type="checkbox" /> <span></span> <!-- top bun --> <span></span> <!-- hamburger --> <span></span> <!-- bottom bun --> <ul id="ham-menu"> <div class="menu"><h3>ImageJ Docs</h3> <ul> <li><a href="/downloads">Download</a></li> <li><details open><summary>Learn</summary><ul> <li><details open><summary><a href="/learn">ImageJ Basics</a></summary><ul> <li><a href="/tutorials">Tutorials</a></li> <li><a href="/learn/user-guides">User Guides</a></li> <li><a href="/learn/keyboard-shortcuts">Keyboard Shortcuts</a></li> <li><a href="/learn/tips-and-tricks">Tips and Tricks</a></li> <li><a href="/learn/troubleshooting">Troubleshooting</a></li> <li><a class="current-page">Frequently Asked Questions</a></li> <li><details><summary><a href="/platforms">Supported Platforms</a></summary><ul> <li><a href="/platforms/windows">Windows</a></li> <li><a href="/platforms/macos">MacOS</a></li> <li><a href="/platforms/linux">Linux</a></li> <li><a href="/platforms/pi">Raspberry Pi</a></li> <li><a href="/platforms/android">Android</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/Supported Platforms --> <li><details><summary><a href="/formats">File Formats</a></summary><ul> <li><a href="/formats/bio-formats">Bio-Formats</a></li> <li><a href="/formats/video">Video formats</a></li> <li><a href="/formats/quicktime">QuickTime</a></li> <li><a href="/formats/tiff">TIFF</a></li> <li><a href="/formats/pdf">PDF</a></li> <li><a href="/formats/dicom">DICOM</a></li> <li><a href="/formats/lsm">Zeiss LSM</a></li> <li><a href="/formats/olympus">Olympus VSI</a></li> <li><a href="/formats/lurawave">Opera Flex</a></li> <li><a href="/formats/fib-sem">FIB-SEM</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/File Formats --> </ul></details></li> <!-- Learn/ImageJ --> <li><details><summary><a href="/imaging">Scientific Imaging</a></summary><ul> <li><a href="/imaging/principles">Principles of Scientific Imaging</a></li> <li><a href="/imaging/annotating-images">Annotating Images</a></li> <li><a href="/imaging/colocalization-analysis">Colocalization</a></li> <li><a href="/imaging/color-image-processing">Color Image Processing</a></li> <li><a href="/imaging/deconvolution">Deconvolution</a></li> <li><a href="/imaging/image-intensity-processing">Image Intensity Processing</a></li> <li><a href="/imaging/particle-analysis">Particle Analysis</a></li> <li><a href="/imaging/registration">Registration</a></li> <li><a href="/imaging/segmentation">Segmentation</a></li> <li><a href="/imaging/stack-slice-manipulations">Stack-slice Manipulations</a></li> <li><a href="/imaging/t-functions">T-functions</a></li> <li><a href="/imaging/tracking">Tracking</a></li> <li><a href="/imaging/visualization">Visualization</a></li> <li><a href="/imaging/z-functions">Z-functions</a></li> </ul></details></li> <!-- Learn/Scientific Imaging --> </ul></details></li> <!-- Learn --> <li><details><summary><a href="/plugins">Extend</a></summary><ul> <li><a href="/list-of-extensions">List of Extensions</a></li> <li><details><summary><a href="/update-sites">Update Sites</a></summary><ul> <li><a href="/list-of-update-sites">List of Update Sites</a></li> <li><a href="/update-sites/following">Following an Update Site</a></li> <li><a href="/update-sites/setup">Creating an Update Site</a></li> <li><a href="/update-sites/tos">Terms of Service</a></li> <li><a href="/update-sites/automatic-uploads">Automatic Upload</a></li> <li><a href="/update-sites/core-uploads">Uploading to Core Sites</a></li> <li><a href="/update-sites/faq">Update Sites FAQ</a></li> <li><a href="/update-sites/stats">Statistics</a></li> </ul></details></li> <!-- Extend/Update Sites --> <li><details><summary><a href="/scripting">Scripting</a></summary><ul> <li><a href="/scripting/basics">Scripting Basics</a></li> <li><a href="/scripting/script-editor">Script Editor</a></li> <li><a href="/scripting/parameters">Parameters</a></li> <li><a href="/scripting/user-input">User Input</a></li> <li><a href="/scripting/auto-imports">Auto Import</a></li> <li><a href="/scripting/templates">Templates</a></li> <li><a href="/scripting/batch">Batch Processing</a></li> <li><a href="/scripting/headless">Running Headlessly</a></li> <li><a href="/scripting/comparisons">Scripting Comparisons</a></li> <li><a href="/scripting/toolbox">Toolbox</a></li> <li><details><summary>Languages</summary><ul> <li><a href="/scripting/beanshell">BeanShell Scripting</a></li> <li><a href="/scripting/groovy">Groovy Scripting</a></li> <li><a href="/scripting/macro">ImageJ Macro</a></li> <li><a href="/scripting/javascript">JavaScript</a></li> <li><a href="/scripting/clojure">Lisp (Clojure)</a></li> <li><a href="/scripting/matlab">MATLAB</a></li> <li><a href="/scripting/jython">Python (Jython)</a></li> <li><a href="/scripting/python">Python (native)</a></li> <li><a href="/scripting/renjin">R (Renjin)</a></li> <li><a href="/scripting/jruby">Ruby (JRuby)</a></li> <li><a href="/scripting/scala">Scala Scripting</a></li> </ul></details></li> <!-- Extend/Scripting/Languages --> </ul></details></li> <!-- Extend/Scripting --> <li><details><summary><a href="/develop">Development</a></summary><ul> <li><a href="/develop/philosophy">Philosophy</a></li> <li><a href="/develop/architecture">Architecture</a></li> <li><a href="/develop/source">Source code</a></li> <li><a href="/develop/project-management">Project management</a></li> <li><a href="/develop/coding-style">Coding style</a></li> <li><a href="/develop/javadoc">Using Javadoc</a></li> <li><a href="/develop/debugging">Debugging</a></li> <li><a href="/develop/wish-list">Wish list</a></li> <li><details><summary>Tools</summary><ul> <li><a href="/develop/github">GitHub</a></li> <li><a href="/develop/maven">Maven</a></li> <li><a href="/develop/ci">CI/CD</a></li> <li><a href="/develop/dotfiles">Dotfiles</a></li> <li><details><summary><a href="/develop/ides">IDEs</a></summary><ul> <li><a href="/develop/eclipse">Eclipse</a></li> <li><a href="/develop/netbeans">NetBeans</a></li> <li><a href="/develop/intellij">IntelliJ IDEA</a></li> <li><a href="/develop/command-line">Command Line</a></li> </ul></details></li> </ul></details></li> <!-- Extend/Development/Tools --> <li><details><summary>Guides</summary><ul> <li><a href="/develop/plugins">Writing plugins</a></li> <li><a href="/develop/improving-the-code">Contributing to a plugin</a></li> <li><a href="/develop/releasing">Development lifecycle</a></li> <li><a href="/develop/building-a-pom">Building a POM</a></li> <li><a href="/develop/debugging-exercises">Hands-on debugging</a></li> <li><a href="/develop/writing-ops">Adding new ops</a></li> <li><a href="/develop/formats">Adding new formats</a></li> <li><a href="/develop/native-libraries">Using native libraries</a></li> <li><a href="/develop/tips">Tips for developers</a></li> <li><a href="/develop/cpp-tips">Tips for C++ developers</a></li> <li><a href="/develop/ij1-plugins">ImageJ 1.x plugins</a></li> <li><a href="/develop/versioning">Versioning</a></li> <li><a href="/develop/logging">Logging</a></li> <li><a href="/develop/uber-jars">Uber-JARs</a></li> </ul></details></li> <!-- Extend/Development/Guides --> <li><details><summary><a href="/develop/git">Git</a></summary><ul> <li><a href="/develop/git/eclipse">Git in Eclipse (EGit)</a></li> <li><a href="/develop/git/mini-howto">Git mini howto</a></li> <li><a href="/develop/git/workshop">Git workshop</a></li> <li><a href="/develop/git/conflicts">Git conflicts</a></li> <li><a href="/develop/git/topic-branches">Git topic branches</a></li> <li><a href="/develop/git/notes">Git notes</a></li> <li><a href="/develop/git/reflogs">Git reflogs</a></li> <li><a href="/develop/git/submodules">Git submodules</a></li> <li><a href="/develop/git/pinpoint-regressions">How to pinpoint regressions</a></li> <li><a href="/develop/git/publish-a-repository">How to publish a git repository</a></li> <li><a href="/develop/git/extract-a-subproject">How to extract a subproject</a></li> </ul></details></li> <!-- Extend/Development/Git --> </ul></details></li> <!-- Extend/Development --> </ul></details></li> <!-- Extend --> <li><details><summary><a href="/contribute">Contribute</a></summary><ul> <li><a href="/contribute/citing">Citing</a></li> <li><a href="/people">Contributors</a></li> <li><a href="/orgs">Organizations</a></li> <li><a href="/contribute/governance">Governance</a></li> <li><a href="/contribute/funding">Funding</a></li> <li><a href="/contribute/fiji">Contributing to Fiji</a></li> <li><details><summary><a href="/licensing">Licensing</a></summary><ul> <li><details><summary><a href="/licensing/open-source">Open Source</a></summary><ul> <li><a href="/licensing/apache">Apache</a></li> <li><a href="/licensing/bsd">BSD</a></li> <li><a href="/licensing/epl">EPL</a></li> <li><a href="/licensing/gpl">GPL</a></li> <li><a href="/licensing/lgpl">LGPL</a></li> <li><a href="/licensing/mit">MIT</a></li> <li><a href="/licensing/public-domain">Public domain</a></li> <li><a href="/licensing/big">BIG</a></li> </ul></details></li> <!-- Contribute/Licensing/Open Source --> <li><a href="/licensing/closed-source">Proprietary</a></li> </ul></details></li> <!-- Contribute/Licensing --> <li><details><summary><a href="/editing">Editing the Wiki</a></summary><ul> <li><a href="/editing/advanced">Advanced Editing</a></li> <li><a href="/editing/buttons">Buttons</a></li> <li><a href="/editing/citations">Citations</a></li> <li><a href="/editing/code">Source Code</a></li> <li><a href="/editing/debugging">Debugging</a></li> <li><a href="/editing/headers">Headers</a></li> <li><a href="/editing/icons">Icons</a></li> <li><a href="/editing/images">Images</a></li> <li><a href="/editing/keys">Keyboard Shortcuts</a></li> <li><a href="/editing/linking">Linking</a></li> <li><a href="/editing/math">Math Expressions</a></li> <li><a href="/editing/menu-paths">Menu Paths</a></li> <li><a href="/editing/navigation">Navigation</a></li> <li><a href="/editing/notices">Notices</a></li> <li><a href="/editing/people">People</a></li> <li><a href="/editing/pitfalls">Pitfalls</a></li> <li><a href="/editing/quizzes">Quizzes</a></li> <li><a href="/editing/statbox">Statbox</a></li> <li><a href="/editing/symbols">Symbols</a></li> <li><a href="/editing/tables">Tables</a></li> <li><a href="/editing/tooltips">Tooltips</a></li> <li><a href="/editing/videos">Videos</a></li> <li><a href="/editing/whitespace">Whitespace</a></li> </ul></details></li> <!-- Contribute/Editing the Wiki --> </ul></details></li> <!-- Contribute --> <li><details><summary><a href="/discuss">Discuss</a></summary><ul> <li><a href="/discuss/bugs">Reporting Issues</a></li> <li><a href="/discuss/mailing-lists">Mailing Lists</a></li> <li><a href="/discuss/chat">Chat</a></li> </ul></details></li> <!-- Discuss --> <li><details><summary>Explore</summary><ul> <li><a href="/news">News</a></li> <li><details><summary><a href="/events">Events</a></summary><ul> <li><a href="/events/presentations">Presentations</a></li> <li><a href="/events/conferences">Conferences</a></li> <li><a href="/events/hackathons">Hackathons</a></li> <li><a href="/events">More...</a></li> </ul></details></li> <!-- Discuss/Events --> <li><details><summary><a href="/libs">Libraries</a></summary><ul> <li><a href="/libs/imagej-ops">ImageJ Ops</a></li> <li><a href="/libs/imagej-common">ImageJ Common</a></li> <li><a href="/libs/imagej-legacy">ImageJ Legacy</a></li> <li><a href="/libs/scijava">SciJava</a></li> <li><a href="/libs/scifio">SCIFIO</a></li> <li><details><summary><a href="/libs/imglib2">ImgLib2</a></summary><ul> <li><a href="/libs/imglib2/getting-started">Getting Started</a></li> <li><a href="/libs/imglib2/accessors">Accessors</a></li> <li><a href="/libs/imglib2/accessibles">Accessibles</a></li> <li><a href="/libs/imglib2/examples">Examples</a></li> <li><a href="/libs/imglib2/workshop-introductory">Introductory Workshop</a></li> <li><a href="/libs/imglib2/workshop-advanced">Advanced Workshop</a></li> <li><a href="/libs/imglib2/matlab">ImgLib2 images in MATLAB</a></li> <li><a href="/libs/imglib2/benchmarks">Benchmarks</a></li> <li><a href="/libs/imglib2/faq">FAQ</a></li> <li><a href="/libs/imglib2/developing">Developing ImgLib2</a></li> <li><a href="/libs/imglib2/discussion">ImgLib2 Discussion</a></li> </ul></details></li> <!-- Explore/Libraries/ImgLib2 --> <li><a href="/libs">More...</a></li> </ul></details></li> <!-- Explore/Libraries --> <li><details><summary><a href="/software">Software</a></summary><ul> <li><a href="/software/nih-image">NIH Image</a></li> <li><a href="/software/imagej">ImageJ</a></li> <li><a href="/software/imagej2">ImageJ2</a></li> <li><a href="/software/fiji">Fiji</a></li> <li><a href="/software">More...</a></li> </ul></details></li> <!-- Explore/Software --> </ul></details></li> <!-- Explore --> </ul> </div> </ul> </div> </nav> <div id="dock-overlay-left" class="dock-overlay" data-dock-target="left-column"></div> <div id="dock-overlay-right" class="dock-overlay" data-dock-target="right-column"></div> <!-- Search results --> <div id="search-results"> <div id="search-hits"></div> <div id="pagination"></div> </div> <!-- Scripts --> <!-- Libraries --> <script src="/assets/js/jquery.min.js"></script> <script src="/assets/js/jquery.scrolly.min.js"></script> <script src="/assets/js/browser.min.js"></script> <script src="/assets/js/breakpoints.min.js"></script> <script src="/assets/js/util.js"></script> <script src="/assets/js/jquery.toc.js"></script> <script src="/assets/js/lightbox.min.js"></script> <!-- Extensions --> <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=default"> </script> <!-- Site code --> <script src="/assets/js/main.js"></script> <script src="/assets/js/dock.js"></script> <script src="/assets/js/code.js"></script> <!-- Anchors --> <script src="https://cdn.jsdelivr.net/npm/anchor-js/anchor.min.js"></script> <script>anchors.add('#page h1, #page h2, #page h3, #page h4, #page h5, #page h6');</script> <!-- Citations --> <script src="https://cdn.jsdelivr.net/npm/citation-js@0.4.0-9"></script> <script src="/assets/js/cite.js"></script> <!-- Search --> <script src="https://cdn.jsdelivr.net/npm/algoliasearch@4.13.0/dist/algoliasearch-lite.umd.js"></script> <script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4.40.3/dist/instantsearch.production.min.js"></script> <script src="/assets/js/search.js"></script> <script src="/assets/js/search-tweaks.js"></script> </body> </html>