Вы ищете 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 пикселя до и после и т. Д.
Для mean filter вы делаете то же самое, кроме заменить пиксель вокруг окна со средним всех значений, т.е.
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]
(без пикселей после него) - этот пример «реплицирует» пиксель возле границы. Поэтому мы обычно «накладываем» изображение с реплицированными или постоянными границами, свертываем изображение, а затем удаляем эти границы.
Это стандартная операция, которую вы найдете во многих вычислительных пакетах.