Easyelectronics.ru

Электроника для всех
Текущее время: 26 май 2019, 20:26

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

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

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2879
Вляпался по неосторожности в ЦОС, совсем не мою область.

Есть светодиод. Он мигает с частотой около 200 Гц. Есть бинарный вектор. семплированный с частотой 1 мкс. Вектор бинарный, т.е. 0,1, амплитуды нет. Есть довольно много нестационарного шума.
Задача: найти фазу сигнала за минимальное количество семплов. Частота известна.
Сразу на ум пришло преобразование Фурье, но я не знаю как его применять в такой ситуации. Что подскажете?


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

Зарегистрирован: 05 фев 2013, 00:58
Сообщения: 3519
В семпле находишь фронт, спад и еще один фронт, делишь период пополам, смотришь, где относительно середины спад, делишь разницу пополам и отнимаешь это от фронта - это и будет точка нуля фазы.


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

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2879
В сигнале много шума. Надо по статистике отличать включение светодиода от паразитного сигнала.


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

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

но раз известно что сигнал прямоугольный то и множить лучше не на синус/косинус, а на меандры со сдвинутой на 90гр фазой.

сигнал бы сюда прикрепили чтобы было понятно о каком шуме идёт речь.


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

Зарегистрирован: 05 фев 2013, 00:58
Сообщения: 3519
Отфильтровать программно, найти пересечение нуля, вычесть константу - время задержки фильтра.


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

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 648
Откуда: Германия
https://blog.blinkenlight.net/experimen ... detection/ - в его случае частота известна (1 Гц), неизвестна длительность единицы (либо 100, либо 200 мс), примерно каждая 60-я единичка отсутствует. Работает при шуме 98%.


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

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3113
Фильтр Калмана неплохо так фильтрует шумы. В инете есть примеры реализации на Си или Си++


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

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 2471
Откуда: Русь, Новороссийск
_pv писал(а):
сигнал переменожить с косинусом заданной частоты, просуммировать, сигнал переменожить с синусом заданной частоты, просуммировать, арктангенс отношения этих двух сумм - искомая фаза.
но раз известно что сигнал прямоугольный то и множить лучше не на синус/косинус, а на меандры со сдвинутой на 90гр фазой.
Причём после первичной синхронизации дальнейший поиск фазы делать только во "временнЫх окнах возможной смены фазы".


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

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


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

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2879
Большое спасибо всем за советы, но увы, они все чуть выше моего уровня.
Я пока не могу понять как перевести двумерную однобитную информацию в непрерывный сигнал к которому применимы алгоритмы ЦОС.

Дело в том что у меня не видеокамера а датчик немного другого принципа. Данные идут не покадрово а попиксельно в формате: Х,У пикселя, полярность (включился или выключился) и абсолютная временная отметка (т.е. от общего нуля, а не дельта). Время считается с дискретностью в 1 мкс.

Прикрепил файлы с данными в CSV здесь https://ufile.io/q8tb9 . Если просуммировать первые 2000 событый, получится такое вот изображение: Изображение
Здесь видно 4 ярких точки - мигающие маркеры, и сетку которая просто визуальный мусор.

Экспериментально установлено что к сожалению частота немного плавает, даже не сама частота а скорость засечки диода камерой. В зависимости от угла зрения она может быть короче или длиннее.

Буду очень благодарен за детальные разъяснения, т.к. форма задачи отличается от хотя бы слегка привычной задачи "вот вектор значений, профильтруйте его". Если у кого-то есть рабочее решение, можем обсудить оплату.


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

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 3975
Откуда: г. Липецк
count_enable писал(а):
...Задача: найти фазу сигнала за минимальное количество семплов. Частота известна.
Сразу на ум пришло преобразование Фурье, но я не знаю как его применять в такой ситуации. Что подскажете?

Фурье позволяет оценить спектральные составляющие сигнала, но как к ним привязаны фазовые? К примеру у вас 2 (3 и т.д.) сигнала одной частоты, но с разными фазовыми сдвигами. БПФ увидит только один спектр, нужен другой алгоритм.


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

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2579
Откуда: Санкт-Петербург
count_enable, а что надо получить в итоге? Координаты 4 точек и фазу для них? Или вы можете заранее задать координаты светодиодов на картинке, и нужно для этих координат выдать результат?

По тупому: фактически у вас задача сводится к той самой "вот вектор значений, ..." - просто вектор значений задан в _каждой_ точке. 180*240 одинаковых задач =). Но на практике всё это оптимизируется. Самое простое - задать координаты светодиодов и посчитать только в них, но это не самое устойчивое решение. Несколько более устойчивое - посчитать для каждого диода сумму значений пикселей в его окрестности (делается быстро: идём по данным, если координаты попали в область диода - в соответствии со значением увеличиваем/уменьшаем сумму для него).


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

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2879
aamonster писал(а):
count_enable, а что надо получить в итоге? Координаты 4 точек и фазу для них? Или вы можете заранее задать координаты светодиодов на картинке, и нужно для этих координат выдать результат?

Нет, изначальные координаты неизвестны, к тому же возможна ситуация когда камера видит не все маркеры. Известна частота и макс. количество маркеров на сцене.
Надо за минимальное время найти координаты диодов, при условии что они могут довольно быстро двигаться (скажем 5 пикс за мс). Нахождение фазы сильно облегчает задачу постоянного трекинга.
Делать бпф или какую-то фильтрацию попиксельно смысла нет потому что маркеры могут перемещаться и скореллировать один пиксель не получится. Я начал думать о частотном анализе именно под углом минимизации числа вычислений, сейчас задача решается очень громоздко и неэлегантно.


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

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3193
файл с временем в нормальном формате сделайте.
там к концу знаков после запятой не хватает


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

Зарегистрирован: 05 фев 2013, 00:58
Сообщения: 3519
anakost писал(а):
Фурье позволяет оценить спектральные составляющие сигнала, но как к ним привязаны фазовые? К примеру у вас 2 (3 и т.д.) сигнала одной частоты, но с разными фазовыми сдвигами. БПФ увидит только один спектр, нужен другой алгоритм.

Здрасьте приехали. На выходе БПФ два массива, вещественный и мнимый. Через арктангенс в одно вычисление находится фаза относительно нулевого отсчета.


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

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2879
_pv писал(а):
файл с временем в нормальном формате сделайте.
там к концу знаков после запятой не хватает

Странно, импортнул в матлаб и вроде как нормально. Вот новый файл https://ufile.io/wwq9k
Последняя метка 2009200 (т.е запись идет 2 секунды). Могу мат-файл выложить если надо.


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

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3193
проблема в том что предпоследняя тоже 2009200.
после 99999 формат числа становится 1.000е5 и идёт округление до десятков, и потом и до сотен.


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

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2579
Откуда: Санкт-Петербург
Вообще отлично. Значит, фаза сама по себе не нужна, просто облегчает поиск?
А мигают все диоды в такт? Тогда никакого "поиска фазы за кратчайшее время", можно просто тихонько подстраиваться по мере работы основного алгоритма.

Основная идея: забываем пока про попытки использовать частоту, ищем локальные максимумы по картинке, осреднённой за какое-то время. Время либо короткое (тогда маркеры будут появляться-пропадать), либо 1 кадр (1/200 секунды, раз 200 Гц мерцание). Тут есть тонкости в плане поиска - грубо говоря, что если нашли один маркер - прямо рядом с ним искать не надо; шустрое решение для этого - разбить изображение на квадратики, найти максимум (и его координаты) в каждом, а потом выбрать из найденных максимумов.
Следующий шаг: хотим использовать 200 Гц для повышения избирательности. Простейшее решение: если пиксел горит - через 1/400 секунды его окрестности "ослеплены", так мы придушим ложные максимумы. Можно пойти и дальше (например, сделать фильтр, который будет выделять именно частоту 200 Гц), но надо помнить, что чем дальше назад по времени - тем большую окрестность надо принимать во внимание.

Простое решение, экономящее время: "снэпшоты" из прошлого хранятся в низком разрешении.
Например, накапливаем кадр осреднением за 1/800 секунды, а для "памяти прошлого" уменьшаем его в 4 или 8 раз и потом разок блюрим простейшим фильтром по 4 соседям. Для поиска максимумов - вычитаем из текущего кадра тот, что был 2 кадра (1/400 с) назад. Или просто храним прошлые кадры в том же разрешении, заблюривая их осреднением по квадрату.

Там ещё будут сложности - типа того, что максимум не чётко выражен, и в идеале искать надо пятна, определяя центр пятна... Но это преодолимо. По крайней мере, у вас тут нет приколов типа пересечения траекторий объектов (когда-то довелось решать такую задачку)

P.S. А если для экономии вначале ловить мерцание 200 Гц и синхронизироваться по нему - то можно просто брать для этого среднюю яркость по кадру (количество засвеченных пикселей) Y(t), это уберёт координаты. Тогда можно обсчитывать отдельно "светлые" и "тёмные" полукадры (по 1/400 для высокого и низкого значения Y(t) соответственно).


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

Зарегистрирован: 27 янв 2010, 07:40
Сообщения: 5265
Откуда: Новосибирск
Еще один товарищ поленился описать всю задачу. Банить бы таких))

_________________
Ищу работу.


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

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2879
Пользуясь случаем, посылаю лучи поноса программистам функции csvwrite в Матлабе. Как клоп на белой блузке, обычно матлаб очень высокого качества, за что я его и люблю.

https://ufile.io/kjf6p - только таймстампы в цсв, исправленные (проверил экселем).
https://ufile.io/5jji8 - мат-файл с переменными.

Часты множественные события с одинаковым таймстампом, это норма.
Как сенсор видит маркер: маркер вспыхивает - получаем серию событий полярностью 1 (увеличение освещения), потом событый нет, потом маркер гаснет и получаем серию событий полярностью 0(уменьшение освещения), и снова событий нет. Т.е. что-то типа edge detection. В реале при меняющемся освещении и 50Гц бликах от ламп эти края и их длительность довольно размыты.
Сейчас сделано похоже на идею aamonster: делим кадр на перекрывающиеся на 50% регионы и считаем статистику по регионам, потом смотрим на корелляции.


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

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3193
опять не удалось :)
формат-то поменяли, но данные всё равно остались с округлением.
то есть они и в .мат файле уже округлены.
ну и ладно, ошибка в 100мкс для частоты 100Гц не сильно много.


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

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2879
Да, это что-то с вычиткой данных из сенсора, где-то в дровах или либке косяк, потом поправлю. Пока что точность и так выше чем надо. А вот с чётким срабатыванием не всегда получается, освещение очень влияет.


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

Зарегистрирован: 25 авг 2011, 14:00
Сообщения: 2879
Вот попутный вопрос: во вложенных файлах содержится сумма событий в выбранном регионе на протяжении некоего времени. Как мне вычленить частоту из такого временного ряда?
Mat-файл переименован в тхт потому что на форуме запрещены мат-файлы и непонятные расширения.
Изображение


Вложения:
temp_hist.txt [924 байт]
Скачиваний: 108
temp_hist.csv [67.15 Кб]
Скачиваний: 109
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: БПФ бинарного сигнала, поиск частоты и фазы
СообщениеДобавлено: 11 авг 2017, 13:58 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2579
Откуда: Санкт-Петербург
Автокорреляция, полагаю.


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

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 1970
Откуда: Киев
А с какой частотой камера делает снимки? Может действительно сделать как советовали выше, бинаризировать изображение. А дальше смотреть где изображение меняется, а где нет за некий период времени. Правда это так чисто теоретически в реале придется делать всякие поправки на местность, засветку и тп.

Кстати, а может посмотреть на алгоритмы opencv вроде Оптический поток в opencv или тп.


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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