Не максимальное подавление в C

Я пытаюсь реализовать функцию не максимального подавления в C.

Не максимальное подавление - это нелинейный фильтр, который подавляет все значения в окне, которые не являются максимальными. Рассмотрим 5-элементную последовательность w[n], которая имеет следующие значения: w[n] = [25 10 31 50 19]. Наибольшее значение в окне - 50. Применение не-максимального подавления приведет к следующему выводу: w'[n] = [0 0 0 50 0]. Ниже приведен мой код:

void  NMS(int width, int height, double *input,double *output,double H,double W){

for (int y = 0; y <height; y++){
    for (int x = 0; x <width; x++){
      double r_max;
        int ind = x*height + y;
        for(int yy=0;yy<H;yy++){
            for(int xx=0;xx<W;xx++){
                int k_ind=xx*H+yy;
                if (input[ind+k_ind]>r_max){
                    r_max=input[ind+k_ind];
                }
                else if(input[ind+k_ind]<r_max)
                    output[ind+k_ind]=0.0;
            }
        }
     }
  }    
}

int height, width: это высота и ширина двойной * входной матрицы, которая содержит данные изображения. double * output сохраняет новые значения и отображает новое изображение. H и W - это окно, в котором я хочу применить не максимальное подавление.

Я нахожу максимальное значение в окне HxW и присваиваю его r_max. Но предположим, что r_max в начале равно 0. Он находит значение, скажем, 4, в первом индексе и, скажем, 6, во втором индексе. Сейчас я обновляю r_max, но как мне сделать предыдущий индекс со значением 4 равным 0? Я запутался в том, как отслеживать предыдущий индекс.

Пожалуйста, попросите каких-либо разъяснений, если это необходимо. Спасибо вам всем!

0 ответов

Другие вопросы по тегам