March 26th, 2021

QuatCore

Обнаружение на БИХ 1-го порядка - может и заработать.

Жизнь возвращается в норму: "Critical warning - Timing constraints were not met" как-то рассосался сам собой при следующем синтезе, когда я вспомнил, что прерывания надо вернуть на место. И с прерываниями получение изображения заработало нормально, так что я смог-таки всунуть свой БИХ-фильтр "по горизонтали" и посмотреть, что из этого получается:



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

Тут самое паршивое, что левое пятно "наползло" на соседа, напрочь потеряв свой максимум!

Это у нас "уровень 6", то бишь исходный сигнал делится на 26 = 64, и прибавляется к прошлому значению, умноженному на 63/64, таким образом обеспечивая сильную фильтрацию.

Дальше всё-таки понял, что "играться" будет проще на компьютере, и уже там реализовал фильтрацию по обеим осям, с возможностью менять "частоту среза". Была пара соображений, почему из этого всё-таки может что-то получиться.

Collapse )



Забавный метод! Мы просто прогоняем картинку через 2 линейных фильтра, затем ищем локальные максимумы (то есть когда один пиксель ярче всех 8 своих соседей) - и все их добавляем в качестве "обнаруженных пятен". Никакого процессора не надо, никаких связанных списков, выделения памяти, злобных FIFO на вход и выход и пр.

Хотя до памяти метод всё-таки слегка прожорлив, ему надо аж 3 килобайта. Но есть их у нас :) Разве что на 5576ХС6Т всё-таки вряд ли, там их всего 5, но нужно и под остальное что-нибудь оставить.

PS. А ведь можно забабахать БИХ второго порядка, у которого импульсная характеристика будет sin(ωt) * exp(-t/τ) и при подборе ω по искомому диаметру пятна и добротности порядка 0,5..1 (чтоб не звенело по чём зря) получится куда симметричнее, и даже этот "звон" немножко должен помочь от "склеивания" соседних пятен, мне так представляется.