реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Двумерное FFT на основе одномерного, Как правильно выбрать разрядность для промежуточных данных?
BSACPLD
сообщение Dec 7 2015, 19:03
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



Есть задача посчитать на ПЛИС FFT от матрицы 128 на 128 (кусок видеоизображения).
Если я правильно понимаю, то для этого можно использовать уже готовое одномерное FFT (Альтеровская мегафункция).
1. Сделать FFT от каждой строки.
2. Сделать FFT от каждого столбца матрицы полученной после пункта 1.
Исходные данные имеют тип 8 бит real (яркостный канал).
Насколько я понимаю, полученный спектр будет симметричным, так что достаточно хранить только реальную часть примежуточной матрицы.
Так ли это?
И как выбрать разрядность для промежуточной матрицы?
8, 10 бит?
Go to the top of the page
 
+Quote Post
Corner
сообщение Dec 7 2015, 19:27
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Идея преобразования правильная. Но вот выбрать разрядность можно, лишь зная назначение самого преобразования.
Go to the top of the page
 
+Quote Post
Pavia
сообщение Dec 7 2015, 19:34
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 3-02-14
Из: Интернет
Пользователь №: 80 322



Цитата
Насколько я понимаю, полученный спектр будет симметричным, так что достаточно хранить только реальную часть примежуточной матрицы.
Так ли это?
Нет. Это значит что надо хранить реальную и мнимую часть, но достаточно половины отсчётов.

Цитата
И как выбрать разрядность для промежуточной матрицы?
8, 10 бит?
Профи лучше ответят. Но насколько я понял это зависит от уровня шумов допустимых на следующем этапе обработки.
И скорее вам подойдёт 16 бит.

Сообщение отредактировал Pavia - Dec 7 2015, 19:35
Go to the top of the page
 
+Quote Post
BSACPLD
сообщение Dec 7 2015, 19:45
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



Цитата(Pavia @ Dec 7 2015, 22:34) *
Нет. Это значит что надо хранить реальную и мнимую часть, но достаточно половины отсчётов.

Т.е. если количество точек FFT равно 128, то достаточно будет хранить отсчёты с 0 по 63?
Go to the top of the page
 
+Quote Post
Corner
сообщение Dec 9 2015, 16:46
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Если Вы собрались делать полноценное двумерное Фурье, то для представления результата нужны все полученные коэффициенты. Это в ДКП возможное число коэффициентов, при некотором допущении, получается меньшим. Выкинув половину полученных коэффициентов, вы можете получить нулевой результат при полноценном исходном кадре.
Мы опять вернулись к вопросу: что ВЫ с этим двумерным Фурье потом будете делать?
Если сжимать, то берите первый jpeg (не редакции 2000 года, в нем уже вейвлеты) и читайте-там все разжевано. Только там матрица 8х8 и придется напрячься, чтобы адаптировать под ВАШИ 128х128.
Если использовать как фильтр шума, в системе распознания образов, то Фурье в данном случае инструмент непригодный и надо использовать ДДВП или ДДПУ с алгоритмом предложенным вами и округлением, которое надо подобрать на основе некоторого практического эксперимента с ВАШЕЙ библиотекой образов.
Go to the top of the page
 
+Quote Post
BSACPLD
сообщение Dec 10 2015, 14:08
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



Цитата(Corner @ Dec 9 2015, 20:46) *
Если Вы собрались делать полноценное двумерное Фурье, то для представления результата нужны все полученные коэффициенты. Это в ДКП возможное число коэффициентов, при некотором допущении, получается меньшим. Выкинув половину полученных коэффициентов, вы можете получить нулевой результат при полноценном исходном кадре.
Мы опять вернулись к вопросу: что ВЫ с этим двумерным Фурье потом будете делать?
Если сжимать, то берите первый jpeg (не редакции 2000 года, в нем уже вейвлеты) и читайте-там все разжевано. Только там матрица 8х8 и придется напрячься, чтобы адаптировать под ВАШИ 128х128.
Если использовать как фильтр шума, в системе распознания образов, то Фурье в данном случае инструмент непригодный и надо использовать ДДВП или ДДПУ с алгоритмом предложенным вами и округлением, которое надо подобрать на основе некоторого практического эксперимента с ВАШЕЙ библиотекой образов.

С тем, что нужно хранить все значения я теперь разобрался.
FFT нужен для того, чтобы сделать взаимную коррелляцию текущего и предыдущего кадра.
Таким образом я хочу определить смещение текущего фонового изображения относительно предыдущего.
Всё это нужно для автоматической стабилизации изображения.
Go to the top of the page
 
+Quote Post
Corner
сообщение Dec 10 2015, 16:33
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Как определяют фон...
Сначала делают межкадровое вычитание. Потом делают инверсию модуля с сохранением знака, чтобы участки с малой разницей между кадрами стали максимально яркими. Это и есть фоновые участки.
Результат обрабатывают Фурье, вейвлетами или преобразованием Уолша. Тут уже для поиска движения подходят разные методы.
Сразу скажу, при такой обработке нужна максимально высокая точность и обрезать биты не рекомендуется. Для вашего случая результат будет 15 битный после строк и 22 битный после столбцов. Обрежете сильнее, на малоконтрастных изображениях начнет косячить стабилизатор.
Go to the top of the page
 
+Quote Post
BSACPLD
сообщение Dec 10 2015, 19:03
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



Цитата(Corner @ Dec 10 2015, 20:33) *
Как определяют фон...
Сначала делают межкадровое вычитание. Потом делают инверсию модуля с сохранением знака, чтобы участки с малой разницей между кадрами стали максимально яркими. Это и есть фоновые участки.
Результат обрабатывают Фурье, вейвлетами или преобразованием Уолша. Тут уже для поиска движения подходят разные методы.
Сразу скажу, при такой обработке нужна максимально высокая точность и обрезать биты не рекомендуется. Для вашего случая результат будет 15 битный после строк и 22 битный после столбцов. Обрежете сильнее, на малоконтрастных изображениях начнет косячить стабилизатор.

К сожалению, просто межкадровое вычитание делать не получиться, т.к. за время одного кадра камера может повернуться весьма значительно. Хотя может быть я не до конца понял Ваш алгоритм... Если кратко описать задачу, то мне нужно получить две вещи:
1. Стабилизировать изображение движущейся камеры, причём она может вращаться как по оси X, так и по оси Y. Т.е. нужно убрать тряску которая возникает при вращении опорно-поворотного устройства.
2. Определить смещение изображения и после этого сделать межкадровое вычитание, чтобы определить координаты движущегося объекта и отцентрировать по нему видеокамеру.
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Jan 26 2016, 20:13
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 10-01-13
Пользователь №: 75 145



Цитата(BSACPLD @ Dec 7 2015, 22:03) *
И как выбрать разрядность для промежуточной матрицы?
8, 10 бит?

Делал похожую штуку, для достижения нормальной точности пришлось перейти на 32 бит float
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 26 2016, 21:22
Сообщение #10





Guests






Цитата(Burenkov Sergey @ Jan 26 2016, 23:13) *
Делал похожую штуку, для достижения нормальной точности пришлось перейти на 32 бит float


Информативность Вашего поста близка к нулю, это же очевидно, нэ?

И, да - поясните, что Вы подразумеваете под 32 бит float?
Неужели IEEE754 и single?
А, какую именно модель подстандарта?
Интелловскую "расслабленную" или более корректную?
А, тест «Floating point paranoia» проходили на своей платформе?
Нет?
Ну.. батенька.
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Jan 27 2016, 09:49
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 10-01-13
Пользователь №: 75 145



Цитата(TSerg @ Jan 27 2016, 00:22) *
Информативность Вашего поста близка к нулю, это же очевидно, нэ?

Нэ

Цитата(TSerg @ Jan 27 2016, 00:22) *
И, да - поясните, что Вы подразумеваете под 32 бит float?
Неужели IEEE754 и single?


Да

Цитата(TSerg @ Jan 27 2016, 00:22) *
А, какую именно модель подстандарта?
Интелловскую "расслабленную" или более корректную?
А, тест «Floating point paranoia» проходили на своей платформе?
Нет?

Не знаю что такое расслабленная и более корректная модель)) Каюсь, понадеялся что ребята из альтеры разрулили это за меня в своем ффт мегакоре

Go to the top of the page
 
+Quote Post
Maverick
сообщение Jan 27 2016, 10:14
Сообщение #12


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Burenkov Sergey @ Jan 27 2016, 11:49) *
Нэ

Да

Не знаю что такое расслабленная и более корректная модель)) Каюсь, понадеялся что ребята из альтеры разрулили это за меня в своем ффт мегакоре

Я понимаю краткость сестра таланта. В этой ветке делятся алгоритмами или разбираются в алгоритмах/математике.
Совет:
Ответы/посты, информативность которых сводиться к нулю, лучше просто не давайте здесь.
Если же отвечаете давайте более менее полный ответ на вопрос, чтобы было понятно другим.

Иначе в будущем можете получить на свои вопросы ответы в Вашем стиле...


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Jan 27 2016, 10:24
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 10-01-13
Пользователь №: 75 145



Цитата(Maverick @ Jan 27 2016, 13:14) *
Я понимаю краткость сестра таланта. В этой ветке делятся алгоритмами или разбираются в алгоритмах/математике.
Совет:
Ответы/посты, информативность которых сводиться к нулю, лучше просто не давайте здесь.
Если же отвечаете давайте более менее полный ответ на вопрос, чтобы было понятно другим.

Иначе получите на свои вопросы ответы в Вашем стиле...


Я весь алгоритм не могу расписать, т.к. алгоритм не мой, я подписывал NDA. Человек спросил про разрядность, я описал свой опыт в этом вопросе. Написал потому что если человек сделает на 16 бит все систему, то как только он начнет с реальной камерой работать, поймет что пол проекта надо переписывать. 32 битный флоат по умолчанию предполагает IEEE754, по крайней мере везде, где я с этим сталкивался, в том числе в альтервской коре, которую я использую.
Go to the top of the page
 
+Quote Post
Corner
сообщение Jan 27 2016, 13:29
Сообщение #14


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Я как бы уже написал, что для обработки достаточно 22 бит. Большего разнообразия 128х128 uchar просто дать не может (максимум, плюс 14 бит). Причем, для умножения хватит родных для ПЛИС 18sx18s. То есть коэффициенты в 18 бит со знаком достаточны, а результат второго преобразования можно округлять до 22 бит. Главное, не ошибиться в том месте, где они эти 22 бита находятся!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 11:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016