Hello imagej users,
I am trying to count and locate the peaks in a picture.for this purpose I use the following macro wich is an adaptation of the FindMaxPixelLocation macro. for peak identification I just compare the values of consecutives points
(curve[i+1]) && (curve[i+1]>curve[i+2])
curve[i] being the pixel value at location i of the loop. but as result I get 39 peaks instead of 4 (see the attached profile)
I would like to know what I am doing wrong and if anyone has another easier way to solve this problem
thanks in advance
regards
Paul Rostand
showStatus("Finging pixel with largest value...");
max = 0;
peak=0;
width = getWidth();
height = getHeight();
for (y=0; y<height; y++) {
if (y%20==0) showProgress(y, height);
for (x=0; x<50; x++) {
value = getPixel(x,y);
if (value>max) {
max = value;
xmax = x;
ymax = y;
}
}
}
print("A pixel with the max value ("+max+") is
located at "+xmax+","+ymax);
curve=newArray(width);
threshold = 0.9*max; // define the threshold used to count the peaks
for (y=0; y<height; y++) {
if (y%20==0) showProgress(y, height);
for (x=0; x<50; x++) {
value = getPixel(x,y);
if (value>threshold) {
for (i=0;i<48;i++) {
curve[i]=value;
if((curve[i]<curve[i+1]) && (curve[i+1]>curve[i+2])){
peak=peak+1;
}
}
}
}
}
print("the number of peaks is "+peak+");