CINXE.COM
Image Intensity Processing
<!DOCTYPE html> <html> <head> <title>Image Intensity Processing</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="Image Intensity Processing" 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/imaging/image-intensity-processing" 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/timeline.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/imaging/image-intensity-processing.md">Page history</a> <a href="https://github.com/imagej/imagej.github.io/edit/main/_pages/imaging/image-intensity-processing.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><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 href="/learn/faq">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 open><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 class="current-page">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/timelines">Timelines</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>Image Intensity Processing</h1> </header> </div> <!-- Nav bar --> <div id="nav-bar"><ul class="shadowed-box"><li><a href="/imaging/index">Overview</a></li><li><a href="/imaging/3d-rendering">3D Rendering</a></li><li><a href="/imaging/annotating-images">Annotating Images</a></li><li><a href="/imaging/chromatic-shift">Chromatic Shift</a></li><li><a href="/imaging/colocalization-acquisition">Colocalization Acquisition</a></li><li><a href="/imaging/colocalization-analysis">Colocalization Analysis</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/detect-information-loss">Information Loss</a></li><li>Image Intensity Processing</li><li><a href="/imaging/particle-analysis">Particle Analysis</a></li><li><a href="/imaging/principles">Principles</a></li><li><a href="/imaging/registration">Registration</a></li><li><a href="/imaging/segmentation">Segmentation</a></li><li><a href="/imaging/spatial-calibration">Spatial Calibration</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/thresholding">Thresholding</a></li><li><a href="/imaging/tracking">Tracking</a></li><li><a href="/imaging/visualization">Visualization</a></li><li><a href="/imaging/voxelization">Voxelization</a></li><li><a href="/imaging/watershed">Watershed Separation</a></li><li><a href="/imaging/z-functions">Z‑functions</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"> <h2 id="brightness-and-contrast">Brightness and Contrast</h2> <p><img src="/media/imaging/brightness-contrast-pic.png" class="img float-right" alt="brightness-contrast-pic" /> Brightness is the visual perception of reflected light. Increased brightness refers to an image’s increased luminance.</p> <p>Contrast is the separation of the lightest and darkest parts of an image. An increase in contrast will darken shadows and lighten highlights. Increasing contrast is generally used to make objects in an image more distinguishable.</p> <p>Adjust the brightness and contrast with <span class="bc"><span>Image</span> › <span>Adjust</span> › <span>Brightness/Contrast…</span></span> to make visualization of the image easier.</p> <p>Press the <em>Auto</em> button to apply an intelligent contrast stretch to the <em>the image display</em>. Brightness and contrast is adjusted by taking into account the image’s histogram. If pressed repeatedly, the button increases the percentage of saturated pixels.</p> <p>The <em>Reset</em> button makes the “maximum” 0 and the “minimum” 255 in 8-bit images and the “maximum” and “minimum” equal to the smallest and largest pixel values in the image’s histogram for 16-bit images.</p> <p>If the <em>Auto</em> button does not produce a desirable result, use the region-of-interest (ROI) tool to select part of the cell and some background, then hit the <em>Auto</em> button again. The stretch will then be based on the intensities of the ROI.</p> <p>Pressing the <em>Apply</em> button permanently changes the <em>actual</em> grey values of the image. If just analyzing image intensity do not press this button.</p> <p>If you prefer the image to be displayed as “black on white” rather than “white on black”, then use the “inverted” command: <span class="bc"><span>Image</span> › <span>Lookup Tables</span> › <span>Invert LUT</span></span>. The command <span class="bc"><span>Edit</span> › <span>Invert</span></span> inverts the pixel <em>values themselves</em> permanently.</p> <h2 id="getting-intensity-values-from-single-roi">Getting intensity values from single ROI</h2> <p>If working with a stack, the ROI selected can be analyzed with the command: <span class="bc"><span>Image</span> › <span>Stacks</span> › <span>Plot Z Axis Profile</span></span>. This generates a single column of numbers - one slice intensity per row.</p> <p>The top 6 rows of the column are details of the ROI. This makes sure the same ROI is not analyzed twice and allows you to save any interesting ROIs. The details are comprised of area, x-coordinate, y-coordinate, AR, roundness, and solidity of the ROI. If the ROI is a polyline>freehand ROI rather than a square>oval, it acts as if the ROI is an oval>square. The (oval) ROI can be restored by entering the details prompted by the <span class="bc"><span>Edit</span> › <span>Selection</span> › <span>Restore Selection</span></span> (hotkey: <kbd class="key">⌃ Ctrl</kbd> + <kbd class="key">⇧ Shift</kbd> + <kbd class="key">E</kbd>) command.</p> <p>The results are displayed in a plot-window with the ROI details in the plot window title. The plot contains the buttons <em>List, Save, Copy.</em> The <em>Copy</em> button puts the data in the clipboard so it can be pasted into an Excel sheet. The settings for the copy button can be found under <span class="bc"><span>Edit</span> › <span>Options</span> › <span>Profile Plot Options</span></span>. Recommended settings include: <em>Do not save x-values</em> (prevents slice number data being pasted into Excel) and <em>Autoclose</em> so that you don’t have to close the analyzed plot each time.</p> <h2 id="dynamic-intensity-vs-time-analysis">Dynamic intensity vs Time analysis</h2> <p>The plugin <em>Plot Z Axis Profile</em> (this is the <em><a href="https://imagej.net/ij/plugins/z-profiler.html">Z Profiler</a></em> from Kevin (Gali) Baler (gliblr at yahoo.com) and <a class="person" href="/people/rasband">Wayne Rasband</a> simply renamed) will monitor the intensity of a moving ROI using a particle tracking tool. This tool can be either manual or automatic. Use the <span class="bc"><span>Image</span> › <span>Stacks</span> › <span>Plot Z Axis Profile</span></span> command.</p> <h2 id="getting-intensity-values-from-multiple-rois">Getting intensity values from multiple ROIs</h2> <p>You can analyze multiple ROIs at once with Bob Dougherty’s <em>Multi Measure</em> plugin. The native “ROI manager” function does a similar job except doesn’t generate the results in sorted columns. Check <a href="https://www.optinav.info/">Bob’s website</a> for updates.</p> <p>The Multi Measure plugin that comes with the installation is v3.2.</p> <ol> <li>Open confocal-series and remove the background (See Background correction)</li> <li>Generate a reference stack for the addition of ROIs. Use the <span class="bc"><span>Image</span> › <span>Stacks</span> › <span>Z-project</span></span> function and select the <em>Average</em>.</li> <li>Rename this image something memorable.</li> <li>Open the <em>ROI Manager</em> plugin (<span class="bc"><span>Analyze</span> › <span>Tools</span> › <span>Roi Manager</span></span> or toolbar icon).</li> <li>Select ROIs and “<em>Add</em>” to the ROI manager. Click the “<em>Show All</em>” button to help avoid analyzing the same cell twice.</li> <li>After selecting ROIs to be analyzed in the reference image, you can draw them to the reference image by clicking the “<em>More>></em>” button and selecting <em>Draw</em>. Save the reference image to the experiment’s data folder and then click on the stack to be analyzed.</li> <li>Click the “<em>More>></em>” button in the ROI manager and select the <em>Multi Measure</em> button to measure all the ROIs. Click <em>Ok</em>. This will put values from each slice in to a single row with multiple columns per slice. Clicking on “<em>Measure all 50 slices</em>” will put all values from all slices and each ROI in a single column.</li> <li>Go to the <em>Results</em> window and select the menu item <span class="bc"><span>Edit</span> › <span>Select All…</span></span>. Then <span class="bc"><span>Edit</span> › <span>Copy</span></span>.</li> <li>Go to Excel and paste in the data. Check that everything was pasted in correctly</li> </ol> <p><img src="/media/imaging/roi-select-all.jpg" alt="" /></p> <p>10. To copy ROI coordinates into the Excel spreadsheet, there needs to be an empty row above the intensity data. Use the Multi Measure dialog and click the <em>Copy list</em> button.</p> <p>14. In Excel, click the empty cell above the first data column and paste in the ROI coordinates. Save the ROIs with the Multi Measure button <em>Save</em>. Put them in the experimental data folder. The ROIs can be opened later either individually with the button <em>Open</em> or all at once with the button <em>Open All</em>.</p> <p>Oval and rectangular ROIs can be restored individually from x, y, l, h values with the <span class="bc"><span>Plugins</span> › <span>ROI</span> › <span>Specify ROI…</span></span> command.</p> <h2 id="ratio-analysis">Ratio Analysis</h2> <p><img src="/media/imaging/intensity-ratio-analysis.jpg" alt="" /></p> <p>Ratiometric imaging compares the recordings of two different signals to see if there are any similarities between them. It is done by dividing one channel by another channel to produce a third ratiometric channel. This technique is useful because it corrects for dye leakage, unequal dye loading, and photo-bleaching. An example application would be measuring intracellular ion, pH, and voltage dynamics in real time.</p> <p>Background subtraction is needed before analysis of dual-channel ratio images. See also the <a href="#background-correction">background correction</a> section. The <em>Ratio_Profiler</em> plugin will perform ratiometric analysis of a single ROI on a dual-channel interleaved stack. The odd-slices are channel 1 images and the even slices are channel 2 images. If your two channels are opened as separate stacks, such as Zeiss, the two channels can be interleaved (mixed together by alternating between them) with the menu command <span class="bc"><span>Plugins</span> › <span>Stacks - Shuffling</span> › <span>Stack Interleaver</span></span>.</p> <p>The plugin will generate a green-plot of the ratio values. Ch1÷Ch2 is the default and you can get Ch2÷Ch1 if the plugin is run with the <kbd class="key">⌥ Alt</kbd> key down. It will also generate a second plot of the intensities of the individual channels, Ch1 and Ch2, as well as a results table.</p> <p>The first row of the results table contains values for the x, y, width and height of the ROI.</p> <p>From the second row downward, the first column is the time (slice number), the second column is the Ch1 mean intensity, and the third channel is the Ch2 mean intensity and the ratio value. The stack must have its frame interval calibrated in order for the “Time” value to be in seconds. Otherwise, it is “Slices”. The frame interval can be set for the stack via the menu command <span class="bc"><span>Image</span> › <span>Properties</span></span>.</p> <p>This table can be copied to the clipboard and pasted elsewhere with the <span class="bc"><span>Edit</span> › <span>Copy All</span></span> menu command.</p> <p><strong><em>Ratio Analysis Using ROI manager</em></strong></p> <p>1.Subtract the background from the image.</p> <p>2. Open <em>ROI manager</em> (<span class="bc"><span>Analyze</span> › <span>Tools</span> › <span>ROI manager…</span></span>) and click the “Show All” button.</p> <p>3. Select the cells to be analyzed and add them to the ROI manager (“Add” button or keyboard <kbd class="key">T</kbd> key).</p> <p>4. Run the plugin.</p> <p>The results window contains the mean of ch1 and ch2 and their ratio. Each row is a timepoint (slice). The first row contains the ROI details.</p> <p>To generate a reference image:</p> <ol> <li>Flatten the stack with the menu command (<span class="bc"><span>Image</span> › <span>Stacks</span> › <span>Z-project</span></span> with “Projection type: Maximum”),</li> <li>Adjust the brightness and contrast if necessary.</li> <li>Select the new image and click the “More” button in the ROI manager. After that select “Label”.</li> </ol> <h2 id="obtaining-timestamp-data">Obtaining timestamp data</h2> <h3 id="zeiss-lsm">Zeiss LSM</h3> <p>The <a href="/formats/lsm">LSM Toolbox</a> is a project aiming at the integration of common useful functions around the Zeiss LSM file format, that should enhance usability of confocal LSM files kept in their native format, thus preserving all available metadata.</p> <p>In Fiji, corresponding commands are: <span class="bc"><span>File</span> › <span>Import</span> › <span>Show LSMToolbox</span></span> which displays the toolbox, from which all commands can be called and <span class="bc"><span>Help</span> › <span>About Plugins</span> › <span>LSMToolbox…</span></span> which displays information about the plugin.</p> <h3 id="biorad">Biorad</h3> <p>This reading can be found by using the menu command <span class="bc"><span>Image</span> › <span>Show Info…</span></span>. Scroll down to get the time each slice was acquired. Select this time, copy it into Excel, and find the time number obtained by using the Excel menu command <span class="bc"><span>Edit</span> › <span>Replace</span></span>. This will leave only the time data. The “elapsed” time can then be calculated by subtracting row 1 from all subsequent rows.</p> <h2 id="pseudo-linescan">Pseudo-linescan</h2> <p>Linescanning involves acquiring a single line, one pixel in width, from a common confocal microscope instead of a standard 2D image. This is usually a faster way to take an image. All the single pixel-wide images are then stacked to recreate the 2D image.</p> <p>A pseudo-linescan generation of a 3-D (<em>x, y, t</em>) image. It is useful for displaying 3-D data in 2 dimensions.</p> <p>A line of interest is drawn followed by the command: <span class="bc"><span>Image</span> › <span>Stacks</span> › <span>Reslice</span></span> or with the keyboard button <kbd class="key">/</kbd>. It will ask you for the line width that you wish to be averaged. It will generate a pseudo-linescan “stack” with each slice representing the pseudo-linescan of a single-pixel wide line along the line of interest. Average the pseudo-linescan “stack” by selecting <span class="bc"><span>Image</span> › <span>Stacks</span> › <span>Z-Project…</span></span> and use the <em>Average</em> command. A poly-line can be utilized, but this will only generate a single pixel slice.</p> <p>Fiji’s default settings assume that stacks are <em>z</em>-series rather than <em>t</em>-series. This means that many functions related to the third-dimension of an image stack are referred to with a <em>z-</em>. Just keep this in mind.</p> <h2 id="frap-fluorescence-recovery-after-photobleaching-analysis">FRAP (Fluorescence Recovery After Photobleaching) Analysis</h2> <p>The FRAP profiler plugin will analyze the intensity of a bleached ROI over time and normalize it against the intensity of the whole cell. After that it will find the minimum intensity in the bleached ROI and fit the recovery with this point in mind.</p> <p>To use:</p> <ol> <li>Open the ROI manager.</li> <li>Draw around the bleached ROI and add it to the ROI manager.</li> <li>Draw around the whole cell and add that to the ROI manager. The normalization corrects for the bleaching that occurs during image acquisition and assumes the whole cell is in the field of view. <strong>The plugin assumes the larger of the two ROIs in the ROI manager is the whole cell ROI and that the smaller ROI is the bleached part.</strong></li> <li>Run the FRAP profiler plugin.</li> <li>The plugin will return the intensity vs time plot, the normalized intensity vs time plot of the bleached area, and the curve fit.</li> </ol> <h2 id="non-linear-contrast-stretching">Non-linear contrast stretching</h2> <h3 id="equalization">Equalization</h3> <p>You can have more control over brightness and contrast adjustments with the <span class="bc"><span>Process</span> › <span>Enhance</span></span> contrast menu command. With a stack, it analyzes the each slice’s histogram to make the adjustment.</p> <p>The <em>Equalize contrast</em> command applies a non-linear stretch of the histogram based on the square root of its intensity.</p> <p><img src="/media/imaging/equalize-histrogram.jpg" alt="" /></p> <h3 id="gamma">Gamma</h3> <p>Gamma performs a non-linear histogram adjustment. Faint objects become more intense while bright objects do not (gamma <1). Also, medium-intensity objects become fainter while bright objects do not (gamma > 1). The intensity of each pixel is “raised to the power” of the gamma value and then scaled to 8-bits or the min and max of 16-bit images.</p> <p>For 8 bit images; New intensity = 255 × <em>[(old intensity÷255) gamma</em>]</p> <p>Gamma can be adjusted via the <span class="bc"><span>Process</span> › <span>Math</span> › <span>Gamma</span></span> command. It will allow you to adjust the gamma with the scroll bar. Click on <em>Ok</em> when you are finished. You can use the Scroll-bar to determine the desired gamma value on one slice of your stack. There is also an option to preview the results.</p> <p><img src="/media/imaging/gamma-pic.jpg" alt="" /></p> <h2 id="filtering">Filtering</h2> <p>See the <a href="http://homepages.inf.ed.ac.uk/rbf/HIPR2/filtops.htm">online reference</a> for an explanation of digital filters and how they work.</p> <p>Filters can be found using the menu command <span class="bc"><span>Process</span> › <span>Filters…</span></span>.</p> <p><em>Mean filter</em>: the pixel is replaced with the average of itself and its neighbors within the specified radius. The menu item <span class="bc"><span>Process</span> › <span>Smooth</span></span> is a 3×3 mean filter.</p> <p><em>Gaussian filter</em>: This is similar to a smoothing filter but instead replaces the pixel value with a value proportional to a normal distribution of its neighbors.</p> <p><em>Median filter</em>: The pixel value is replaced with the median of itself and its adjacent neighbors. This removes noise and <em>preserves boundaries</em> better than simple average filtering. The menu item <span class="bc"><span>Process</span> › <span>Noise</span> › <span>Despeckle</span></span> is a 3×3 median filter.</p> <p><em>Convolve filter</em>: This allows two arrays of numbers to be multiplied together. The arrays can be different sizes but must be of the same dimension. In image analysis this process is generally used to produce an output image where the pixel values are linear combinations of certain input values.</p> <p><em>Minimum</em>: This filter, also known as an erosion filter, is a morphological filter that considers the neighborhood around each pixel and, from this list of neighbors, determines the minimum value. Each pixel in the image is then replaced with the resulting value generated by each neighborhood.</p> <p><em>Maximum</em>: This filter, also known as a dilation filter, is a morphological filter that considers the neighborhood around each pixel and, from this list of neighbors, determines the maximum value. Each pixel in the image is then replaced with the resulting value generated by each neighborhood.</p> <p><em>Kalman filter</em>: This filter, also known as the Linear Quadratic Estimation, recursively operates on noisy inputs to compute a statistically optimal estimate of the underlying system state.</p> <h2 id="background-correction">Background correction</h2> <p>Background correction can be done in multiple ways. A simple method is to use the <span class="bc"><span>Image</span> › <span>Lookup Tables</span> › <span>HiLo</span></span> LUT to display zero values as blue and white values (pixel value 255) as red.</p> <p>With a background that is relatively even across the image, remove it with the <em>Brightness/Contrast</em> command by slowly raising the <em>Minimum</em> value until most of the background is displayed blue. Press the <em>Apply</em> button to make a permanent change.</p> <h3 id="rolling-ball-background-correction">Rolling-Ball background correction</h3> <p>To fix an uneven background use the menu command <span class="bc"><span>Process</span> › <span>Subtract background</span></span>. This will use a <em>rolling ball</em> algorithm on the uneven background. The radius should be set to at least the size of the largest object that is <em>not</em> part of the background. It can also be used to remove background from gels where the background is white. Running the command several times may produce better results. The user can choose whether or not to have a light background, create a background with no subtraction, have a sliding paraboloid, disable smoothing, or preview the results. The default value for the rolling ball radius is 50 pixels.</p> <table> <thead> <tr> <th style="text-align: center">RAW</th> <th style="text-align: center"> </th> <th style="text-align: center"><span class="bc"><span>Process</span> › <span>Subtract Background…</span></span></th> </tr> </thead> <tbody> <tr> <td style="text-align: center"><img src="/media/imaging/raw-rolling-ball-back-corr.jpg" alt="" /></td> <td style="text-align: center"><img src="/media/imaging/rolling-ball-back-corr.jpg" alt="" /></td> <td style="text-align: center"><img src="/media/imaging/processed-rolling-ball-back-corr.jpg" alt="" /></td> </tr> </tbody> </table> <p>Once the background has been evened, final adjustments can be made with the <em>Brightness/Contrast</em> control.</p> <table> <tbody> <tr> <td><img src="/media/imaging/bright-contr-roll-ball.jpg" alt="" /></td> <td><img src="/media/imaging/histogram-roll-ball.jpg" alt="" /></td> <td><img src="/media/imaging/bright-contr-control-roll-ball.jpg" alt="" /></td> </tr> </tbody> </table> <h3 id="roi-background-correction">ROI background correction</h3> <p>The rolling-ball algorithm takes a lot of time. To speed up the process with an image that has a more even background, select a region of interest from the background and subtract the mean value of this area for each slice from each slice. Use the selection tools to select an area of background and run the menu command <span class="bc"><span>Process</span> › <span>Subtract Background</span></span>. This macro will subtract the mean of the ROI from the image plus an additional value equal to the standard deviation of the ROI multiplied by the scaling factor you enter. The default for this is 3.</p> <p>This macro, because it also works with stacks, can be used on time-courses with varying backgrounds.</p> <table> <thead> <tr> <th style="text-align: center">Before correction</th> <th style="text-align: center">Background intensity over time</th> <th style="text-align: center">After <em>ROI_BG_Correction</em></th> </tr> </thead> <tbody> <tr> <td style="text-align: center"><img src="/media/imaging/roi-back-corr-before.gif" alt="" /></td> <td style="text-align: center"><img src="/media/imaging/roi-back-corr-during.gif" alt="" /></td> <td style="text-align: center"><img src="/media/imaging/roi-back-corr-after.gif" alt="" /></td> </tr> </tbody> </table> <h2 id="flat-field-correction">Flat-field correction</h2> <h3 id="proper-correction">Proper correction</h3> <p>Use this technique on brightfield images. You can correct uneven illumination or dirt/dust on lenses by acquiring a “flat-field” reference image <em>with the same intensity illumination as the experiment</em>. The flat field image should be as close as possible to a field of view of the cover slip without any cells/debris. This is often not possible with the experimental cover slip, so a fresh cover slip may be used with approximately the same amount of buffer as the experiment.</p> <figure class="figure" style=""><img src="/media/imaging/flat-field-correction.gif" class="img" alt="flat-field-correction" /><figcaption><table> <tbody> <tr> <td> </td> <td><strong>RAW</strong></td> <td> </td> <td> </td> <td><strong>Flat-field</strong></td> <td><strong>Processed</strong></td> </tr> </tbody> </table> </figcaption></figure> <ol> <li>Open both the experimental image and the flat-field image.</li> <li>Click the <em>Select all</em> button on the flat-field image and measure the average intensity. This value, the k1 value, will appear in the results window.</li> <li>Use the <em>Image Calculator plus</em> plugin (<span class="bc"><span>Analyze</span> › <span>Tools</span> › <span>Calculator plus</span></span>).</li> <li>i1 = experimental image; i2 = flat-field image; k1 = mean flat-field intensity; k2 = 0. Select the “<em>Divide”</em> operation.</li> </ol> <p>This can also be done using the <span class="bc"><span>Process</span> › <span>Image Calculator</span></span>function with the <em>32-bit Result</em> option checked. Then adjust the brightness and contrast and convert the image to 8-bit.</p> <p><img src="/media/imaging/calculator-plus-flat-field.jpg" alt="" /></p> <h3 id="pseudo-correction">Pseudo-correction</h3> <p><img src="/media/imaging/pseudocorrectionimage.gif" class="img" alt="pseudocorrectionimage" /></p> <p>Sometimes it is not possible to obtain a flat-field reference image. It is still possible to correct for illumination intensity, though not small defects like dust, by making a “pseudo-flat field” image by performing a large-kernel filter on the image to be corrected. For those working with DIC images, this is particularly useful because they generally have an intrinsic, and distracting, gradient in illumination.</p> <p>This can be accomplished simply by subtracting the Gaussian-blurred image version of the image.</p> <p>This can also be used with stacks for brightfield time-courses that vary in intensity with time. Doing this with stacks can be time consuming.</p> <p><img src="/media/imaging/pseudocorrrawcorrected.gif" class="img" alt="pseudocorrrawcorrected" /></p> <p>The first RAW image (top) is pseudo-flat field corrected. Here the pseudo-flat field corrects for the uneven illumination, but does not correct for the dust specks. Look at this compared to the result of a proper flat-field correction above.</p> <h3 id="fft-background-correction">FFT background correction</h3> <p>You can correct for uneven illumination and horizontal “scan lines” in transmitted light images acquired using confocal microscopes by using the native FFT bandpass function (<span class="bc"><span>Process</span> › <span>FFT</span> › <span>Bandpass Filter…).</span></span></p> <p>You can experiment with the settings to optimize the filtering and also choose to filter structures down to a certain number of pixels. The default value is 40 pixels. You can filter small structures up to a certain value. The default value is 3 pixels. The user can choose from a drop down menu whether to suppress stripes with None, Horizontal, or Vertical. The tolerance of direction can be chosen. The default is 5%. Finally, the user can choose whether to allow autoscale after filtering, saturation of the image when autoscaling, whether or not to display the filter, and whether or not to process an entire stack.</p> <p><img src="/media/imaging/newfftbandfilter.jpg" alt="" /></p> <h2 id="masking-unwanted-regions">Masking unwanted regions</h2> <h3 id="simple-masking">Simple masking</h3> <p>Use one of the ROI tools to draw around the area of interest and then select: <span class="bc"><span>Edit</span> › <span>Clear outside</span></span>. This will change the area outside the selected region to the background value.</p> <h3 id="complex-masking">Complex masking</h3> <p>More sophisticated masking can be done by <em>thresholding</em> the image and subtracting the new binary image from the original image.</p> <ol> <li>Duplicate the image, or, if it’s a stack, generate an <em>average projection</em> of a few frames.</li> <li>Threshold this image with the menu command <span class="bc"><span>Image</span> › <span>Adjust</span> › <span>Threshold</span></span>.</li> <li>Hit the Auto button and adjust the sliders until all the cells are highlighted red.</li> <li>Click <em>Apply</em> Check the following box: <em>black foreground, white background</em>. You should now have a white and black image with your cells black and background white. If you have white cells and black background, invert the image with <span class="bc"><span>Edit</span> › <span>Invert</span></span>.</li> <li>This can be smoothed with the command <span class="bc"><span>Process</span> › <span>Smooth</span></span> and the black area enlarged slightly with <span class="bc"><span>Process</span> › <span>Binary</span> › <span>Dilate</span></span> to give a better mask.</li> <li>Using the regular Image calculator <span class="bc"><span>Process</span> › <span>Image calculator</span></span> subtract this black and white “mask” image from your original image or stack.</li> </ol> </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><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 href="/learn/faq">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 open><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 class="current-page">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/timelines">Timelines</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 --> <!-- 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>