Encontrar dois picos principais e os vales entre os picos de um array 2D ou histograma

for (int i = 0; i < c.length; i++)
{
    for(int j=0; j<c[i].length;j++)
    {
         if(peak1[i]<c[i][j]){
         peak1[i] = c[i][j];
         peak1loc1[i]= j;
     }
}     


 println(peak1[2]);
 println(peak2[2]);`

Aqui está o que eu tentei até agora. Por algum motivopeak1 epeak2 estão imprimindo os mesmos valores.

Eu tenho uma matriz bidimensional que mantém valores de cor RGB de uma imagem. Eu quero encontrar dois picos principais de cada canal (r, g, b), e o vale entre esses dois picos principais, então eu terei dois picos principais para o vermelho, dois picos principais para o verde, dois picos principais para o azul e um vale (o menor valor entre os principais picos), então três vales no total.

Existe algum algoritmo para isso ou alguém pode me dar algumas idéias como eu posso encontrar isso? Um pseudocódigo seria realmente útil.

questionAnswers(1)

yourAnswerToTheQuestion