Я сделал сглаживание по Гауссу для каждого среза стека изображений 528 x 528 x 128 (таким образом, 128 срезов), и все прошло удивительно быстро (это было с небольшим ядром фильтра, размером 3 x 3). Я действительно не удосужился рассчитать это, но это было меньше чем за 2 секунды.
Мне очень интересно, как эта функция работает "под капотом", потому что я пытаюсь написать какой-то быстрый счетчик соседей, который выглядит как свертка. Я использую всю свою причудливую магию в этой собственной функции, например stride_tricks
и np.einsum
, но, тем не менее, она ужасно медленная, около 5 минут для того же стека изображений, опять же с ядром 3x3. По этой причине я хочу взглянуть на реализацию фильтра, которая используется в Skimage.
Я попытался найти исходный код на Github для skimage.filters.gaussian
. Этот отправляет меня повсюду, потому что гауссовская функция использует gaussian_filter из scipy.ndimage.filters
, а эта функция снова использует другую функцию и так далее.
Ближе всего к реальному источнику я получил scipy.ndimage.filters.correlate1d
. Эта функция возвращает функцию с именем _nd_image.correlate1d
, но я нигде не могу найти источник для нее!
Если вы знаете, где находится источник, большое спасибо за обмен!
Также, если вы знаете , почему этот фильтр такой быстрый, т. Е. Какие специальные приемы он использует, я был бы рад услышать об этом.