Re: using variable with "add" function
Posted by
Aaron Schiffman on
Jun 24, 2009; 2:56am
URL: http://imagej.273.s1.nabble.com/using-variable-with-add-function-tp3692029p3692033.html
Ka Wai Tse wrote
Hi all,
I'm trying to add a value (p) to each of the images in my stack. This value
(p) changes for each picture according to the function p= 5-mean. When i run
the following code below, it runs but i find it to add "5" to all of my
images not "5-mean" whatever "mean" is for that particular image. Any idea
why it's doing this?
getStatistics (mean);
y=mean;
p= 5.0000 - mean;
run("Add...", + p +);
Line by line:
- getStatistics seems to require you to submit arguments in a particular order. i.e. getStatistics(area, mean); works fine, but getStatistics(mean) returns area rather than mean. At least, this has been my experience.
- y=mean is unnecessary here.
- p=5.0000-mean; no problems here.
- no need for +'s here since you aren't adding numbers or strings. run("Add...", p); would work, as would run("Add...", 5-mean);
Also be aware the value you add is for each pixel - the mean will not necessarily be 5 larger. You can check all of this with liberal use of the print function. I suggest the following:
getStatistics(area, mean);
p= 5.0000 - mean;
run("Add...", p);
And if you want to get a better idea of what the macro is actually doing...
x=getPixel(500, 500)
print(x);
getStatistics(area, mean);
y=mean;
print(y);
p= 5.0000 - mean;
print(p);
run("Add...", p);
x=getPixel(500, 500)
print(x);
In this case the macro would check the value of a particular pixel at the coordinates 500 by 500 and print that value. It will also print the initial mean, 5-mean, and the final value of your pixel, in that order. Make sure 5-mean isn't a negative value, unless that's what you had in mind.