новые флеш игры.

3D-видео на основе ПЛИС

Родительская категория: Центр знаний Категория: Обработка сигналов

Шаблоны Joomla здесь.

В статье рассмотрены условия получения стереоскопического эффекта (объемного видео) с помощью двух видеокамер. Описана система, соединяющая два видеопотока в один стересокопический. Также описан метод представления сигнала в формате side-by-side(два потока рядом).

3d-camera at FPGA

Конструируем видеосистему 3D на основе FPGA

Видеосистемы, имеющиеся едва ли не во всех бытовых устройствах, все больше проникают в другие области: автомобильную электронику, робототехнику, промышленное оборудование. Расширение области применения обусловлено появлением стандарта HDMI, а также повышением быстродействия и эффективности FPGAи сигнальных процессоров.

 

Структура видеосистемы 3D

Для системы стереоскопического зрения требуется две видеокамеры, расположенные на расстоянии примерно 5,5 см друг от друга (см. рис. 1). Это типичное расстояние между зрачками глаз человека.

Общая структурная схема системы приведена на рисунке 2. Камеры синхронизованы и используют один и тот же стандарт видео. Тактирование камер производится одним источником, чтобы частота следования кадров была одинаковой.

Рис.2 Структура видеосистемы

STEREOSCOPICSTREAM– стереоскопический поток

CAMERA- камера

SYNCHRONIZED(LINE-LOCKED) CAMERAS– синхронизованные (с привязкой к линии) камеры

VIDEODECODER- видеодекодер

 

На рисунке 3 показан принцип объединения двух видеопотоков с привязкой в стереоскопическое изображение. В случае отсутствия синхронизации используется внешняя память для хранения видеокадров (см. рис. 4).

Рис.3 Принцип объединения потоков

CAMERA - камера

VIDEO (LINE-LOCKED) - видеопотокспривязкойклинии

LEFT FRAME – левыйкадр

RIGHT FRAME – правыйкадр

SIDE-BY-SIDE STEREOSCOPIC VIDEO – стереоскопическийвидеосигнал

 

Рис.4 Принцип объединения потоков, с использованием внешней памяти 

CAMERA - камера

VIDEO(NOTLINE-LOCKED) - видеопоток без привязки к линии

LEFT FRAME – левыйкадр

RIGHT FRAME – правыйкадр

SIDE-BY-SIDE STEREOSCOPIC VIDEO – стереоскопическийвидеосигнал

MISALIGNED - несоответствие

 

Выходной сигнал камеры оцифровывается декодером ADV7181D, ADV7182 или ADV7186, либо приемником HDMI, например ADV7610 или ADV7611.

В декодерах видеосигнала и HDMI приемниках используется ФАПЧ для формирования данных о тактировании и пикселах. Для камер генерируется два отдельных сигнала синхронизации, а несоответствие между ними компенсируются в FPGA. Данные выравниваются и объединяются в один стереоскопический кадр. Далее синхронизованный видеопоток поступает в передатчик HDMI1.4 3D, например, ADV7511 или ADV7513, или в сигнальный процессор, например ADSP-BF609 Blackfin, для дальнейшей обработки.

 

Схемы тактирования 3D-видеосистемы 

Декодеры видеосигнала могут быть синхронизованы (т.е. имеется привязка к линии) или нет. Когда ФАПЧ привязана к входному сигналу синхронизации, или TMDSв HDMI, она генерирует тактовый сигнал, привязанный к источнику входного видеосигнала. Когда привязка теряется или ФАПЧ работает в свободном режиме, видео ФАПЧ генерирует тактовый сигнал, привязанный к кварцевому генератору.

 

Если в системе имеется два и более видеоканала, то в ней будет несколько сигналов синхронизации. Даже если они исходят от одного генератора, они отличаются по фазе и частоте, поскольку проходят через разные контуры ФАПЧ.

Когда камеры синхронизованы, частоты пикселизации видеопотоков становятся одинаковыми, и потоки видео синхронизуются, как показано на рисунке 5.

Рис. 5. Видеокамеры синхронизованы с одним и тем же источником (привязка имеется)

LINE-LOCKED CAMERAS AND VIDEO DECODERS LOCKED TO INCOMING VIDEO– Камеры с привязкой к линии и видеодекодеры с привязкой к входному видеосигналу

LOCKED OUTPUTS (EXACTLY SAME FRAME RATES) WITH LLC PIXEL CLOCKS OF MATCHING FREQUENCY OVER TIME– выходные сигналы с привязкой (одинаковая частота следования кадров); частоты пискелизации согласованы

LINE-LOCKED CAMERAS– камеры с привязкой к линии

VIDEO DECODER- видеодекодер

 

 

Однако декодер может потерять привязку, и синхронизация нарушится. Это может произойти, например, из-за плохого качества видеосигнала (см. рис. 6) или из-за разрыва на линии (см. рис. 7). Частоты в каналах станут разными, и данные будут обрабатываться несимметрично.

Для обнаружения потери привязки используется прерывание SD_UNLOCKв декодерах SD, CP_UNLOCKв компоеннтных декодерах и регистры TMDSPLL_LCKв приемниках HDMI. В видеодекодерах предусмотрены механизмы сглаживания нестабильностей горизонтальной синхронизации. Детектирование потери привязки происходит через несколько строк. Задержку можно уменьшить, если ввести соответствующую проверку с помощью FPGA.

 

Рис. 6. Система, в которой камеры имеют привязку, видеодекодеры – нет

DIFFERENT LLC PIXEL CLOCK FREQUENCIES, DIFFERENT FRAMERATES– разные частоты пикселизации, разные скорости следования кадров

LINE-LOCKED CAMERAS– камеры с привязкой к линии

VIDEO DECODER (LOCKED TO AN INCOMING VIDEO) – видеодекодерспривязкойквходномувидеосигналу

VIDEO DECODER (UNLOCKED, FREE-RUNNING) – видеодекодербезпривязки

POOR CONNECTION – плохоесоединение

 

 

 

Рис. 7. Система, вкоторой привязкуи меют тольк овидеодекодеры

DIFFERENT LLC PIXEL CLOCK FREQUENCIES, DIFFERENT FRAME RATES - разныеч астоты пикселизации, разные скорости следования кадров

VIDEO DECODER (LOCKED TO AN INCOMING VIDEO) – видеодекодер с привязкой к входному видеосигналу

UNLOCKEDCAMERAS– камеры без привязки

 

Несоответствие данных в 3D-видеосистеме 

Для упрощения системы и уменьшения объема памяти, требуемой для сочетания двух изображений, данные, поступающие на FPGA, должны быть выровнены так, чтобы n-ный пиксел из m-строки с одной камеры был принят в тот же момент времени, что и соответствующий пиксел со второй камеры.

 

Если камеры имеют привязку к линии, не гарантируется полное временное соответствие их выходных сигналов. На рисунке 8 показаны сигналы вертикальной синхронизации с выхода CVBSкамеры. Главная камера обеспечивает сигнал привязки к линии для второй камеры. Несоответствиена380 неочевидно. На рисунке9 показаны переданные данные. Видно рассогласование на 11 пикселов.

Рис. 8. Несоответствие между сигналами 380 нс

Figure 9. Некомпенсированное расхождение на 11пикселей

 

 

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

Также декодеры видеосигнала вносят задержку, причем некоторые компоненты, например FIFO, имеют случайную задержку включения. Типичная задержка включения стереоскопической системы составляет около 5 тактов пикселирования.

В системах с HDMIприемниками и передатчиками задержка включения может достигать 40 тактов (см. рис. 10).

Figure10. Установка для измерения задержки

 

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

 

Компенсация несоответствия в 3D-видеосистеме

На рисунке 11 показана система, в которой аналоговый сигнал с видеокамеры оцифровывается видеодекодером. В каждом канале свой информационный и синхронизующий сигнал. Для компенсации невыровненности данных в каждом канале выполняется буферирование. При сбое синхронизации буферы тактируются одним и тем же сигналом с одного из декодеров.

Figure11. Выравнивание видеопотоков с помощью буферизации

CAMERA(LINE-LOCKED) – камера с привязкой к линии

VIDEO DIGITIZER- видеодекодер

COMMON– общий сигнал

DATA - данные

 

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

Управляющий блок включает и отключает FIFO, чтобы минимизировать невыровненность пикселей. Если компенсация выполнена правильно, на выходе FPGAдва потока данных, выровненные по первому пикселу. Далее они снова поступают на FPGAдля формирования потока 3D.

 

Измерение рассогласования в 3D-видеосистеме 

Несоответствие двух оцифрованных потоков измеряется на выходе FIFOс помощью счетчика. Он сбрасывается по вертикальному фронту синхроимпульса одного из входных сигналов.

На рисунке 12 показано два видеопотока vs_a_inи vs_b_in, расходящихся на 4 пиксела. Счетчик измеряет несоответствие по алгоритму, приведенному в листинге 1.

Рис. 12. Измерение несоответствия
 
 
Счет начинается по восходящему фронту VS1 и оканчивается по восходящему фронту VS2.

 

Если известна ширина кадра в пикселах, то для вычисления отрицательного наклона (когда VS2 обгоняет VS1) показания счетчика вычитаются из длины кадра. Результат используется для выравнивания данных, содержащихся в буферах FIFO.

 

Листинг 1. Программа на Verilogдля измерения несоответствия

modulemisalign_ measurement(

inputwirereset,

inputwireclk _ in,

input wire vs _ a _ in,

input wire vs _ b _ in,

output reg [15:0] misalign,

output reg ready);

reg [15:0] cnt;

reg cnt _ en, cnt _ reset;

reg vs _ a _ in _ r, vs _ b _ in _ r;

assign vs _ a _ rising = vs _ a _ in > vs _ a _ in _ r;

assign vs _ b _ rising = vs _ b _ in > vs _ b _ in _ r;

always @(posedge clk _ in)

begin

vs _ a _ in _ r <= vs _ a _ in;

vs _ b _ in _ r <= vs _ b _ in;

end

always @(posedge clk _ in)

if (reset)

begin

{ ready, cnt _ en } <= 2’b00;

misalign <= 0;

end else begin

if ((vs _ a _ in == 1’b0) && (vs _ b _ in == 1’b0))

{ ready, cnt _ reset } <= 2’b01;

else

cnt _ reset <= 1’b0;

/* beginning */

if (vs _ a _ rising && vs _ b _ rising)

begin

misalign <= 0;

{ ready, cnt _ en } <= 2’b10;

end

else if ((vs _ a _ rising > vs _ b _ in) || (vs _ b _

rising > vs _ a _ in))

{ ready, cnt _ en } <= 2’b01;

/* ending */

if ((cnt _ en == 1’b1) && (vs _ a _ rising || vs _ b _

rising))

begin

{ ready, cnt _ en } <= 2’b10;

misalign <= vs _ a _ rising ? (-(cnt + 1)) : (cnt + 1);

end

end

always @(posedge clk _ in) /* counter */

if ((cnt _ reset) || (reset))

cnt <= 0;

else if (cnt _ en)

cnt <= cnt + 1;

endmodule
 

Объединение двух синхронизованных потоков в 3D-видеосистеме 

Когда пикселы, строки и кадры синхронизованы, FPGAформирует стереоскопическое изображение (см. рис. 13).

Рис. 13. Упрощенная структура стереоскопической видеосистемы

 

 

Входные данные считываются из памяти по общему сигналу тактирования. В блоке анализатора производится анализ входных синхроимпульсов и выделение следующих параметров видеосигнала: ширина передней и задней площадки строчного интервала гашения, амплитуда передней и задней площадки вертикального сигнала гашения, ширина вертикального и горизонтального синхросигналов, длина строки, количество вертикальных активных линий, поляризация синхросигналов. Эти данные поступают на повторитель, и синхросигнал корректируется. При необходимости вносится задержка, чтобы гарантировать, что буферы FIFO содержат требуетмое количество данных.

 

Попарное представление в видеосистеме 3D

Формат Side-by-Side, т.е. представление изображения парой кадров, является самым непривлекательным с точки зрения использования памяти. Требуется буфер FIFOс двумя линиями, счетчик с вдвое большим модулем счета. В этом формате сигнал в два раза шире, чем исходный поток. Содержимое буферов очищается с вдвое большей скоростью (см. рис. 14), кадры представляются попарно, как показано на рисунке 15.

Рис. 14. Попарное представление видеосигналов с помощью линейных буферов FPGA

 

Рис. 15. Попарное предоставление видео с разрешением 576p

 

Заключение

Итак, объемное изображение можно получить с помощью системы, состоящей из видеодекодеров, HDMIустройств и блока постобработки. Предложенный подход позволяет избежать использования модулей памяти.

Описанная система имеет широкую область применения – от простых видеокамер до специализированных систем отслеживания объектов.

 

 

 eltime.ru, по материалам Витолд Кацурба (WitoldKaczurba), инженер по применению

лимузин на свадьбу.
Компания Сансити

Календарь событий электроники

Новости гаджетов