Login  Register

Re: how to count the number of peaks in a dynamic profile

Posted by lechristophe on Apr 28, 2011; 9:58am
URL: http://imagej.273.s1.nabble.com/how-to-count-the-number-of-peaks-in-a-dynamic-profile-tp3684809p3684812.html

Dear Paul,

There is a Process>Find Maxima command in ImageJ that works quite well to
detect peaks in images. Did you try to use it ?

Christophe

On Thu, Apr 28, 2011 at 11:19, paul_rostand <[hidden email]> wrote:

> 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+");
>
> --
> View this message in context:
> http://imagej.588099.n2.nabble.com/how-to-count-the-number-of-peaks-in-a-dynamic-profile-tp6312558p6312558.html
> Sent from the ImageJ mailing list archive at Nabble.com.
>