|
Обработка видео |
|
|
|
Sep 2 2016, 06:25
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Стоит задача: В области электронной микроскопии реализовать формирование строчной и кадровой развертки для системы отклонения и обработку видеосигнала с максимальными параметрами 1024х1024 50Гц. Предыдущий вариант системы работал с максимальным разрешением 480х480 10Гц и был реализован на STM32F437. Развертки были сделаны на внешних ЦАП (SPI). Оцифровка изображения на встроенном АЦП в dual mode (примерно 2,5 мегасемпла). Видеобуфер во внешней памяти и на комп данные предавались без предварительной обработки через Ethernet на комп, где и отображалась картинка. Так как практически всё делалось через DMA, то в контроллере оставалась ещё уйма свободного времени для фоновых задач. Но по новому ТЗ скорость обработки надо увеличить в 20 раз, что нереально в такой конфигурации. Пока на ум приходит только следующее: 1. С помощью видеокарты с аналоговым выходом и поддерживающей HD качество формирую пилообразные развертки (сигналами цветности) и синхроимпульсы. 2. Развертки через усилители подаются на систему отклонения, а синхроимпульсы подмешиваются к сигналу с датчика изображения (яркости). 3. Сформированный видеосигнал подается на плату видеозахвата, поддерживающую соответствующее качество. В теории должно сработать. Вопрос: может быть есть специализированные контроллеры, девайсы, которым по зубам эта задача? Или может есть совсем другое решение, до которого я не смог додуматься?
|
|
|
|
|
Sep 2 2016, 07:40
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Цитата(DASM @ Sep 2 2016, 10:41)  Ничего не понял.. ТЗ непонятно. А так да, СТМ в видео делать нечего, есть спецпроцы, та же серия DaVinchi у TI. Хотя то, что вы описали - тут наверное все проще, ибо никакой "обработки" вообще не узрел С одной стороны просто, так как на нижнем уровне обработка не предполагается, а вынесена на верхний уровень. С другой стороны нужно оцифровать аналоговый сигнал и передать на комп изображение в 1 млн. пикселов с частотой 50Гц. По принципу действия: Есть отклоняющая система для электронного луча, которая формирует растр. Луч сканирует образец. Строчная и кадровая развертка представляют собой пилообразные сигналы. Датчик улавливает отраженные электроны. Выходное напряжение датчика пропорционально профилю поверхности образца. Далее полученное изображение нужно отобразить на экране монитора и записать на носитель. Если это всё можно сделать на МК, то буду рад, если предложите варианты. Пока я увидел только один вариант, который описал ранее. Из обработки предполагается реализация: изменение контрастности и яркости, фильтрация с целью шумоподавления.
|
|
|
|
|
Sep 2 2016, 10:26
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата(jcxz @ Sep 2 2016, 16:02)  Тогда есть шанс реализовать на связке LPC4370+FT601Q. а смысл? 4370 конечно по отношению цена/качество самый лучший АЦП, отдельных АЦП 12бит*80Мспс за 6$ пожалуй вообще не найти. но ТСу одно устройство надо, из готового LPCLink2 с 4370, параллельную шину для подключения FT601Q не вытащить, а делать плату для LPC4370 в БГА - проще найти что-нибудь готовое и более подходящее. та же redpitaya полностью перекрывает все его потребности по железу. Можно попробовать немного поджать картинку (так как памяти у LPCLink2 тоже нет - то построчно и на лету, но на это уже у него не хватит силёнок так как только 4 такта на отсчёт получается) или немного пожертвовать разрешением. Если 8 бит хватит, то данных там 50МБ/сек, надо лишь до 35-40 ужать чтобы чтобы в USB2 пролезла, и обойтись тогда только готовым LPCLink2 в качестве видеограббера.
|
|
|
|
|
Sep 2 2016, 15:33
|
Участник

Группа: Свой
Сообщений: 45
Регистрация: 8-01-06
Из: Петербург
Пользователь №: 12 944

|
Цитата(amiller @ Sep 2 2016, 09:25)  Стоит задача: В области электронной микроскопии реализовать формирование строчной и кадровой развертки для системы отклонения и обработку видеосигнала с максимальными параметрами 1024х1024 50Гц. Предыдущий вариант системы работал с максимальным разрешением 480х480 10Гц и был реализован на STM32F437. Попробуйте подойти к вопросу с другой стороны. Не существует электронных микроскопов, которые давали бы честные 1024х1024 50 Гц. Дело вовсе не в АЦП, а в электромагнитной системе отклонения -- физической особенности прибора. На таких больших частотах (50k строк в сек.) будут просто огромные искажения левой половины изображения, такие, что высокое разрешение совсем не актуально. Там лишь бы что-нибудь разглядеть. Даже на современных приборах требование 256x256 50Гц было бы с небольшим запасом. В вашем случае, как ориентир, я бы брал 100нс/пиксель. Т.е. менее 10 Мбайт/с на максимальной скорости. Те микроскопы, что всё-таки позволяют работать на больших скоростях развёртки применяются для нанолитографии и стоят просто космических денег. Наверное заказчику требуется отдельно режим высокого разрешения (1024х1024 или даже болшьше) и отдельно режим высокой скорости обновления (256x256 до 30 Гц, дальше только если с усреднением по строчкам). Если заказчик понимает о чём речь, то думаю, что вы сможете скорректировать ТЗ. В таком случае вы сможете использовать старое решение с небольшими изменениями. Например перейти на STM32F7 c 32-бит SDRAM и немного разогнать встроенный АЦП. Для формирования сигнала отклонения также не обязательно использовать высокоскоростные ЦАП. Можно просто пропустить выходной сигнал через ФНЧ, а при захвате строки отбросить первые 1-5% её части. Потребуется настройка задержки для каждой скорости развёртки, но такая настройка есть во всех подобных устройствах, и связано это, опять же, с быстродействием электромагнитной системы и детектора электронов. Используя медленный ЦАП вы экономите ресурсы DMA, оставляя весь канал под АЦП-Ethernet. На счёт обработки - яркость/контраст лучше делать аналоговым спососбом, штатными средствами прибора. А вот кроме фильтрации может быть очень полезно получение из прибора значения увеличения (масштабной метки).
|
|
|
|
|
Sep 2 2016, 16:15
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Цитата(ivan2006 @ Sep 2 2016, 19:33)  Попробуйте подойти к вопросу с другой стороны. Не существует электронных микроскопов, которые давали бы честные 1024х1024 50 Гц. У нас не совсем микроскоп, хотя принцип работы тот же. Я допускаю, что заказчик не совсем понимает, что ему нужно, но стоит на своем. И у меня два пути: 1. На имеющемся железе реализовать примерно 256х256 50Гц, а недостающие пикселы нарисовать. Это я всегда успею сделать. 2. 2 вариант - попытаться обеспечить честное разрешение. Пока самым перспективным вижу использование платы видеозахвата. Так как изделие эксклюзивное, то цена не особо беспокоит. То что касается разверток, то пока провел эксперименты с видеокартой. С синхроимпульсами всё в порядке. Строчная развертка тоже выглядит отлично, красивая пила. Правда в сигнале присутствуют импульсы гашения во время обратного хода луча, но для строчной развертки это скорее даже плюс. А вот то что в кадровой развертке присутствуют импульсы гашения, это скорее минус. Маловероятно, что простыми способами удастся как то управлять длительностью или амплитудой этих импульсов. Но тем не менее что-то получилось, можно пробовать дальше. Если не прокатит, то уж 50кГц пилу не так сложно сделать и на контроллере. В крайнем случае уменьшить количество пикселов а потом подфильтровать. То что касается системы отклонения, то проблема решаемая. Сейчас обеспечивается пилообразный ток вполне приличного качества на частоте 5кГц (с 10% обратным ходом). И понятен путь, как разогнать отклонялку до 50кГц. По аналоговой части видеоусилителя тоже всё достижимо.
|
|
|
|
|
Sep 2 2016, 16:39
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата Пока самым перспективным вижу использование платы видеозахвата. Так как изделие эксклюзивное, то цена не особо беспокоит. с нестандартным разрешением/частотой кадров грабли могут возникнуть. а чем redpitaya не подходит? сразу на одной плате всё что надо и ЦАПы для развёрток и АЦП с большим запасом и гигабитный езернет чтобы данные забрать. тем более что предыдущий вариант тоже с езернетом был
|
|
|
|
|
Sep 3 2016, 05:46
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Даже не понижая требований посчитаем: 1024*1024*50*2 = 104857600 B/sec - требуемая скорость передачи в комп. Если для передачи в комп возьмём FT601 - за такт в её FIFO можно загружать 32бита. Получаем: 104857600/4 = 26214400 слов/сек. Поделим макс. тактовую ядра на полученную скорость потока: 204000000/26214400 = ~7.78 такта/слово. Маловато конечно, но! Например SGPIO-периферия LPC4370 работает на частоте ядра (SGPIO_CLOCK), но макс. частота сдвига битов по даташиту: "Note that the input frequency should be less than half of the SGPIO_CLOCK frequency". А это много меньше чем 7.78такта. И SGPIO допускает внешнее тактирование, что (как я понимаю) совместимо с протоколом "245 Synchronous FIFO" FT601. АЦП LPC4370 имеет FIFO глубиной 16 слов и умеет упаковывать свой выходной поток в 32-битные слова. Соответственно: из АЦП получаем поток 26214400 слов/сек. Также DMA-контроллер в этом LPC имеет 2 BusMaster-интерфейса, что позволяет ему (вроде как) одновременно читать/писать периферию и писать/читать память за один такт (например: один BusMaster читает следующее слово из периферии, другой - в это же время пишет предыдущее слово в ОЗУ). Так что думаю вполне возможно организовать работу так, что: пакетными DMA-пересылками заполняем один 4К-буфер в ОЗУ из FIFO АЦП. В это время другой 4К-буфер пересылается через SGPIO в FT601 (SGPIO тоже имеет FIFO) также пакетными DMA-транзакциями. Можно даже попробовать гнать исходящий поток в FT601 через обычный GPIO в фоновой задаче без DMA. Надо внимательнее изучить даташиты. Либо может ещё лучше - согласовать EMC-интерфейс LPC с шиной FT601 - это был-бы самый оптимальный вариант. А если немного снизить требования по кадровой частоте например до ~39fps, то получим уже: 1024*1024*39*2/4 = 20447232 слов/сек, т.е. примерно ~10 тактов/слово - думаю такой поток уже вполне реально вывести из LPC4370 через GPIO или SGPIO или EMC. Так что можно построить систему ТС-а так же как и в его предыдущей версии: на одном МК, только заменив его. И не надо забывать что LPC4370 имеет 3 ядра, пока одно ядро гонит поток из АЦП наружу (или управляет DMA, делающее это), другое ядро может рулить внешниим ЦАП-ами. Ещё вариант ускорения: так как SGPIO и АЦП имеют собственные FIFO, то может вообще получится гнать поток напрямую АЦП->SGPIO минуя ОЗУ. А может это даже лучше делать не через DMA, а одному из ядер, благо их 3 и они могут работать не мешая друг другу.
|
|
|
|
|
Sep 3 2016, 09:56
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата согласовать EMC-интерфейс LPC с шиной FT601 - это был-бы самый оптимальный вариант. А если немного снизить требования по кадровой частоте например до ~39fps, то получим уже: 1024*1024*39*2/4 = 20447232 слов/сек ТС присматривался к видеограбберу значит 8 бит ему похоже достаточно (можно даже логарифмирование сделать из 12 в 8, а не просто отбросить младшие разряды), и если уж понижать fps до 39 то тогда эти 39МБайт/c можно и через USB2 попробовать пропихнуть, без ухищрений с usb3. и для этого взять готовую плату lpclink2 за 20$. и ещё придётся делать свою плату под это, ради единственного устройства, а корпуса у lpc4370 не самые приятные, особенно если 32х разрядные шины из него вытаскивать, а не просто входы АЦП и USB. и вот тут я вообще никакой радости по сравнению с готовой redpitaya не вижу.
|
|
|
|
|
Sep 3 2016, 11:24
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Цитата(_pv @ Sep 3 2016, 13:56)  ТС присматривался к видеограбберу значит 8 бит ему похоже достаточно (можно даже логарифмирование сделать из 12 в 8, а не просто отбросить младшие разряды), и если уж понижать fps до 39 то тогда эти 39МБайт/c можно и через USB2 попробовать пропихнуть, без ухищрений с usb3. и для этого взять готовую плату lpclink2 за 20$.
и ещё придётся делать свою плату под это, ради единственного устройства, а корпуса у lpc4370 не самые приятные, особенно если 32х разрядные шины из него вытаскивать, а не просто входы АЦП и USB. и вот тут я вообще никакой радости по сравнению с готовой redpitaya не вижу. Действительно пока я считаю, что 8бит (256 градаций серого) в изображении достаточно. По крайней мере предыдущее устройство работало именно в таком режиме. Если сравнивать: lpc4370 - с одной стороны уже опробованный способ реализации. С другой стороны всё на грани фола и без запаса. Кроме того значительную часть времени придётся потратить на проектирование железа без гарантии успеха. redpitaya - приятно удивила по параметрам. Как то мимо меня прошла. Присмотрюсь повнимательнее. По возможностям похоже то, что доктор прописал. Насколько быстро удастся её освоить...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|