Otolith shape analysis

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Otolith shape analysis

Draktibo
Hi all,

new to imageJ (and no coding/macro experience) and have some questions about image J's potential for shape analysis.

1/ Is there any way to batch convert colour images to B & W so that i would have a white image on a black background or vice versa?

2/ When i analyse an image, how do i set it so the measurements are of the particular shape outline (within the image) rather than the whole image outline?

3/ How do i go about selecting a shape outline to measure? Again is there any way to batch measure multiple images with shape outlines or images with white shapes on black background?

thank you in advance!

Craig.
Reply | Threaded
Open this post in threaded view
|

Re: Otolith shape analysis

Anderson, Charles (DNR)
To get you started, here is an old macro I used to segment fish images from background, crop that part of image, and save various shape measures in results.  There is an extra loop to separate the largest particle -- the fish in my case-- from smaller objects. You will need to study the ImageJ/FIJI tutorial to understand converting RGB to 8 bit gray images, thresholding, analyze particles, setting which measurements are recorded, inverting images from black on white to white on black, etc..

Charles Anderson / MN DNR

// BatchFishCrop.txt                    2 September 2011

// Saves name.jpg to the output directory:
// = cropped colored fish on white (or grey) background, yellow ROI
// Saves name.txt to the output directory:
// = Results, including rudimentary Feret information. WITHOUT header
// Saves name+pts.txt to the output directory:
//      = Results of landmarks: area, X, Y, XStart, YStart, WITH header

// =========================================================================

// Modified 9/19/2011

// Produce *.jpg files for WildID, not *.tiff

// =========================================================================


     // Setup
     // =====
     //setBackgroundColor(255, 255, 255);   /// white background
     setBackgroundColor(128, 128, 128);   /// grey background
     //run("Set Measurements...", "area centroid  bounding   feret's  redirect=None decimal=2");          // No labels
     run("Set Measurements...", "area centroid  bounding shape feret's  redirect=None decimal=2");          // No labels
     indir = getDirectory("Input: select a directory");
     list = getFileList(indir);
     outdir = getDirectory("Output: create or select a directory");
     setBatchMode(true);
     start = getTime;

     // Loop over input images
     // ===================
     for (i=0; i<list.length; i++) {
          path = indir+list[i];              // ImageJ no longer tries to open Thumbs.db
          open(path);
 
          id = getTitle();
          run("Duplicate...", "title=original");
          run("Duplicate...", "title=enhanced");

          // Produces "Red", "Green", "Blue"
          run("RGB Stack");
          run("Convert Stack to Images");
          // Black fish 255 on white 0 invLUT
          selectWindow("Blue");
          setThreshold(0,254);
          run("Convert to Mask");   // Black 255 fish and ground; white board.
         
          // ***    For measure board calibration here:
 
          // Finding Nemo
          // ===========
          //  For either board on edge or not on edge:
          //   Analyze Particle options:
          //   [show=Nothing or show=Masks; display to show results; exclude on edges; clear results;
          //    include holes; summarize, record starts; add to Manager; show in situ;]
          //run("Analyze Particles...", "size=100-Infinity circularity=0.0-1.00 show=Masks display exclude clear  record add");
          run("Analyze Particles...", "size=100-Infinity circularity=0.0-1.00 show=Nothing    exclude clear   add");

          largestarea = 0;
          index = 0;
          for(j=0; j < nResults; j++){
               testarea = getResult("Area", j);
               if(testarea > largestarea) {
                    largestarea = testarea;
                    index = j;
              }
          }
          selectImage("original");
          roiManager("Select", index);
          run('Clear Outside');
          run("Crop");
 

          // Save Nemo
          // =========
          dotIndex = lastIndexOf(id, ".");
          if (dotIndex!=-1)
                name = substring(id, 0, dotIndex);
          //saveAs("tiff", outdir+name+".tif");
          saveAs("Jpeg", outdir+name+".jpg");

          // Save Points and Nemo data  (if red dots are needed to calibrate the board for projective transformation)
          // =========================
          saveAs("Measurements", outdir+name+".txt");
          // Area, X, Y, BX, BY, Width, Height, Feret, FeretX, FeretY, FeretAngle, MinFeret   [No header]
          // Area, X, Y, BX, BY, Width, Height, Circ., Feret, FeretX, FeretY, FeretAngle, MinFeret, Ar, Round, Solidity, XStart, YStart  //with shape

          // Clean Up
          // Close unneeded images
          while(nImages>0) {
               selectImage(nImages());
               run("Close");
          }  

     }     // End looping over images

     if (isOpen("ROI Manager")) {
          selectWindow("ROI Manager");
          run("Close");
     }
     if (isOpen("Results")) {
          selectWindow("Results");
          run("Close");
     }

     print(list.length);
     print((getTime - start)/1000, " seconds");
     setBatchMode(false);
     wait(5000);

     if (isOpen("Log")) {
          selectWindow("Log");
          run("Close");
     }


// =========================================================================


________________________________________
From: ImageJ Interest Group [[hidden email]] on behalf of Draktibo [[hidden email]]
Sent: Saturday, November 08, 2014 1:18 PM
To: [hidden email]
Subject: Otolith shape analysis

Hi all,

new to imageJ (and no coding/macro experience) and have some questions about
image J's potential for shape analysis.

1/ Is there any way to batch convert colour images to B & W so that i would
have a white image on a black background or vice versa?

2/ When i analyse an image, how do i set it so the measurements are of the
particular shape outline (within the image) rather than the whole image
outline?

3/ How do i go about selecting a shape outline to measure? Again is there
any way to batch measure multiple images with shape outlines or images with
white shapes on black background?

thank you in advance!

Craig.



--
View this message in context: http://imagej.1557.x6.nabble.com/Otolith-shape-analysis-tp5010333.html
Sent from the ImageJ mailing list archive at Nabble.com.

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html