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