Войти
ПрограммированиеФорумГрафика

CUDA/GPU как сделать максимально быстро свертку по ядру 3x3 , 4x4 , 5x5 ... (3 стр)

Страницы: 1 2 3
#30
16:58, 13 ноя. 2019

Вроде те же самые коэфф-ты, просто берёшь крест по центру.
Другое дело, что твоё ядро - это тоже какой-то подбор на глаз, оно по-другому генерируется, через экспоненту.
Примера на Си у меня сейчас нет под рукой, гугли С++ gauss kernel calculation.


#31
(Правка: 18:32) 18:27, 13 ноя. 2019

invis
Я вот так генерировал

+ Показать


Смысли крест берешь ,

mat[] = { a , b  ,c ,
              a1, b1 ,c1 ,
              a2, b2 , c2 }

vx_{ a1 , b1 , c1 } .
vy_ ={ b , b1 , b2 } 

... Так ?

#32
21:11, 13 ноя. 2019

Если уже есть генерация 1D-ядра (вроде похожая на правду), не нужно заморачиваться с крестами.

#33
(Правка: 17:33) 17:30, 14 ноя. 2019

invis
На самом деле надо брать крайний столбец и крайнюю строку "Крестовая аппроксимация" ..!

https://m.habr.com/ru/company/yandex/blog/313892/
Изображение

Метод розложения Гаусса
https://uk.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%… 3%D1%81%D0%B0

#34
13:49, 19 ноя. 2019

Что я делаю не так , паочему не работает , разделения свертки по осям ...?
P>S: Ядро коеффициентов 100% правильное, что можно видить по картинки с права

Результат : 
Изображение


Code C/C++ / OpenCV ....

+ Показать

#35
22:58, 19 ноя. 2019

Извлечение крестов (крайних строк и пр.) - это была неудачная идея, генерируй сразу 3*1. Для проверки в OpenCV наверное тоже можно сделать 2 прохода 3*1 + 1*3.
Если уж хочется извлечь, то как минимум нормализовать надо, чтобы сумма = 1. Вон здесь 1D и 2D получаются разные:
http://dev.theomader.com/gaussian-kernel-calculator/

Страницы: 1 2 3
ПрограммированиеФорумГрафика