Не максимальное подавление в 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? Я запутался в том, как отслеживать предыдущий индекс.
Пожалуйста, попросите каких-либо разъяснений, если это необходимо. Спасибо вам всем!