Исходный код для scipy ndimage _convolve1d - PullRequest
0 голосов
/ 15 ноября 2018

Я сделал сглаживание по Гауссу для каждого среза стека изображений 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, но я нигде не могу найти источник для нее!

Если вы знаете, где находится источник, большое спасибо за обмен! Также, если вы знаете , почему этот фильтр такой быстрый, т. Е. Какие специальные приемы он использует, я был бы рад услышать об этом.

...