Jurgis Armanavichius snipped-for-privacy@medelkom.com пишет в сообщении: snipped-for-privacy@p2.f.n5020.z2.ftn...
Здравствуйте! Меня зовут Олег Дерин, я работаю в Институте информатики РАН и имею значительный опыт разработки и внедрения радарных и телевизионных систем обработки и распознавания объектов. Поэтому Ваша задача мне достаточно близка. Мне кажется, вы идете в не вполне правильном направлении. По моему опыту в такой задаче Вас будет тормозить не процессор и его команды, а оперативная память. Мы недавно сдали систему автоматического распознавания и сопровождения отдельных людей в толпе, и процессор 3ГГц часть времени простаивал по этой причине. Это происходит из за того, что при последовательном выполнении матричных операций (например - пространственная интерполяция) промежуточные результаты - матрицы - слишком велики, чтобы влезть в кэш процессора, и последний работает в режиме постоянных кэш-промахов. Есть два пути решения:
1.применить максимально быструю ОЗУ не считаясь с расходами. 2.переписать алгоритмы в стиле не пооперационной, а поточечной обработки (насколько это возможно). При этом процессор будет обращаться к данным только текущей точки и ее ближайшего окружения, что позволит снизить количество кэш-промахов.пихается
вообще
Также не вполне верно, что в этой области программно ничего не делается. Для FPGA писать конечно проще (меньше ограничений), но дорого (применяется в основном в некоммерческих изделиях). Современные процессоры позволяют вести достаточно глубокую обработку realtime для видео, по крайней мере интерполяцию - с большим запасом. Для небольших серий мат плата с процессором выйдет дешевле выполняющей аналогичною функции платы с FPGA примерно на порядок. Для Вашего - чисто коммерческого - случая я бы рекомендовал попробовать использовать смешанный метод - на входе стоит небольшая FPGA, управляющая сенсором, получающая от него данные и сбрасывающая их с минимальной обработкой внутрь РС, может быть даже сформировать аналоговый видеосигнал и подать его на встроенный в мат. плату видеозахватчик (их можно довольно лихо программировать на прием "не вполне ТВ сигнала"). Затем написать обработчик в виде фильтра DirectX (подсистема DirectX гораздо ближе к реалтайму, чем что - либо в виндах). Писать фильтр DirectX очень просто - берется пример такого фильтра и переписывается только подпрограмма обработки видеоданных. Затем пишется пресловутый "медиаплеер" - программу, строящую граф с участием написанного фильтра, также путем минимальой правки любой готовой программы медиаплеера с исходникми . Пойдя этим путем Вы, по моему мнению, сократите себе работу раза в три...
С Уважением О.А.Дерин, СПИИРАН derin<злой знак>mail<знак>rcom<знак>ru