Constantine
FFT это один большой ручник в коде
Pepe 🐸
Но если интересно читай статью . Там 16 и 24 тайлы их надо свернуть
Constantine
Он нужен когда без него реально нельзя
Pepe 🐸
Но если интересно читай статью . Там 16 и 24 тайлы их надо свернуть
Но так чтобы который 16 не выходил за границы
Pepe 🐸
Так что не вся свертка нужна
Constantine
Ты объект 16*16 в квадрате 24*24 искать не втупую собираешься?
Constantine
Ты же догадываешься, что тебе нужно будет провести два фурье
Constantine
У фурье там множитель логарифм делить на логарифм логарифма
Pepe 🐸
Ты объект 16*16 в квадрате 24*24 искать не втупую собираешься?
Задача посчитать дистанцию строго говоря. Формула (2) в сопровождающей статье. Там же описан быстрый вариант формула (12)
Pepe 🐸
И потом ещё инверсное
Constantine
Технически у тебя два фурье R -> C, шаблон видимо подготовлен
Constantine
Или 81 поиск втупую с расчетом корреляции напрямую
Constantine
Без даблов, без всего
Constantine
Чистенький расчетик
Constantine
Если процессор умеет в векторные операции он такое будет проводить мгновенно
Pepe 🐸
Если процессор умеет в векторные операции он такое будет проводить мгновенно
То есть array_r[1000][1000] допустим, и я делаю всё это свертки для array_t[20][20], нормально из array_r который просто в том порядке в котором картинку получили , выбирать array_t и считать для него вещи
Constantine
так 16 в 24 или 16 в 1000?
Pepe 🐸
так 16 в 24 или 16 в 1000?
Я выбираю из большого массива маленькие
Constantine
А вообще я бы на таких размерах изучал, как там аналог карацубы делается, а не фурье, он может быть еще кое-как
Pepe 🐸
Вообще как с массивами работают , если тебе нужно массив перебрать, тебе же важно в каком порядке делать?
Constantine
По строкам, если хранение по строкам
Constantine
Размер 1024 хороший знак
Constantine
Двумерные фурье требуют перестановок строк/столбцов
Pepe 🐸
По строкам, если хранение по строкам
Вот, а если перебирать квадратными кусками, надо массив переделать чтобы квадратные куски развернуты в строки были?
Pepe 🐸
И потом как применить fftw к такому
Constantine
Надо делать перестановку со сжатием блоков 2*2, если речь про фурье R -> C
Constantine
И вкладывать в структуру типа Q
Pepe 🐸
Надо делать перестановку со сжатием блоков 2*2, если речь про фурье R -> C
Можно об этом подробнее или ссыль в нужном направлении?
Constantine
Можно, но тебе не нужно фурье
Constantine
Тебе совершенно точно не нужно писать самому фурье
Pepe 🐸
Constantine
Я в свое время писал нормальный алгоритм примерно неделю
Anonymous
форматнул винчак несколько дней назад, устанавливать стадию лень. Пишу онлайн 😂 а че, оч даже удобно как оказалось
Constantine
Потому что там полный пипец и любую опечатку ты будешь час искать
Pepe 🐸
Потому что там полный пипец и любую опечатку ты будешь час искать
Так как бы ты сделал, просто вырывал квадраты из большого массива и считал был фурье библиотекой?
Constantine
https://pastebin.com/gbgpXuGC
Constantine
вот что такое самописное фурье блджад, я его нашел
Constantine
ошибись в любом знаке и ищи джва часа
Pepe 🐸
https://pastebin.com/gbgpXuGC
Можешь ещё кинуть ссыль про то что ты сказал про q структуры?
Pepe 🐸
Какое нибудь текстовое... Статью или книгу
Constantine
https://pastebin.com/GA2DFWWn
Constantine
вот он, язь здровенный
Constantine
Q это кватернионы, они есть в гугле
Constantine
хотя.. здесь это может совершенно случайно быть C+C
Constantine
a*x.a - i *x.i - j * x.j - k*x.k, a*x.i + i *x.a + j*x.k - k*x.j, a*x.j + j *x.a + k*x.i - i*x.k, a*x.k + k *x.a + i*x.j - j*x.i
Constantine
таблица умножения
Pepe 🐸
Q это кватернионы, они есть в гугле
Я в курсе. Я просто не понял как Фурье это относится
Constantine
Нам целый курсач этим мозги имели
Constantine
Если кратко, то не обязательно проводить Фурье в С
Constantine
Можно проводить в другом теле
Constantine
В данном случае используются тела размера 4, чтобы вложить вещественные и все осталось квадратным
Constantine
Потом идет распаковка и получается результирующее фурье
Constantine
Если известно, что результат получится вещественный, нужно написать что-то такое
Constantine
Сложить вещественную и мнимую часть инпута, провести фурье как вещественного, взять разницу вещественной и мнимой части аутпута
ep
Нам целый курсач этим мозги имели
Если не секрет, что за специальность и вуз?
Ioann_
Ну если тебе надо быстро, грузи GPU и реализацию фурье с куды
Ну это будет быстро, если это не часто. И если реально можно распараллелить - тогда да, самолетик Ф 16 будет. А на мобилках ГПУ можно ли вычисления проводить, кто подскажет ?
Ioann_
Я в курсе. Я просто не понял как Фурье это относится
Просто вбей в гугол fast fft for small arrays, уверен кучу всего найдет.
Ioann_
Но судя по твоей задаче - я что то похожее, но в 3D делал иначе, но тоже за счет аналогии со свертками. Т.е без FFT
ep
Так что там с мобилками, подскажет кто :)?
Там встатье сравнивается с этим: http://research.nvidia.com/publication/flexisp-flexible-camera-image-processing-framework Насколько я понял, оно на GPU тоже работает
Ioann_
можно
Интересно, довольно таки. Спасибо - знать буду, может и использовать.
Anonymous
Почему есть много с++ компиляторов онлайн и ни одного с отладкой ? )
Aidar
ну хотя смотря на каких
Anonymous
берешь годболт и пуллреквестишь
был там сегодня. а где отладка?
Aidar
Aidar
или ты хочешь отладку на javascript?
Aidar
с эммуляцией x86
Stanislav
Aidar
на плюсах
я имел ввиду исполнение проги твоей джаваскриптом
vladislav
Дебаг онлайн, без смс, без регистрации
Ioann_
на мобилках же есть compute shaders и opencl нет разве?
Честно - не разбираюсь, что есть на мобилках. Я сразу по пеку натачивался. Не все же мне в этом мире знать и уметь. Но теперь знаю, что вроде как есть. Это радует, надеюсь - что опенцль в помощь, и тогда переписывать не нужно будет:)