You are on page 1of 74

RootReader2D Users Guide 

For RootReader2D Version 4.3.2
Contents 

I. About RootReader2D 4

II. System Requirements 5

III. Using RootReader2D 6

i. Obtaining and use of 6


RootReader2D
ii. Menus and Icons 8
iii. Processing an Image 15
a. Open an image file
b. Region of Interest
c. Thresholding
d. Modifying Threshold Points
e. Skeletonization
f. Building segments
g. Selecting Roots
h. Modifying Selected Roots
i. Measuring
iv. Setting Parameters 18
a. Set Pencil/Eraser Size
b. Set Threshold
c. Set Dust Removal Filter
d. Set Filling Filter
e. Set Scale
f. Set Error Criterion 26
v. Options
a. Image Processing


b. Root Selecting
c. Measuring
d. Saving

vi. View Functions 21
a. Zoom In/Zoom Out
b. Navigating an Image
c. View Thresholded Points
d. View Skeleton Points
e. View Vertex Points
f. View Selected Roots
vii. Batch Capabilities 32 
a. Batch Processing
b. Batch Printing Measurements to Log
c. Batch Adding File Info
viii. Logs and Information Window 37
a. Processing Log
b. Measurement Log
c. Image Information Window
ix. Saving 40
a. Saving the Image Processing Information
b. Saving the Measurement Log
c. Saving the Processing Log
x. Example I – Maize Primary, Basal, and Lateral 41 
Root Length Measurement 
xi. Example II – Sorghum Primary Root Length 55 
Measurement and Lateral Root 
Count off of Primary Root 
xii. Example III – Arabidopsis Primary Root Length 66 
Measurements 


xiii. Example IV – Rice Total Root System Length 67 
Measurement 

IV. Appendix 68

i. Lighting and Camera Arrangements 68
a. Polarized Light Setup
b. Unfiltered Light Setup
c. Oblique Light Setup


I. About RootReader2D

RootReader2D  V4.3.0 is a program designed to assist with root length 


measurement from digital images, specifically focusing on high‐throughput 
analysis of total root system length and selected root types of interest (eg. 
primary root length).  It incorporates several pre‐processing, processing and 
analysis features into a single intuitive and easy to use interface. 

RootReader2D has been expanded to perform lateral root counts from 
selected roots. It has been adapted to work roots systems that are grown in 
gellan gum, sand, agarose plate, or Hydroponics.

Current Version and Release Information: 

RootReader2D  

Current Version:  4.3.2

Last Update:  July 18, 2011 

Authors:  Dr. Randy Clark, Dr. Dave Schneider, Dr. Tyler Davis

PI:  Dr. Miguel Pineros 

Location:  Robert Holley Center, USDA‐ARS, Ithaca, NY, USA 

Email:  ejc35@cornell.edu

Website:  http://www.plantmineralnutrition.net/software/

rootreader2d/downloads/index.html

 Google Group:  http://groups.google.com/group/rootreader2d 


System Requirements 

RootReader2D requires that your computer system has Java version 6.0* (also 
called Java version 1.6) or higher.  To check which version of java your system is 
running go to:  

http://www.java.com/en/download/installed.jsp 

RootReader2D works optimally if your system has at least 2.0 GB of RAM.

RootReader2D also requires that your mouse (or touchpad) have both left click 
and right click buttons and a center mouse wheel.  Keyboard commands may be 
used in place of the center mouse wheel, but left and right click buttons are 
necessary.  For Macs with only one button mice configurations, right clicking can 
be achieved by holding the control key down and clicking. 

*Make sure that your JAVA security settings are set to a level less than the
highest level to ensure that your system will download and run the
RootReader2d.jar file. Security Settings can be accessed through the JAVA control
panel under the security tab.


II. Using RootReader2D
i. Obtaining and Using RootReader2D

RootReader2D can be downloaded directly:


http://www.plantmineralnutrition.net/software/rootreader2d/
downloads/index.html

The new stand-alone version of RootReader2D (version 4.3) no longer


requires Java Web Start (JAWS) or access to our website. The previous functions
of RootReader2D have remained the same. Users with older versions of
RootReader2D will need to download this new version.

Installation help can be found here:


http://www.plantmineralnutrition.net/software/rootreader2d/setup/
index.html



ii. Menus and Icons

File Menu: 

Open ‐ Open an image file (and .RR2Dat data if available) 

Save ‐ Save an .RR2Dat data file and a thresholded image if selected in Options menu 

Previous Image ‐ Close the current image and open the previous image in the current folder 

Reset ‐ Reset current image (removes all processing information that has not been saved) 

Next Image ‐ Close the current image and open the next image in the current folder 

Batch Process ‐ Batch process a folder of images 

Batch Print ‐ Batch print processing parameters and measurements from a folder of 
processed images with .RR2Dat files to the Measuring Log 

Batch Add Plant Info ‐ Batch add plant information (genotype, treatment and comments) to a 
folder of images  

View Menu: 


Show Processing Log checkbox ‐ Show/Hide Processing Log window 

Show Image Information Window checkbox ‐ Show/Hide Image Information window 

Show Measuring Log checkbox ‐ Show/Hide Measuring Log window 

Show Threshold Points checkbox ‐ Show/Hide threshold points on image 

Show Skeleton Points checkbox ‐ Show/Hide skeleton points on image 

Show Vertex Points checkbox ‐ Show/Hide vertex points on image 

Show Selected Roots checkbox ‐ Show/Hide selected roots on image 

Filters Menu: 

Threshold ‐ Threshold the image using set threshold parameters 

Skeletonize ‐ Skeletonize the threshold points 

Build Segments ‐ Build the segments from the skeleton points using set parameters 

Modify Menu: 

Set Region of Interest ‐ Set a region of interest to process 

Modify Roots ‐ Modify selected roots 

Next Root ‐ Switch to next selected root to modify 


Erase Root ‐ Erase the current root from selected roots 

Measurement Menu: 

Set Threshold ‐ Set threshold parameters 

Set Dust Removal Filter ‐ Set dust removal filter parameters 

Set Filling Filter – Set filling filter parameters 

Set Scale ‐ Set the scale of the image 

Set Error Criterion ‐ Set error criterion used during segment length estimation 

Set Calibration Parameters ‐ Set parameters for checking calibration grid lengths 

Check Calibration Grid Lengths ‐ Measure the average grid length in selected region of a 
calibration grid image 

Measure ‐ Measure the root system 

Options Menu: 

10 
Image Processing Sub‐Menu: 

 
Dark roots on a bright background or 

Bright roots on a dark background radiobuttons ‐ Specified lighting conditions of the root 
image 

Fixed, Adaptive Min/Max, Double 

Adaptive, or Double Adaptive Blur Thresholding radiobuttons ‐ Specified root thresholding 
technique 

Use Dust Removal Filter checkbox ‐ Run a dust removal filter after thresholding the image 

Use Filling Filter checkbox ‐ Run a gap filling filter after thresholding and/or dust removal 

Reduce Unnecessary Endpoints checkbox ‐ Remove unnecessary endpoints before segment 
generation (typically will speed the program and 
reduce storage requirements when saving RR2Dat 
data files) 

Find Shortest Paths checkbox ‐ Find the shortest paths between all connected vertices (will 
slow the program and increase the storage requirements 
when saving RR2Dat data files, but will allow specific roots to 
be selected) 

11 
 
Root Selecting Sub‐Menu: 

 
Selected roots share a common endpoint radiobutton ‐ All selected roots will start from the 
same point/vertex 

Selected roots have independent endpoints radiobutton ‐ All selected will start from 
independent points/vertices 

Automatic prediction of furthest endpoint checkbox ‐ Automatically predict furthest end 
endpoint from the selected start points 

Measuring Sub‐Menu: 

 
Count number of laterals off selected roots checkbox ‐ The number of lateral roots that 
propagate from the selected roots will 
be counted 

Count number of laterals off selected roots checkbox – Total length of roots that are 
connected to a selected root, including 
the selected root 

12 
 
Saving Sub‐Menu: 

 
Save xml data file checkbox ‐ Save RR2Dat data file with processing and length information 
when saving 

Save thresholded image checkbox ‐ Save png image file of thresholded root system points 
when saving 

 
Batch Processing Sub‐Menu: 

 
Process all subfolders ‐ When batch processing RootReader2D will process all image  

subfolders of the selected folder  

 
Help Menu: 

 
RootReader2D Help ‐ Get help with using RootReader2D 

About RootReader2D ‐ Get information about RootReader2D 

13 
 
Toolbar Icons: 

  Open Image    Skeletonize    Region of Interest 

  Save    Build Segments    Measure 

  Previous Image    Modify Selected Roots    Batch Process 

  Reset Image    Next Selected Root    Batch Print 

  Next Image    Erase Selected Root 

  Threshold   Modify Threshold Points 

   

   

   

   

   

   

   

   

   

   

14 
 
iii. Processing an Image 
 
a. Opening an Image File: 
 
To open an image file, go to the “File” menu and click “Open” or click the 

 icon.  In the Open navigation window that appears, navigate to and 
select the desired image file, then click the “Open” button at the bottom of 
the selection window.  If there is an associated RR2Dat data file in the same 
folder as the selected image file, it will be interpreted and opened as well.  
(Notes:  RootReader2D can open images of the following format ‐ tif, tiff, jpg, jpeg, gif, and 
png; RootReader2D works with both grayscale and RGB color image files, but operates 
faster using grayscale.  If color information is not needed, convert your images to 
grayscale before using RootReader2D to process and analyze them.) 
 
b. Region of Interest 

To specify a region of interest (ROI), click the   icon.  Then left click and 
drag a rectangle around the region of the image you would like to select for 
processing.  A blue border will be drawn around the region that will be 
processed.  All areas outside the border will not be included when 
processing.  To reset the specified area (reset to ROI to be whole image), click 

twice on the   icon.  (Note: a ROI can only be selected before thresholding or 
skeletonization of the image.) 

  
c. Thresholding 
 
To threshold the image file, go to the “Filters” menu and click “Threshold” 

or click the   icon.  Thresholding is used to separate the roots from the 
background in the image.  After thresholding, cyan points will be overlaid 

13 
 
on the root in the image.  See pages 18‐22 for details on selecting 
thresholding options. 
 
d. Modifying Threshold Points 
 
Occasionally the user will need to add or remove points from the threshold 
root points that were determined during thresholding (for instance, to fill in 
a broken section of the root).  To do so the user must modify the threshold 
points.  To begin modifying the threshold points, go to the “Modify” menu 

and click “Modify Threshold Points” or click the   icon.  The threshold 
root points will appear in bright cyan on the image.  To add points, left click 
and drag on the image.  Points that were added to the threshold root 
points will appear in bright cyan on the image.  To remove points, hold the 
shift key down and left click and drag on the image.  Points that were 
removed will no longer appear in bright cyan on the image.  To exit the 
modify threshold points, and finalize any changes go to the “Modify” menu 

and click “Modify Threshold Points” or click the   icon.  For details on 
how to set the pencil/eraser size when modifying the threshold points, see 
page 18.  (Note: Modify Threshold Point mode can be entered anytime after 
thresholding, but all previous skeletonization, segment building, and root selecting data 
will be lost) 
  
e. Skeletonization 
 
To skeletonize the thresholded root system, go to the “Filters” menu and 

click “Skeletonize” or click the   icon.  Skeletonization is a pixel erosion 
technique that simplifies the thresholded roots points into series of one pixel 
wide lines.  After skeletonization the skeleton lines will appear in red on the 
image. 
  
 

14 
 
f. Building Segments 
 
To build the segments from the skeleton, go to the “Filters” menu and click 

“Build Segments” or click the   icon.  This process breaks the skeleton into 
segments, calculates the length of those segments and determines the 
shortest path from all segment endpoints to all other connected segment 
endpoints* (*if the option is selected).  After building these segments, the 
segment endpoints will appear as green circles on the image.  In order to 
accurately estimate the length of each segment, the image scale and an error 
criterion parameter must be set before the segments are built.  See page 24 
for details on how to set the image scale and error criterion. 
     
g. Selecting Roots 
 
Selecting roots allows one to measure specific roots of interest (for example 
the primary or seminal roots).  To define a root at least two endpoints are 
needed, one for the start and one for the end of the root.  If the option is 
selected, RootReader2D will automatically predict the end of the root after 
each start point is provided.  To provide a start point, after building the root 
segments, hold the left click near the desired starting point of the root (for 
example the seed).  A yellow circle will appear on the image at the start 
endpoint.  If RootReader2D has not been set to automatically predict the end 
endpoint, hold the left click near the desired ending point of the root.  A blue 
circle will appear on the image at the end endpoint.  If desired RootReader2D 
can be set to use a common start endpoint for all selected roots or 
independent start endpoints for all selected roots.  For details on how to set 
root selecting options, see page 27‐28. 
  
 
 
 
 

15 
 
h. Modifying Selected Roots 
 
On occasion RootReader2D fails to determine the correct path along the 
desired root from the start to the end endpoint.  To correct this, the 
generated path must be modified by adding intermediary endpoints along 
the path.  To begin modifying the selected roots, go to the “Modify” menu 

and click “Modify Roots” or click the   icon.  The selected root that is to be 
modified appears blue in the image, with endpoints being represented as 
yellow, blue and orange numbers.  To activate another root, go to the 

“Modify” menu and click “Next Root” or click the   icon.  To erase the 
activated root, go to the “Modify” menu and click “Erase Root” or click the 

 icon.  To modify the path of the activated root, hold the shift key and 
select a segment endpoint along the path by left clicking and holding on the 
desired endpoint to modify.  Prior to selecting, the points able to be modified 
will appear encircled by a cyan ring as the mouse is moved and the shift key 
is pressed down.  When an endpoint is selected the ring will first turn white 
then pink and then the new intermediary endpoint will be added labeled 
with a new orange number.  (Note: Do not release the clicked left mouse button until you 
have moved the new intermediary endpoint to the desired position in the skeleton.)  To move 
the new endpoint, continue to the hold down the shift key and left mouse 
button, and drag the endpoint to the new position the in the skeleton.  The 
selected path will automatically be adjusted and displayed in real‐time as you 
move the new endpoint.  The new path will appear in blue on the image.  
Once all the selected roots have been correctly modified, the modify mode 
must be exited before any other operations can be performed.  To exit the 
modify mode, go to the “Modify” menu and click “Modify Roots” or click the 

 icon. 
   
 
 

16 
 
i. Measuring 
 
To measure the total root system and all selected roots, go to the 

“Measurement” menu and click “Measure” or click the   icon. 
 
 
Root traits that are currently measured: 
 
Longest Root Length – length of the longest selected root, (cm) 
 
Total of Selected Root Lengths – total length of all the selected roots, (cm) 
 
Total Root System Length – total length of the whole root system, (cm) (Note: this is also 
the total length of skeleton in the image) 
 
Individual Root Lengths – individual lengths of each selected root, (cm) 
 
Total Lateral Root Count – total number of lateral root that emerge from the all selected 
roots 
 
Individual Root Lateral Root Count – number of lateral roots that emerge from individual 
selected roots 
 
Connected Root Length – total length of roots that are connected to a selected root, 
 including the selected root, (cm) 
 
 
 
 
 
 
 
 
 

17 
 
iv. Setting Parameters 
 
a. Set Pencil/Eraser Size 
 
To set the pencil/eraser size, go to the “Modify” menu and click “Set 
Pencil/Eraser Size”.  The Set Pencil/Eraser Size window will appear. 
 

 
 
The pencil/eraser size is used when modifying the threshold points.  The 
size that is entered will be half the size of the box drawn when the user 
drags the cursor on the image to add and/or remove threshold points. (Note: 
The maximum size that can be entered is 25.  If the size is set higher than 25, the pencil/eraser 
half size will be set by default to 25.)  
 
 
b. Set Threshold 
 
Before setting the threshold parameters, first go to the “Options” menu and 
indicate the lighting type and desired thresholding technique.  The two 
available lighting types are:  1) Dark roots on a bright background; 2) Bright 
roots on a dark background.  (Note: if the “Dark roots on a bright background” 
radiobutton is selected the pixel intensities will automatically be inverted before thresholding.)  
The four available thresholding techniques are: 1) Fixed thresholding; 2) 
Adaptive Min/Max thresholding; 3) Double adaptive thresholding; 4) Double 
adaptive blur thresholding.  After specifying the lighting type and threshold 
technique go to the “Measurement” menu and click “Set Threshold”.  A Set 
Threshold window corresponding to the selected thresholding technique will 
appear. 
 

18 
 
The thresholding techniques and the required parameters are briefly 
described in the following section: 
 
 
1) Fixed Thresholding 
 

 
 
This technique should be used when the background lighting is uniform 
and the intensity of all the roots in the image does not vary.   For this 
technique a fixed thresholding level between 0 and 255 is entered via the 
slider.  For dark root systems on bright backgrounds, if the pixel value is 
higher than (darker) the entered fixed threshold level, the pixel will be set 
as a root pixel, otherwise it will be set as a background pixel.  For bright 
root systems on dark backgrounds, if the pixel value is equal to or higher 
than (brighter) the entered threshold level, the pixel will be set as a root 
pixel, otherwise it will be set as a background pixel. 
 
 
 
 
 
 
 
 
 
 
 
 
 

19 
 
2) Adaptive Minimum/Maximum Thresholding 
 

 
 
This technique should be used when the background lighting is not 
uniform and the intensity of the main root pixels are never equal to the 
intensity of any background pixels in the image.  These thresholding filters 
was designed isolate the roots from the background and prevent gaps 
from forming at root junctions during thresholding.  Four parameters are 
needed.  The first is “Maximum Threshold” which is the maximum pixel 
intensity value that can be set to be background.  If the pixel intensity is 
greater than the entered integer value, than it is automatically set as a 
root pixel.  The second is “Minimum Threshold” which is the minimum 
pixel intensity value that can be set to be a root pixel.  If the pixel intensity 
is less than the entered value, than it is automatically set as a background 
pixel.  The third is “Half Kernel Size” which is half the local kernel size.  The 
local kernel size is the size of a square region around the central pixel that 
is used to determine if the central pixel is part of the root system or 
background.  The forth is “Percent Above Local Average” which is used to 
determine if the central pixel should be set to be a root pixel or 
background pixel.  If the intensity value of the central pixel is the entered 
percentage or more greater than the average pixel intensity value of the 
local kernel region, than it is set to be root pixel, otherwise it set to be a 
background pixel. 
 
 
 
 
 
 

20 
 
3) Double Adaptive Thresholding 
 

 
 
This technique should be used when the background lighting is not 
uniform and the intensity of the main root pixels are occasionally equal to 
or less than the intensity of some background pixels.  This thresholding 
filter was designed to isolate the roots from the background and prevent 
gaps from forming at root junctions during thresholding.  This filtering 
method passes a local adaptive filter over the entire image then passes 
another local adaptive filter over the entire image again, this time 
excluding the root pixels determined during the first pass.  For each local 
adaptive filter pass, the kernel size (entered as “Half Kernel Size”) and a 
percentage above the local kernel pixel intensity average (entered as 
“Percent Above Local Average”) must be set. 
 
 
 
 
 
 
 
 
 
 
 
 
 

21 
 
4) Double Adaptive Blur Thresholding 
 

 
 
This technique builds off the Double Adaptive thresholding technique 
should be used with fine root system images (eg. rice seedlings) where the 
background lighting is not uniform and the intensity of the main root 
pixels are occasionally equal to or less than the intensity of some 
background pixels.  This thresholding filter was designed to isolate the 
roots from the background, prevent gaps from forming at root junctions 
during thresholding and smooth any artifacts that may arise from the need 
for increased thresholding sensitivity when working with fine root 
systems.  Similar to the Double Adaptive thresholding technique this 
filtering method first passes a local adaptive filter over the entire image 
then passes another local adaptive filter over the entire image again (See 
Double Adaptive Thresholding above).  Next the filter, removes dust/root 
objects that are smaller than or equal to the entered integer number of 
connected pixel from the thresholded image and then passes a 3x3 

blurring filter   over the thresholded image the specified “Number of 
Blur Passes”.  Afterwards the filter uses a fixed thresholding technique and 
the user specified “Fixed Threshold Level” to produce the final thresholded 
image/root pixels.    
 
 
 
 

22 
 
c. Set Dust Removal Filter 
 
To set and use a dust removal filter, first go to the “Options” menu and select 
the “Use Dust Removal Filter” checkbox.  Then go to the “Measurement” 
menu and click “Set Dust Removal Filter”.  The Set Dust Removal Filter 
window will appear. 
 

 
 

The dust removal filter will remove any objects that are smaller than or equal 
to the entered integer number of connected pixel (specifically, 8‐connected 
pixels). 

 
d. Set Filling Filter 
 
To set and use a filling filter, first go to the “Options” menu and select the 
“Use Filling Filter” checkbox.  Then go to the “Measurement” menu and click 
“Set Filling Filter”.  The Set Filling Filter window will appear. 
 

 
 

This filter runs a square growing kernel then a square shrinking kernel of the 
same size on the threshold points.  This will help to smooth and fill any small 
holes or gaps in the thresholded root system.  The kernels dimension/sizes 

23 
 
are 2 times the entered integer plus 1 by 2 times the entered integer plus 1.  
For example: if 1 is the entered integer, the kernel sizes are 3x3; if 2 is the 
integer, the kernel sizes are 5x5.   
 
e. Set Scale 
 
To set the scale of the image, go to the “Measurement” menu and click “Set 
Scale”.  The Set Scale window shown below will appear. 
 

 
 
The scale of the image is also the resolution of the image in pixels per cm.  
The scale can be acquired from a calibration grid image or from an image of 
a ruler.  Note:  when the scale is set, the error criterion (next) will 
automatically be readjusted to correctly correspond with the new scale. 
 
f. Set Error Criterion 
 
To set the error criterion, go to the “Measurement” menu and click “Set 
Error Criterion”.  The Set Error Criterion window shown below will appear. 
 

 
 
The error criterion is used during the segment building.  It is a control 
parameter or constraint that is used during the curve estimation and 
segment length calculation.   Note: RootReader2D automatically adjusts the 

24 
 
error criterion for the entered scale, but it can also be manually modified 
after the scale has been set. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

25 
 
v. Options 
 
a. Image Processing 
 
To set image processing options, go to the “Options” menu and then the 
“Image Processing” sub‐menu. 
 

 
 
Image lighting types – if the “Dark roots on a bright background” type is selected, 
RootReader2D will turn dark objects/pixels to root pixels and bright pixels to background 
pixels when thresholding.  If the “Bright roots on a dark background” type is selected, 
RootReader2D will turn bright objects/pixels to root pixels and dark pixels to background 
pixels when thresholding. 
 
Thresholding techniques – RootReader2D will use the selected thresholding technique 
during thresholding of the image.  See page 18‐22 for more details on the thresholding 
techniques. 
 
Post‐thresholding options – if the “Use Dust Removal Filter” option is selected, 
RootReade2D will run a dust removal filter after thresholding.  See page 23 for more 
details on the dust removal filter.  If the “Use Filling Filter” option is selected, 
RootReader2D will run a filling filter after thresholding or thresholding and dust removal.  
See page 23‐24 for more details on the filling filter. 
 
“Reduce Unnecessary Endpoints” option – if selected, RootReader2D will remove 
unnecessary endpoints that were created during skeletonization and segment generation.  
These unnecessary endpoints usually belong to cluster regions that contain multiple 
endpoints that can be simplified to one or a few endpoints.  This option should typically 

26 
 
be selected as it reduces the number segments in the graph which reduces the chances of 
over‐estimation of total root system lengths and processing time when calculating 
shortest paths. 
 
“Find Shortest Paths” option – if selected, RootReader2D will determine the shortest 
paths between all connected segment endpoints and all other connected segment 
endpoints during the segment building process.  This enables specific roots of interest to 
be selected.  Without this option selected, roots of interest cannot be selected and only 
the whole root system length can currently be measured. 
      
b. Root Selecting 
 
To set root selecting options, go to the “Options” menu and then the “Root 
Selecting” sub‐menu. 
 

 
 
Selection of root endpoints options – if the “Allow any skeleton point to be selected as a 
root endpoint” option is selected, all skeleton points can be selected as endpoints of root.  
If it not selected, only segment endpoints (or the green circles) can be selected as root 
endpoints.  In most cases it is not necessary to select this option, so it is not 
recommended, but sometimes it may be necessary when a segment endpoints are not 
created near the seed.  For example, when imaging Arabidopsis that have been grown 
hydropically and placed on agar plates, sometime the endpoints are not created near the 
seed, so this option must be used to accurately measure primary root lengths.  
 
Selection of root endpoints options – if the “Selected roots share a common endpoint” 
option is selected, all roots that are selected by the user will start from the first endpoint 
that was chosen.  For example, this option should be used if all the roots of interest start 
from a common point, eg. the seed.  Once the first endpoint has been selected, only the 
end endpoints for all roots of interest will need to be selected.  If the “Selected roots have 
independent endpoints” option is selected, then all selected roots have independent start 
and end endpoints. For each root of interest, a start endpoint and an end endpoint will 

27 
 
need to be specified/selected. For example, this option can be used if the roots of interest 
do not start from the same place on the plant or in the image.  
 
“Automatic prediction of furthest endpoint” option – if selected, this option has 
RootReader2D to predict and select the furthest end endpoint for each start endpoint 
that is provided.  For example, if one is interested in measuring the primary root, 
commonly the longest root coming from the seed, RootReader2D will predict the path of 
the primary root if the seed is selected as a start endpoint. 
 
  
c. Measuring 
 
To set measuring options, go to the “Options” menu and then the 
“Measuring” sub‐menu. 
 

 
 
“Count number of laterals off selected roots” option – if selected, RootReader2D count the 
number of laterals that emerge from the selected roots.  (Note: Overlapping roots will be 
counted as laterals.  This measure is typically not exact and should only be used as an estimate.) 
 
“Measure total root length connected to selected roots” option – if selected, 
RootReader2D will measure the total of roots connected to a given root or root segment. 
(Note: The length of the selected root or root segment will be included in the measurement.) 
 
 
 
 
 
 
 
 
 

28 
 
d. Saving 
 
To set saving options, go to the “Options” menu and then the “Saving” sub‐
menu. 
 

 
 
“Save RR2Dat data file” option – if selected, RootReader2D will save an RR2Dat data file 
when the image is saved.  This RR2Dat file will contain all measurement, processing and 
parameter information about the associated root system.  (Note:  The RR2Dat data files can get 
extremely large, >200 MB, if the root system in the image is complex and the “Find Shortest Path” image 
processing option is selected.)  
 
“Save thresholded image” option – if selected, RootReader2D will save the threshold 
points from the image to png image file when the image is saved.  The saved png image 
will have the same filename as the original image with “‐thresholded” appended onto the 
filename before the png extension.  This png image of the thresholded root system can be 
imported into other root analysis software for measurement. 
 
 
e. Batch Processing 
 
To set batch processing options, go to the “Options” menu and then the 
“Batch Processing” sub‐menu. 
 

 
 
“Process all subfolder” option – if selected, RootReader2D will also process any images 
that are contained in subfolders of the selected folder when batch processing. 

29 
 
vi. View Functions 
 
a. Zoom In/Zoom Out 
 
RootReader2D allows the user to efficiently navigate and zoom in and out on 
the image using only the mouse.  Some keyboard options are also available. 
 
Zoom In – to zoom in, place the mouse cursor over the image (or image 
window) and roll the center mouse wheel away from you or activate the 
image window and press the Alt and “+” key simultaneously.  
 
Zoom Out – to zoom out, place the mouse cursor over the image (or image 
window) and roll the center mouse wheel towards you or activate the image 
window and press the Alt and “‐“ key simultaneously. 
 
Zoom All – to zoom all, activate the image window and press the Alt and “a” 
key simultaneously.  
 
b. Navigating an Image 
 
RootReader2D allows the user to efficiently navigate around the image using 
only the mouse. 
 
Navigation – to navigate around the image, right click and drag in the image 
window.  The image will move with the dragging motion. 
 
 
 
 
 
 
30 
 
c. View Thresholded Points 
 

 
 
To show/hide the cyan threshold points overlay, go to the “View” menu and 
select/deselect the “Show Threshold Points” checkbox.  (Note: Image must be 
thresholded before the “Show Threshold Points” checkbox becomes functional.)  
 
d. View Skeleton Points 
 
To show/hide the red skeleton points, go to the “View” menu and 
select/deselect the “Show Skeleton Points” checkbox.  (Note: Image must be 
thresholded and skeletonized before the “Show Skeleton Points” checkbox becomes 
functional.)  
 
e. View Vertex Points 
 
To show/hide the green vertex points, go to the “View” menu and 
select/deselect the “Show Vertex Points” checkbox.  (Note: Image must be 
thresholded, skeletonized and segments built before the “Show Vertex Points” checkbox 
becomes functional.)  
 
f. View Select Roots 
 
To show/hide the orange selected roots, go to the “View” menu and 
select/deselect the “Show Selected Roots” checkbox.  (Note: Image must be 
thresholded, skeletonized and segments built and roots selected before the “Show 
Selected Roots” checkbox becomes functional.)  
 

31 
 
vii. Batch Capabilities 
 
Batch processing allows repetitive tasks to be performed on a group of files 
or images automatically.  For example, in RootReader2D thresholding, 
skeletonization, and segment building are repetitive tasks needed for 
analyzing and measuring images.  Batch processing allows many images to be 
processed (thresholded, skeletonized, and segments built) at one time using 
the same processing parameters.  This helps to save time as the user will not 
have to manually guide the software through each step for all the images. 
 
a. Batch Processing 
 
To batch process a set of images, first move all your root images into a blank 
folder and perform any pre‐processing of the images (eg. image file format 
conversion, conversion from RGB color to grayscale format, cropping, etc).  
Secondly set the threshold technique (fixed, adaptive min/max, double 
adaptive, or double adaptive blur) and related thresholding parameters, ie. 
the image scale, and the error criterion.  Then select and set any post‐
thresholding options. (Note: the setting should be checked and tested on at least one 
or two images prior to batch processing.)  Next, go to the “File” menu and click 

“Batch Process” or click the   icon.  The Batch Process window shown 
below will appear.  
 

 
 
Click the “Browse…” button and a Set Source selection window will appear.  
Navigate to the folder that contains the pre‐processed images and click the 
“Set Source” button.  (Note: if some desire images to be processed are also contained 
in subfolders of the selected folder, go to the “Options” menu and select the “Process all 

32 
 
subfolders” option.)  Now click the “Run” button in the Batch Process window 
and batch processing will begin.  (Notes:  the image files will not appear in the Set 
Source window when navigating to the folder containing the image files; when batch 
processing it may appear as if the program has frozen, if you think the program has 
unexpectedly frozen, check the source folder containing your image file to see if 
associated.RR2Dat data files are being generated, it may take several minutes to process 
and generate RR2Dat data files for each image.) 
 
b. Batch Printing Measurements to Log 
 
Once you have finished processing, selecting roots and saving your images, 
you may print out the root measurements to the Measuring Log as a batch.  
To print the root measurements to the Measuring Log, go to the “File” menu 

and click “Batch Print” or click the   icon.  The Measuring Log window 
shown below will appear. 
 

 
 
Click the “Browse…” button and a Set Source selection window will appear.  
Navigate to the folder that contains the images with associated RR2Dat data 
files and click the “Set Source” button.  Now click the “Run” button in the 
Batch Print window and batch printing will begin.   
 
If you would like to clear the Measuring Log of all data before batch printing 
new measurements, selected the Clear measuring log prior to printing 
checkbox.  If left unselected, the new measurement will be appended onto 
the bottom of the Measuring Log.  
 
 
33 
 
c. Batch Adding File Info 
 
Batch adding file info allows genotype and treatment information to be 
added to the associated RR2Dat data files and can be used to help keep track 
of any plant information from large scale screening/phenotyping 
experiments both during processing and further analysis.  These screening 
experiments usually contain 20 or more tubs that have been separated into a 
control and a treatment, with various arrangements of plant genotypes 
within these tubs.  (Note: The experimental layout from these experiments should be ordered and 
symmetric to use the batch adding info capabilities.) 
 
Once you have finished batch processing your images, you may batch add 
file/genotype/treatment info to the associated RR2Dat data files.  To batch 
add info to the RR2Dat data files, go to the “File” menu and click “Batch Add 
Plant Info”.  The Batch Add Information window shown below will appear. 
 

 
34 
 
 
Click the “Browse…” button and a Set Source selection window will appear.  
Navigate to the folder that contains the images and associated RR2Dat data 
files and click the “Set Source” button.   
 
Next, enter tub information in the Tub Information Section: 
 
Number of Tub – is the number of tubs used per treatment 
 
Number of Row – is the number of rows of plants in each tub 
 
Number of Columns – is the number of columns of plants in each tub 
 
Tub Layout Style – describes how the genotypes are arranged in the tubs.   
There are two choices: Random – indicates that there is no pattern 
and that the genotypes have been assigned to random spots in the 
tub; One Line Per Row – indicates that only one genotype/line was 
planted into each row of the tub 

Next, enter photography information in the Photography Information 
Section: 
Photography Tub Order – is the order in which the tubs were photographed.  There are 
two choices: Block – indicates that the pictures were taken in 
treatment blocks (ie. all the tub from one treatment were 
photographed together, then the tubs from the next 
treatment were photographed, etc…); Alternate – indicates 
that the treatment tubs were alternated during photography 
(ie. tub 1 of treatment 1, then tub 1 of treatment 2, … , then 
tub 2 of treatment 1, then tub 2 of treatment 2, etc…) 

Blank Photos – describes if and when blank photos were taken.  There are five choices: 
None – means that no blank photos were taken; Every Plant (Before 
Plant) – means that a blank photo was taken before every plant was 
photographed; Every Plant (After Plant) – means that a blank photo was 
taken after every plant was photographed; Start/End of Every Row – 
means that a blank photo was taken at the start and end of every row 
(Note: within the same tub, the blank photo at the end of one row acts as the blank 

35 
 
photo for the start of the next row, ie. if there are 10 rows in the tub, than 11 blank 
photos will be taken.); Start/End of Tub – means that a blank photo was 
taken before and after taking the picture of plants in the tub 

Number of Treatments – is the number of treatments levels used, including the control 

Next, enter the information you would like to add in the Information to Add 
Section: 
List of Lines Corresponding  

    to Tub Order and Layout – the list of genotypes in the tubs is entered here.  If you 
selected Random for the Tub Layout Style, then you will 
have to enter a comma separated list of all the genotypes 
in the order that they were photographed, excluding preset 
blanks.  If you selected One Line per Row for the Layout 
Style, then you will have to enter a comma separated list of 
the genotypes in each row in the order that the rows were 
photographed 

List of Treatments – the comma separated list of treatments is entered here.  This list 
should be entered in the order that the treatments where 
photographed, including the control 

Comments – any comments about the whole experiment can be entered here  (Note: 
These comments will be added to every RR2Dat data file.) 

After you have entered the source folder, tub layout information, 
photography information, and the information you would like to add, click 
the “Run” button at the bottom of the Batch Add Information window and 
the entered information will be added to the existing RR2Dat data files in the 
folder.  (Note: If any entry mistakes were detected, the error will appear in the 
Processing Log.)  

 
36 
 
viii. Logs and Information Window 
 
a. Processing Log 
 
The Processing Log is a log where RootReader2D records all the users 
processing actions.  An example of the Processing Log is shown below. 
 

 
 
To show/hide the Processing Log, go the “View” menu and select/deselect 
the “Show Processing Log” checkbox. 
 
To clear the information in the Processing Log, click the “Clear” button at the 
bottom of the Processing Log. 
 
 
b. Measurement Log 
 
The Measuring Log is a log where RootReader2D records the measurements 
when the user either measures or batch prints the root measurements.  An 
example of the Measuring Log is shown below. 
 

37 
 
 
 
To show/hide the Measuring Log, go the “View” menu and select/deselect 
the “Show Measuring Log” checkbox. 
 
To clear the information in the Measuring Log, click the “Clear” button at the 
bottom of the Measuring Log.   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

38 
 
c. Image Information Window 
 
The Image Information window displays pixel information and details about 
the image that has been saved in the associated .RR2Dat data file.  This 
information includes the pixel coordinates and value, image scale, genotype, 
treatment, and comments about the plant in the image.  An example of the 
Image Information window is shown below. 
 

 
 
To show/hide the Image Information window, go the “View” menu and click 
the “Show Image Info Window” checkbox.  
 
To add/remove plant information to the Image Information window and to 
the associated RR2Dat data file, use the Image Information window to add 
the new information in the Genotype, Treatment, or Comments section of 
the Image Information window.  Then click the “Update” button to update 
the active data that is associated with the current image.  After updating the 

information, go to the “File” menu and click “Save” or click the   icon to 
save the new plant information to associated RR2Dat data file.  

39 
 
ix. Saving 
 
a. Saving the Image Processing Information 
 
The processed image data and information can be saved in RR2Dat data files.  
These RR2Dat data files contain processing information and parameters as 
well as root measurement information.  These RR2Dat data files will have the 
same file name and will be stored in the same folder as their associated 
image files.  No changes will be made to the original image files when the 
processing is performed and saved.  If the option is selected, a color png 
image file with the thresholded root system may also be saved, see page 27 
for detail on saving options.  
 
To save the processed image data (and/or the thresholded root system a png 

image file), go to the “File” menu and click “Save” or click the   icon.  
(Note: Any existing RR2Dat data or png image files with the same filename will 
automatically be overwritten.)     
 
b. Saving the Measurement Log 
 
The measurement in the Measuring Log can be saved as a comma delimited 
csv file.  This file can be opened in spreadsheet and statistical analysis 
programs for modification and data analysis. 
 
To save the measurements in the Measuring Log, click the “Save” button 
located at the bottom of the Measuring Log.  In the Save selection window 
that appears, choose the folder where to store the txt measurement file and 
click the “Save” button.  (Note: The saved measurement filename can be changed but 
must have a .csv extension to be open and delimited properly.) 
 
 
 
40 
 
c. Saving the Processing Log 
 
RootReader2D will record all the user actions to a processing log.  To save the 
recorded processing steps from the Processing Log, click the “Save” button 
located at the bottom of the Processing Log.  In the Save selection window 
that appears, choose the folder where to store the txt processing file and 
click the “Save” button. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41 
 
x. Example I – Maize Primary, Seminal and Lateral Root  
Length Measurement 
 
In this section, a step by step example will be provided on how to measure 
the primary, seminal, and lateral root length from a sample maize root image 
with the RootReader2D software. 
 
Background Information: 
 
1) The sample maize plant in the image was 4 days old.  Grown in a  
replete hydroponic nutrient solution system at the Robert W Holley 
Center for Agriculture and Health in Ithaca NY, USA 
2) The image was taken with a digital SLR camera with a custom polarized 
imaging setup 
3) The resolution of the image is 120 pixels per centimeter, measured with 
a calibration grid 
4) The backlighting is dark and uniform with bright white roots 
5) The image has been converted from RGB color to 8‐bit grayscale format 
6) Any part of the shoot that was captured in the original image has been 
erased. 

 
42 
 
Sample image filename: Tub01_0uM Al_Day3_071708_31‐grayscaled.tif 

 
Step 1: Thresholding, Skeletonization and Segment Building (Note: 
these steps can be performed on many images with batch processing functions.)   
 

1) Start RootReader2D and open the image by clicking on the   icon and 
selecting the root image with the Open window that appears. 
 
2) Threshold the image – since the backlighting is uniformly dark with 
bright roots, the fixed thresholding technique should work fine.  Go to 
the Options menu and select “Bright roots on a dark background” and 
the Fixed Thresholding option.  Then go to the Measurement menu, and 
click on Set Threshold.  In Set Threshold window, set the parameters and 

43 
 
threshold the image by clicking on the   icon.  See the thresholded 
image below for parameters and thresholded levels. 

3) Skeletonize the thresholded image by clicking the   icon.  See 
Skeletonized image below.  (Note: the thresholded points were hidden from the 
view.) 

44 
 
 
 

4) Set the scale and error criterion.  See Set Scale and Set Error Criterion 
windows below for inputs used in current example. 
 

 
 

 
 
5) Check to make sure the “Find Shortest Paths” option is selected in the 
Options Menu in the Image Processing Sub‐Menu. 
 

6) Build the segments by clicking the   icon.  See image with skeleton 
and built segments and endpoints below. 

45 
 
 

 
 
 
Step 2: Root Selecting and Modification 
 
1) Check to make sure the “Selected roots share a common endpoint” and 
the “Automatic prediction of furthest endpoint” options are selected.  
See the Root Selecting options shown below. 
 

 
 
2) Zoom in and drag the maize seed towards the center of the image.  See 
the image below. 
 

46 
 
 
 
3) Select the start endpoint by holding the shift key down and left clicking 
on the image where the primary root emerges from the seed. 
 
4) After selecting the start endpoint (left click), the path of the primary 
root will be predicted and will appear in yellow/orange.  Zoom out to 
view the whole predicted path.  See the image below. 
 

47 
 
 
 
5) Since the “Selected roots share a common endpoint” option was 
selected, to select the two basal roots in the image, left click on the 
image where the two basal roots end.  See the image below. 
 

48 
 
6) Since RootReader2D did not correctly select the path of the primary and 
basal roots, the selected roots will have to be modified.  To begin 

modifying the selected roots, click the   icon.  The first root that was 
selected will appear in blue. 
 

 
 
7) Zoom in/zoom out and drag the image to navigate and move the image 
for better viewing.  
 

49 
 
 
 
8) To correct the path of the selected root, a new intermediary endpoint 
will have to be added to the path.  To add a new intermediary endpoint 
to the path, hold down the shift key and left click and hold then drag the 
new endpoint to the desired new position in the image.  (Note: when 
adding multiple endpoints, select endpoints that come from section of the path that 
you would like to modify.)  Endpoints that are permanently part of the path 
appear as orange numbers when in the modify mode.  
 

50 
 
 
 

9) Next, switch to the second selected root, click the   icon.  Zoom in on 
the root and correct the path by adding an intermediary endpoint(s) to 
the path. 
 
 

51 
 
 
 
10) Switch to the third root and correct the path by adding an 
intermediary endpoint(s) to the path.  See the images below. 
 

 
 

52 
 
 
 
11) Now that the paths of all three selected roots have been corrected, 

the modify mode can be exited by clicking the   icon.  See the 
image below. 
 

 
 

53 
 
 

Step 3: Saving Image Processing, Measuring Roots and Saving 
Measurements. 
 
1) Save the processing of the image in an associated RR2Dat data file by 

clicking the   icon. 
 

2) Measure the root system by clicking the   icon.  The measurements 
will be printed to the Measuring Log. 
 
3) Save the Measuring Log data by clicking the Save button on the bottom 
of the Measuring Log window.  The data will be saved to a .csv file 
(comma separated file) which may be opened with spreadsheet and 
statistical analysis software. 
 
 
Step 4: Calculating Primary, Seminal and Lateral Root Lengths 
 
1) In most cases, the primary root length is Longest Root Length and the 
primary root is also selected first (ie. Root 0). 
 
2) To get the total of the seminal root lengths, subtract the primary root 
length from the Total of Selected Root Lengths. 
 
3) To get the total lateral root length in root system, subtract the total 
selected root length from the Total Root System Length. 
 
4) Individual root lengths of the primary and two seminal roots can also be 
found in the saved .csv file as Root 0, Root 1 and Root 2, respectively. 
 
 
54 
 
xi. Example II ‐  Sorghum Total and Primary Root  
Length Measurement and Lateral Root 
Count off of Primary Root 
 
In this section, a step by step example will be provided on how to measure 
the total root system and primary root lengths from a sample sorghum root 
image with the RootReader2D software. 
 
Background Information: 
 
1) The sample sorghum plant in the image was 6 days old. Grown in a 
replete hydroponic nutrient solution at EMBRAPA Maize and Sorghum 
in Sete Legoas, MG, Brazil. 
2) The image was taken with digital SLR camera with a lightbox for 
backlighting 
3) The resolution of the image is 164 pixels per centimeter measured with 
a calibration grid 
4) The backlighting is bright and non‐uniform with dark roots 
5) The image has been converted from RGB color to 8‐bit grayscale format 

55 
 
Sample image filename: Tub02_Nov 6_Control_04‐grayscaled.tif 

  
Step 1: Thresholding, Skeletonization and Segment Building (Note: 
these steps can be performed on many images with batch processing functions.)   
 

1) Start RootReader2D and open the image by clicking on the   icon and 
selecting the root image with the Open window that appears. 
 
2) Threshold the image – since the backlighting is non‐uniform with dark 
roots of varying darkness, the fixed thresholding technique will not be 
suitable, so the double adaptive thresholding technique will be used.  In 
Options menu in the Image Processing sub‐menu set the following 
options.  Then go to the Measurement Menu and click on Set Threshold, 
then Set Dust Removal Filter, then Set Filling Filter and set the following 

56 
 
parameters shown below.  Next, threshold the image by clicking on the 

 icon.  See the thresholded image below. 

57 
 
 

3) Skeletonize the thresholded image by clicking the   icon.  See 
Skeletonized image below.  (Note: the thresholded points were hidden from the 
view.) 

 
 

58 
 
4) Set the scale and error criterion.  See the Set Scale and Set Error 
Criterion windows below for inputs used. 
 

 
 

 
 
 
5) Check to make sure the “Find Shortest Paths” option is selected in the 
Options Menu in the Image Processing  Sub‐Menu. 
 

6) Build the segments by clicking the   icon.  See image with skeleton 
with built segments and endpoints below. 
 

59 
 
Step 2: Root Selecting and Modification 
 
1) Check to make sure the “Selected roots share a common endpoint” and 
the “Automatic prediction of furthest endpoint” options are selected.  
See the Root Selecting options shown below. 
 

 
 
2) Check to make sure the “Count number of laterals off selected roots” 
option is selected.  See the Measuring options shown below. 
 

 
 
3) Zoom in and drag the sorghum seed towards the center of the image.  
See the image below. 
 

60 
 
 
 
4) Select the start endpoint by holding the shift key down and left clicking 
on the image where the primary root emerges from the seed. 
 
5) After selecting the start endpoint (Shift –left click), the path of the 
primary root will be predicted and will appear in yellow/orange.  Zoom 
out to view the whole predicted path.  See the image below. 
 

61 
 
 
 

6) Since RootReader2D did not correctly select the path of the primary 
root, the path of the primary root will have to be modified.  To begin 

modifying the primary root, click the   icon.  The selected primary 
root that will appear in blue. 
 
7) Zoom in/zoom out and drag the image to navigate and move the image 
for better viewing.  See the image below. 
 

62 
 
 
 
8) To correct the path of the selected primary root, a new intermediary 
endpoint will have to be added to the path.  To add a new intermediary 
endpoint to the path, hold down the ctrl key left click and hold, then 
drag the new endpoint to the desired position in the image.  (Note: when 
adding multiple endpoints, select endpoints that come from section of the path that 
you would like to modify.)  Endpoints that are permanently part of the path 
appear as orange numbers when in the modify mode.  See the image 
with corrected path for the second root below. 
 

63 
 
 
 
9) Now that the path of the selected primary root has been corrected, 

the modify mode can be exited by clicking the   icon.  See the 
image below. 
 

 
 

64 
 
Step 3: Saving Image Processing, Measuring Roots and Saving 
Measurements. 
 
1) Save the processing of the image in an associated xml data file by 

clicking the   icon. 
 

2) Measure the root system by clicking the   icon.  The measurements 
will be printed to the Measuring Log. 
 
3) Save the Measuring Log data by clicking the Save button on the bottom 
of the Measuring Log window.  The data will be saved to tab‐delimited 
txt file which may be opened in Microsoft Excel. 
 
 
Step 4: Calculating Primary and Total Root Lengths and Lateral Root 
Number off the Selected Primary Root 
 
1) The primary root length is the Longest Root Length and is also labeled as 
Root 0. 
 
2) The total root system length is Total Root System Length. 
 
3) The lateral root count off the selected primary root is the Total Selected 
Root Lateral Count or Root 0 – Lateral Count. 
 
 
 
 
 
 

65 
 
xii. Example III ‐  Arabidopsis Primary Root Length  
Measurements. 
 
Coming soon. 

 
 
 
 
 
 
 
 
 
 
 
 
 

66 
 
xiii. Example IV ‐  Rice Total Root System Length 
Measurement 
 
Coming soon. 

 
 

 
 
 
 
 
 
 
 
67 
 
III. Appendix 
 

More details on underlying processing and analysis algorithms coming 
soon. 
 

I.  Lighting and Camera Arrangements 
i.  Polarized Light Setup 

   

 
 

68 
 
Currently used for: Maize, Sorghum, Rice, Soybean and Wheat. 

ii.  Unfiltered Light Setup 

 
 
Currently used for: Maize and Sorghum and Rice. 

 
 
 
 

69 
 
 

iii.  Oblique Light Setup 
  A setup diagram coming soon.  Note: we have used an oblique lighting setup to image 
Arabidopsis plants that were grown or placed on agarose plates. 

70 
 
Downloads - RootReader2D

 RootReader2D
Docs »
Downloads
Search docs

Home RootReader2D is available to download from the link


Downloads below.
For additional help, please also download the
User Guide.
Setup

References
File Type Version

RootReader2Dv4_3.jar JAR 4.3.1

RootReader2Dv4_User_Guide.pdf PDF 4.0.0

 Previous Next 

This software is provided by the USDA-ARS Root


System Architecture Group at the Robert W. Holley
Center for Agriculture & Health, Ithaca, NY.

Built with MkDocs using a theme provided by Read


the Docs.

« Previous
Next »

http://www.plantmineralnutrition.net/software/rootreader2d/downloads/index.html[11/15/2017 10:40:39 AM]

You might also like