Как стать автором
Обновить

Комментарии 12

Матморфология на fpga — весьма интересно…
Вопросы:


  1. Как насчёт opening/closing by reconstruction? (если вы вдруг не в курсе — погуглите; очень важный алгоритм — позволяет убрать мелкие пятна, не искажая форму объектов, но я не уверен, что фазу реконструкции удастся хорошо положить на fpga)
  2. Почему вы решили, что серии открытий/закрытий могут заменить median filter? Принципиально другой алгоритм, с другими свойствами...
Решил так потому, что меня интересует только и только результат на выходе фильтра. Мне надо убрать мусор с бинаризированной разницы кадров. Я сравнил два способа и сделал выводы.

Хм… Разница кадров… Интересненько, тут и правда opening/closing могут оказаться даже лучше медиааны.
Бинаризированная — в смысле, sign(A-B) или abs(A-B)>threshold?
Второй случай точно на erode/dilate лучше ложится, шум больно специфический будет, да и надо не столько шум убирать, сколько дырки закрывать.


Выделять объекты (если вам это надо) планируете по связным областям или как более-менее компактные пятна "единиц" (например, уменьшив разностное изображение осреднением по квадратам, найдя максимумы и потом уточнив форму объектов по изображениям более высокого разрешения)? Если второе — может оказаться, что фильтровать заранее не так уж и нужно.

Да, abs(A-B)>threshold. Начало в этой статье, я там более подробно расписал что и как делаю.
По связным областям, так мне более понятна реализация.
Тоже когда-то реализовывал морфологию по этому алгоритму. Дальше можно еще прикрутить поиск связанных областей в один проход: http://ieeexplore.ieee.org/document/7137657/. Ну а потом уже запускать нейросетку чтобы идентифицировать движущиеся объекты.
Да да, именно блобами я сейчас и занят, но только пока на бумаге. Много статей уже прочитал, но пока нет осознанной архитектуры в голове. Есть проект уже с исходниками, но я копировать не хочу, мне интересно свою архитектуру придумать.
Вот и PDF есть: http://seat.massey.ac.nz/research/centres/SPRG/pdfs/2015_CASVT_PP.pdf. Рекомендую сначала написать программную модель, там достаточно сложный FSM когда он деревья уплотняет. Поэтому стоит разобраться в деталях перед тем как RTL писать.
Спасибо! Этот документ я ещё не читал. В целом, основные состояния алгоритма я себе представляю и стейтмашину на бумаге уже накидал. Да, сначала сделаю на Си, а потом уже в железе.
Я не знаю точно Вашей специфики, но такое разложение матрицы будет работать если ранг оконной матрицы равен единице, либо при значительном доминировании первого собственного числа оконной матрицы. В ином случае погрешность может оказаться значительной.
P.s. А с какими потоками данных работаете и как организуете ввод?
Данные — нули и единицы 1 бит. Ввод потоком из однобитного FIFO пока в нем есть данные.
Ну как я понимаю, там и так ранг матрицы равен единице поскольку в матрице одни только единицы.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории