Для выделения и сопровождения объектов на изображении применяется метод, основанный на алгоритмах выделения особых точек. Данный метод часто используется в модулях первичной обработки видеоданных для стабилизации фона. В работе предложена аппаратная реализация алгоритма Speeded Up Robust Features (SURF). Рассмотрен потоковый подход к реализации алгоритма SURF, позволяющий значительно ускорить обработку данных. Показано, что применение такого подхода решает основную проблему использования памяти несколькими модулями одновременно. Представлена общая схема алгоритма SURF, который позволяет выделить особые точки на изображении и создать их описание. Предложено использовать аппаратный ускоритель для поиска и описания особенных точек изображения, так как все указанные задачи требуется решать на высоких скоростях. Разработаны и описаны все модули аппаратной реализации процесса поиска ключевых точек, включая модули интегрального изображения, подсчета вторых производных, расчета гессиана, локального максимума, вычисления дескриптора. Проведено тестирование разработанного алгоритма. Результаты эксперимента показали, что реализация алгоритма SURF на основе потокового подхода позволяет повысить скорость обработки кадра до 100 кадров/с.
1. Bay H., Essa A., Tuytelaars T., Van Gool L. Speeded-Up Robust Features (SURF) // Comput. Vis. Image Underst. – 2008. – Vol. 110. – No. 3. – P. 346–359.
2. Svab J., Faigl J., Krajník T. FPGA based speeded up robust features // IEEE Intern. Conf. on Technologies for Practical Robot Applications. – 2009. – P. 35–41.
3. Sledevic T., Serackis A. SURF algorithm implementation on FPGA // 13th Biennial Baltic Electronics Conf. – Tallinn, 2012. – P. 291–294.
4. Chang L., Sucar L.E. FPGA-based detection of SIFT interest keypoints // Mach. Vis. Appl. – 2013. – No. 24. – P. 371–392.
5. Vivado Design Suite User Guide. High-Level Synthesis. UG902 (v2016.2). – 2016. – P. 672. – URL: https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_2/ug902-vivado-high-level-synthesis.pdf (дата обращения: 22.01.2018).
6. Vivado Design Suite User Guide. Getting Started. UG910(v2016.4). – 2016. – P. 24. – URL: https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_4/ug910-vivado-getting-started.pdf (дата обращения: 22.01.2018).
7. Хайкин С. Нейронные сети: полный курс. – 2 изд. – М.: Изд. дом «Вильямс», 2006. – 1104 с.
8. Демьянкович Ю.К., Ходаковский В.А. Введение в теорию вейвлетов: курс лекций. – 2007. – С. 49. – URL: http://www.math.spbu.ru/parallel/pdf/dh_theory.pdf (дата обращения: 22.01.2018).
9. Vivado Design Suite. AXI Reference. UG1037 (v4.0). – 2017. – P. 175. – URL: https://www.xilinx.com/support/documentation/ip_documentation/axi_ref_guide/latest/ug1037-vivado-axi-reference-guide.pdf (дата обращения: 22.01.2018).
10. An FPGA implementation of the SURF algorithm for the ExoMars programme / G. Lentaris, I. Stamoulias, D. Diamantopoulos et al. // Workshop on Reconfigurable Computing (WRC). – Germany, Berlin, 2013. – URL: https://www.researchgate.net/publication/255926863_An_FPGA_implementation_of_the_SURF_algorithm_for_the_ExoMars_programme (дата обращения: 04.10.2018).