Вы ищете 1D Convolution , который использует фильтр, с помощью которого вы «сворачиваете» изображение.Например, вы можете использовать медианный фильтр (пример заимствования из Википедии)
x = [2 80 6 3]
y[1] = Median[2 2 80] = 2
y[2] = Median[2 80 6] = Median[2 6 80] = 6
y[3] = Median[80 6 3] = Median[3 6 80] = 6
y[4] = Median[6 3 3] = Median[3 3 6] = 3
so
y = [2 6 6 3]
Итак, здесь размер окна равен 3, так как вы смотрите на 3 пикселя за раз и заменяете пиксель вокруг этого окнасо среднимОкно 3 означает, что мы смотрим на первый пиксель до и первый пиксель после пикселя, который мы оцениваем в данный момент, 5 будет означать 2 пикселя до и после и т. Д.
Для среднего фильтра , вы делаете то же самое, за исключением замены пикселя вокруг окна средним значением всех значений, т.е.
x = [2 80 6 3]
y[1] = Mean[2 2 80] = 28
y[2] = Mean[2 80 6] = 29.33
y[3] = Mean[80 6 3] = 29.667
y[4] = Mean[6 3 3] = 4
so
y = [28 29.33 29.667 4]
Так что для вашей проблемы , y[3]
- это "«Наименьшая яркая точка».
Обратите внимание, как обрабатываются границы для y[1]
(без пикселей до него) и y[4]
(без пикселей после него) - в этом примере «реплицируется» пиксель около границы.Поэтому мы обычно «дополняем» изображение реплицированными или постоянными границами, сворачиваем изображение и затем удаляем эти границы.
Это стандартная операция, которую вы найдете во многих вычислительных пакетах.