Easyelectronics.ru

Электроника для всех
Текущее время: 23 авг 2017, 20:55

Часовой пояс: UTC + 5 часов



    • JLCPCB for PCB Prototyping: 10 шт. 2-слоя 100*100mm 2$(около 140rub), изготовление за 24 часа.
    • Создание принципиальных схем и проектирование печатных плат
    • Крупнейший китайский онлайн магазин радиодеталей. Скидка 50%
    • Просмотр GERBER файлов

Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 11 авг 2017, 16:24 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
Signaller писал(а):
А с какой частотой камера делает снимки? Может действительно сделать как советовали выше, бинаризировать изображение. А дальше смотреть где изображение меняется, а где нет за некий период времени. Правда это так чисто теоретически в реале придется делать всякие поправки на местность, засветку и тп.
.
Это я получаю от камеры "на халяву": идёт поток пикселей со знаком изменения освещенности, т.е. только там где изображение поменялось будет инфа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 11 авг 2017, 17:06 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2633
а если не секрет, что это за камера такая?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 12 авг 2017, 01:22 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
Прототип бескадрового сенсора, не фабричное изделие.

Вопрос из области статистики. На изображении видно 6 кластеров (k-means работает хорошо), и видно что 4 кластера содержат плотные скопления, а два кластера в правом верхнем углу рыхлые. Как мне вычленить или сами плотные блобы, или хотя бы дисквалифицировать рыхлые кластеры? Причём валидные кластеры тоже имеют разброс данных.
По вариации и стандартному отклонению вычленить невозможно, пробовал. Глаз их видит, а как алгоритмически выделить так не получается.
Изображение

Если урезать количество кластеров до 4 тогда мусор в правом верхнем углу отбирает один кластер а два валидных скопления улетают в один из остальных кластеров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 12 авг 2017, 03:31 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2153
Откуда: Санкт-Петербург
Кластеризуйте не k-means, а, к примеру, иерархически - заодно и побыстрей будет. Например, последовательным слиянием кластеров - до достижения заданного геометрического размера.

Как вариант - точки в quad-tree, отбросить неинтересные квадраты (выбрать самые заполненные), а там уже уточнить конкретные границы кластера (например, постепенным отбрасыванием наиболее удалённых от центра масс).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 14:06 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
aamonster писал(а):
а там уже уточнить конкретные границы кластера (например, постепенным отбрасыванием наиболее удалённых от центра масс).
Не получается потому что центр кластера частенько оказывается снаружи нужного мне блоба.
Есть какая-то хорошая либка для С или матлаба чтобы работать с иерархической кластеризацией? Чтобы быстро определить точки принадлежащие к заданному кластеру. Матлабовский тулбокс под такое не заточен.
И почему иерархически быстрее чем k-means? Оно ведь n^2, все точки ко всем точкам, а k-means итеративное, но каждая итерация выполняется один раз для точки?

Ну и так и не решил проблему поиска частоты (периода) в кластере. Автокорелляция не работает, увы. Кол-во событий очень меняется, поэтому один пик событий может быть 30, а второй 10. Надо что-то более размытое. Чем больше работаю с датасетом, тем больше понимаю что к сожалению наблюдаемая частота довольно-таки плавает относительно генерируемой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 15:01 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2153
Откуда: Санкт-Петербург
Для иерархической кластеризации скорость определяется структурой данных.
К примеру, если кластеризовать слиянием или как там это называется (вначале каждая точка - кластер, потом начинаем сливать близко расположенные кластеры), и кластеры хранить в quad-tree - то поиск кластеров для слияния довольно быстр...

Но в вашем случае я бы изначально пошёл по другому пути. Не кластеризовать всё, а разбить изображение на маленькие (чуть больше ожидаемого размера кластера) квадратики и искать кластер (один) в каждом квадратике (точнее даже не в каждом, а только в квадратиках, где есть много точек). Это довольно просто (примерно как k-means, только делим точки не между кластерами, а на кластерные и мусор) и быстро (надо мало итераций).
Проблема - кластеры, попавшие на границу квадратиков, но она решается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 15:02 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2633
ничего там никуда не плавает, просто сенсор - говно.
после интегрирования в течении пары мс картинка получается грубо говоря двух битной, (с четырьмя уровнями яркости), и сигнал/шумом около 2.
имхо лучше нормальный сенсор взять вроде cmv300 из него куда лучше картинка должна получиться.
единственная радость для обработки, это то, что данные по времени можно сразу фильтровать как одномерные, без относительно их положения на картинке. Герцелем можно в пару умножений на отсчёт обойтись.
и их очень мало, по сравнению с нормальным видеопотоком 500fps.
но с другой стороны посчитать разность между двумя соседними кадрами и сделать из нормального видео то, что выдаёт ваш сенсор, вроде бы совсем не сложно.

Изображение
восстановленная картинка и после фильтра на 120, 140, 160 и 195Гц
цветные кружки - тупо положение центра масс всей картинки, поэтому иногда дергается при помехах. если считать только в небольшой области вокруг абсолютного максимума будет гораздо лучше


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 15:43 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
Как я понял, я неправильно готовлю входные данные для фурье или герцеля потому что ничего путного не получается.

Пожалуйста, обьясните как вы сделали это шаманство - эта фильтрация именно то что мне нужно. Какие параметры для ффт и как выглядят входные данные.

Я пытаюсь работать с временной гистограммой
Код:
for i=1:1000000,
  histT(timestamp(i))+=1;
Т.е получаю одномерный массив длиной от 1 до миллионного таймстампа (ок 2 сек) с количеством событий в данную микросекунду.
Потом я пытаюсь сделать как показано в матлабовском примере для Power spectral density analysis
Код:
% Choose FFT size and calculate spectrum
fsamp=1000000; %миллион отсчетов в секунду
Nfft = 1024; %1024 точки ффт
[Pxx,f] = pwelch(x,gausswin(Nfft),Nfft/2,Nfft,fsamp);
И облом.
Изображение

ЧЯДНТ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 15:51 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2633
на картинках просто дфт, то есть данные умноженные на синус/косинус соответствующей частоты.


for i=1:1000000, histT(timestamp(i))+=2*data(i)-1;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 16:06 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
Что такое data(i)?

Извините, но я действительно ни в зуб ногой в теме (((. Буду весьма признателен за кусок скрипта или псевдокод с комментариями какие операции над какими данными мы делаем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 16:36 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
Аллилуйя, братья! На меня снизошло просветление что надо много точек для ффт и сигнал должен быть со средним 0, а у меня постоянно был односторонний:
Код:
%%Working FFT!!!!
t=0:0.000001:1;;
x=histT(1:100000); %0.1 сек
x=x-mean(x); % среднее =0
y = x;
numspots=512*1024; %много точек
Y = fft(y, numspots);
Pyy = Y.*conj(Y)/numspots;
f = 1000000 * (0:255)/numspots;
figure(2), plot(f, Pyy(1:256)), grid

Изображение Я прозрел! Я вижу пики (частота удвоена т.к. я слил в одно целое позитивные и негативные события). Первый пик в районе 11 гц это калибрация сенсора, известный артефакт.

Теперь пожалуйста расскажите как отфильтровать точки по заданной частоте. Вот это умножение на синус-косинус, чтобы получилось как в гифке _pv - это именно то что мне надо получить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 16:50 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2633
count_enable писал(а):
Что такое data(i)?

smallp.csv


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 17:32 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
_pv писал(а):
count_enable писал(а):
Что такое data(i)?

smallp.csv
Спасибо, дотумкал.

Пожалуйста, обьясните мне как написать узкополосный частотный фильтр для моих данных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 18:04 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2633
алгоритм Герцеля


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 13 авг 2017, 19:03 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
Герцель возвращает магнитуду сигнала на заданной частоте в полученной выборке. Я могу Герцелем быстро найти характерестические частоты (уже разобрался как), но как с его помощью фильтровать данные? Что ему надо дать на вход? Как вы сгенерили свою гифку?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 14 авг 2017, 00:13 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2633
так интересен же наверное не чистый отфильтрованный синус сам по себе, а его амлитуда. тем более что диоды скорее всего не синусом, а меандром питаются.
на картинке норма интеграла Фурье в 50мс окне, которое по 12.5мс сдвигается.
полоса получается 20Гц, если меньше, то разные диоды начинают друг дружке уже мешать у них частота на 20Гц и отличается.
на вход подавал данные из smallp.csv c соответствующей меткой времени.
Герцель даст абсолютно тот же результат просто без вычисления тригонометрии.
только Герцелю сетка по времени равномерная нужна, соответственно данным надо передискретизацию делать. что тоже не сильно сложно и в пару умножений на отсчёт делается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 14 авг 2017, 00:45 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
А как эту норму интеграла Фурье посчитать? У меня в универе ЦОС не было, я понятия более-менее выучил но как из одного получить второе - увы. Комплексные числа тоже понимаю поверхностно :(.

Вот беру я 50 мс окно. У меня есть вектор таймстампов smallt, из него и smallp я делаю гистограмму histT. Теперь я могу применить к гистограмме алг. Гёрцеля и получить магнитуду сигнала для искомой частоты. Могу так же посчитать спектр БПФ и получить преобразование Фурье для каждой точки. Каковы дальнейшие мои шаги? Что на что умножить, поделить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 14 авг 2017, 02:40 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2633
Герцелю нужна равномерная сетка по времени.

Фурье:
перемножить с косинусом, проинтегрировать == Re
перемножить с синусом, проинтегрировать == Im
Norm = Sqrt[Re^2+Im^2]

код математики, если поможет:
Код:
data = Import["d:\\download\\smallstream.mat"][[;; , ;; , 1]];
sx = Max[data[[3, ;;]]] + 1;  (*240*)
sy = Max[data[[4, ;;]]] + 1;  (*180*)
pic = Table[{0, 0}, {sy}, {sx}];

//найти диапазон i который соответствует окну по времени и цикл i по окну:
pic[[data[[4,i]] + 1, data[[3,i]] + 1]] += {(2*data[[1, i]] - 1)*Cos[2.0*Pi*freq*data[[2,i]]], (2*data[[1,i]] - 1)*Sin[2.0*Pi*freq*data[[2,i]]]};

pic = Map[Norm, pic, {2}];
pic /= Max[Flatten[pic]];


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 14 авг 2017, 03:17 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
Спасибо большое! С кодом гораздо понятнее.
Сначала я знак эвента умножаю на косинус...как задается частота freq? Через период т.е 1e6/200 или как-то иначе? Надо ведь знать частоту дискретизации ведь.
У меня получается два вектора: один с синусом второй с косинусом.
Потом я считаю норму вектора.
pic = Map[Norm, pic, {2}]; - маппинг функция по второму измерению вектора pic, да?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 14 авг 2017, 03:39 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2633
да через период, только 200/1e6
в каждом пикселе получается вектор из двух значений, интеграла (там +=) с синусом и с косинусом, вместо этого комплексного значения берётся его амплитуда


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 14 авг 2017, 16:03 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
Ура! Получилось. Бесконечно вам признателен. Правда все еще есть шероховатости.

У меня родилась концепция двигающегося окна: когда мы добавляем i-тый эвент {(2*data[[1, i]] - 1)*Cos[2.0*Pi*freq*data[[2,i]]], (2*data[[1,i]] - 1)*Sin[2.0*Pi*freq*data[[2,i]]]};
мы можем сразу отнять i-WindowLength эвент. И каждые несколько мс просто находить норму вектора. Это сработает?

Я правильно понял что все равно я не смогу быстрее отслеживать маркеры чем минимальная частота мигания? Тогда можно децимировать частоту замера с 1е6 на несколько порядков простым усреднением Х значений. Это поможет уменьшить загрузку проца. Не потеряю ли я какие-то данные?

По гёрцелю. Нетрудно перескалить данные в "псевдокадры" каждые 0.1 мс например. Но как именно потом применить гёрцель к такому вектору? Гёрцеля уже ручками написал, он мне нравится своей итеративностью.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 14 авг 2017, 20:46 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
Дополнительный вопрос, кроме Гёрцеля:

Какие методики можно попробовать чтобы уменьшить время, необходимое на распознание и увеличить стойкость против шума? Сейчас буду пробовать делить кадр на перекрывающиеся на 50% регионы и считать отдельно по каждому региону. Должно усилить сигнал\шум внутри отдельно взятого региона. Как aamonster советовал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 14 авг 2017, 23:37 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2633
если у гугла спросить про sliding dft, он много чего интересного расскажет.

можно ещё про что-то вроде фапч подумать, но который не только за частоту хватается, но и за положение на картинке.
считать разность предсказанной картинки и реальной на 3х соседних частотах * 9 положений вокруг предыдущего и соответственно подстраивать частоту и положение.

а разве есть проблемы с вычислительной сложностью четырёх Герцелей на 1МГц?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 15 авг 2017, 17:13 
Старожил

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2486
_pv писал(а):
считать разность предсказанной картинки и реальной на 3х соседних частотах * 9 положений вокруг предыдущего и соответственно подстраивать частоту и положение.

а разве есть проблемы с вычислительной сложностью четырёх Герцелей на 1МГц?

Спасибо, буду про слайдинг дфт читать. Проблем со сложностью никаких нет, я просто спрашивал может есть какой-то другой супер-способ, но тяжелый по вычислениях.

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

Поэтому меня так интересует именно поиск с нуля - постепенные апдейты худо-бедно работают. Что пока не продумано это как быстро определять наличие маркера вообще. Сейчас если один из маркеров пропадает, то благодаря адаптивному алг-му он еще некоторое время "угасает", потом запускается поиск но это съедает несколько циклов (циклов частоты маркера, а не проца), и для самых медленных маркеров получается что время послесвечения доходит до 1\20 секунды что отстойно даже по сравнению со средней пром. камерой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 15 авг 2017, 22:15 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2633
ну так "тебе ж говорят музыкасенсор - говно, а ты споришь" (с)
если частоты отличаются на 20Гц, и с/ш не особо больше единицы, то тут природу никак не обмануть, 1/20 секунды надо понаблюдать чтобы частоты отличить.
раз сенсор умеет до 1МГц - задирайте частоту маркеров, чтобы с камерами соревноваться.
на низкой частоте обычный сенсор будет работать куда лучше.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB