не максимальное подавление в C - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь реализовать функцию не максимального подавления в 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?Я не совсем понимаю, как отследить предыдущий индекс.

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

...