http://imagej.273.s1.nabble.com/Extracting-pixel-values-to-results-table-tp3683931p3683932.html
> for every pixel in a series of images in a specified folder. I am using the
> macro below. The macro runs but I cannot get it to save the values of each
> pixel in the results table. When the macro is finished only the last pixel
> value is shown in the results table. The NDVI values are then also not
The results table contains only one row because the 'i' variable (row index) in the setResult() calls is never incremented. Here is a simplified version of the macro that does work for a single RGB image. You will need to upgrade to the ImageJ 1.45l daily build to avoid a bug that causes the headings to not be saved with non-displayed results tables.
> I have been able to write the results to the log screen, however this takes
> extremely long to process and is not feasible. Simularly if the results is
> printed the macro takes extremely long.
>
> I would appreciate any help.
>
> Thanks
> Henri
>
> //extract surface area and ndvi over the whole plot for trees and grasses
>
> run("Memory & Threads...", "maximum=1600 parallel=8 run");
>
> dir1 = getDirectory("Choose Source Directory "); //prompt user for source
> directory
>
> dir2 = getDirectory("Choose Destination Directory "); //prompt user for
> destination directory
>
> dir3 = getDirectory("Choose Results Directory "); //promt user for
> destination directory for results file
>
> dir4 = getDirectory("Choose NDVI Results Directory ") //promt for ndvi dir
>
> list2 = getFileList(dir2); //get a list of the files
>
> setBatchMode(true);
>
> for (z=0; z<list2.length; z++) {
> open(dir2+list2[z]); //opens every image
> //showProgress(z+1, list2.length);
>
> start = getTime();
> // Get current time for progress bar
>
> w = getWidth(); // Get picture width
> h = getHeight(); // Get picture height
> tt = getTitle();
> if(nResults>=0)run("Clear Results");
> print("\\Clear"); // Clears the log
> i = nResults;
>
>
> for (x=0; x<w; x++){ // Setup nested loops
> to go through each x,y value in image
>
> showProgress(x+1, w);
>
> for (y=0; y<h; y++){
> v = getPixel(x, y); // Get a pixel value
> r = (v & 0xff0000)>>16; // Extract out RGB
> values from packed integer with pixel value
> g = (v & 0x00ff00)>>8;
> b = (v & 0x0000ff);
> NDVI = ((r-g)/(r+g)); // Calculate the NDVI.
>
>
> //print(u,tt,x+1,y+1,r,g,b,NDVI);
>
> setResult("O", i, i);
> setResult("Pr", i, x+1);
> setResult("Pc", i, y+1);
> setResult("NDVI", i, NDVI);
> //updateResults();
> //print(nResults);
>
> }
>
> }
>
> //selectWindow("Log");
> //saveAs("Text", dir4+tt+"datandvi.txt");
> saveAs("Results", dir4+tt+"datandvi.txt");
> }
>
>
>
> --
> View this message in context:
http://imagej.588099.n2.nabble.com/Extracting-pixel-values-to-results-table-tp6578961p6578961.html> Sent from the ImageJ mailing list archive at Nabble.com.