FPGA实现视频拼接,纯逻辑资源搭建,提供4套工程源码和技术支持
创始人
2024-02-20 12:31:23
0

目录

  • 1.本方案的实用价值
  • 2.总体设计方案
  • 3.视频拼接方案算法
  • 4.工程1:单路视频输出
  • 5.工程2:2路视频拼接输出
  • 6.工程3:3路视频拼接输出
  • 7.工程4:4路视频拼接输出
  • 8.上板调试验证
  • 9.福利:工程源码获取

1.本方案的实用价值

FPGA实现视频拼接是FPGA在图像处理领域的基本应用,如果你的视频是AXIS流,且你的开发板是K7或者zynq之类的高端处理器,可以使用Xilinx官方的video mixer实现视频拼接,关于video mixer实现视频拼接,可以参考我之前写的文章点击查看:video mixer实现视频拼接
但是,对于使用A7或者Spartan6之类的低端FPGA开发者来说,video mixer就不适用了,再者,video mixer必须是AXIS接口,对于vga时序或者摄像头rgb时序而言也不适用,必须用Xilinx的ip转为AXIS流,如此不仅麻烦且加大了逻辑资源消耗,这时,本文的视频拼接方案就有用了。

2.总体设计方案

设计方案如下:以4路OV5640摄像头拼接为例;
在这里插入图片描述

OV5640:4路摄像头输入,摄入分辨率设置为960X540;
数据采集:将OV5640摄像头数据采集输出;
FDMA:实现视频数据的三帧缓存,读写进出DDR3,关于FDMA,可以参考我之前写的文章点击查看:FDMA实现视频数据三帧缓存
HDMI:输出显示,1080P分辨率;

3.视频拼接方案算法

视频拼接方案如下:以4路OV5640摄像头拼接为例;
在这里插入图片描述
输出屏幕分辨率为1920X1080;
输入摄像头分辨率为960X540;
4路输入刚好可以占满整个屏幕;
多路视频的拼接显示原理如下:
在这里插入图片描述
以把 2 个摄像头 CAM0 和 CAM1 输出到同一个显示器上为列,为了把 2 个图像显示到 1 个显示器,首先得搞清楚以下关系:
hsize:每 1 行图像实际在内存中占用的有效空间,以 32bit 表示一个像素的时候占用内存大小为 hsize4;
hstride:用于设置每行图像第一个像素的地址,以 32bit 表示一个像素的时候 v_cnt
hstride4;
vsize:有效的行;
因此很容易得出 cam0 的每行第一个像素的地址也是 v_cnt
hstride4;
同理如果我们需要把 cam1 在 hsize 和 vsize 空间的任何位置显示,我们只要关心 cam1 每一行图像第一个像素的地址,可以用以下公式 v_cnt
hstride*4+offset;
uifdma_dbuf 支持 stride 参数设置,stride 参数可以设置输入数据 X(hsize)方向每一行数据的第一个像素到下一个起始像素的间隔地址,利用 stride 参数可以非常方便地摆放输入视频到内存中的排列方式。
关于uifdma_dbuf,可以参考我之前写的文章点击查看:FDMA实现视频数据三帧缓存
根据以上铺垫,每路摄像头缓存的基地址如下:
CAM0:ADDR_BASE=0x80000000;
CAM1:ADDR_BASE=0x80000000+(1920-960)*4;
CAM2:ADDR_BASE=0x80000000+(1080-540)19204;
CAM3:ADDR_BASE=0x80000000+(1080-540)19204+(1920-960)*4;
地址设置完毕后基本就完事儿了;

4.工程1:单路视频输出

开发板:Kintex7开发板;
开发环境:vivado2019.1;
输入:1路OV5640摄像头;1280X720分辨率;
输出:HDMI,1920X1080分辨率;
工程BD部分如下:
在这里插入图片描述
uifdma_dbuf配置如下:
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述

5.工程2:2路视频拼接输出

开发板:Kintex7开发板;
开发环境:vivado2019.1;
输入:2路OV5640摄像头;960X540分辨率;
输出:HDMI,1920X1080分辨率;
工程BD部分如下:
在这里插入图片描述
这是使用单路OV5640摄像头采集数据复制2路,以模拟2路输入;
2个uifdma_dbuf配置如下:
在这里插入图片描述
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述

6.工程3:3路视频拼接输出

开发板:Kintex7开发板;
开发环境:vivado2019.1;
输入:3路OV5640摄像头;960X540分辨率;
输出:HDMI,1920X1080分辨率;
工程BD部分如下:
在这里插入图片描述
3个uifdma_dbuf配置如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述

7.工程4:4路视频拼接输出

开发板:Kintex7开发板;
开发环境:vivado2019.1;
输入:4路OV5640摄像头;960X540分辨率;
输出:HDMI,1920X1080分辨率;
工程BD部分如下:
在这里插入图片描述
4个uifdma_dbuf配置如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述

8.上板调试验证

开发板连接:
在这里插入图片描述
工程1:单路OV5640输出如下:
在这里插入图片描述
工程2:2路OV5640输出如下:
在这里插入图片描述
工程3:3路OV5640输出如下:
在这里插入图片描述
工程4:4路OV5640输出如下:
在这里插入图片描述

9.福利:工程源码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料如下:获取方式:私。
在这里插入图片描述

相关内容

热门资讯

女律师被“精准围猎”!130万... 专业壁垒也难防 “精准围猎” 电信诈骗这事 真别觉得"我不会上当" 连天天泡在法条里 靠法...
高效化解工伤纠纷 锦旗致谢司法... 大象新闻记者 魏广宝 通讯员 高雁鸿/文图 近日, 南阳市宛城区人民法院成功调解一起工伤保险待遇纠纷...
法治头条丨做实公益诉讼 守护峡... 人民日报记者 姜峰 大江奔涌,三峡壮观。 在重庆,乘船顺流而下,夔门雄关如屏矗立,岩壁上的摩崖石刻,...
《潍坊市居家和社区养老服务条例... 大众网记者 王辉 实习记者 于淏泽 潍坊报道 12月18日,潍坊市人大常委会在富华大酒店召开新闻发布...
涉嫌非法集资犯罪!安徽惜艾健康... 【大河财立方消息】12月18日,上海市公安局宝山分局发布警情通报。近期,上海市公安局宝山分局依法对安...
原创 涉... 信邦制药宣布因涉嫌单位行贿罪被移送起诉,次日股价跌停。尽管已加强成本管控,公司业绩依旧承压 《中国科...
经典常谈丨"法律是人... 习近平总书记强调:“必须牢牢把握社会公平正义这一法治价值追求,努力让人民群众在每一项法律制度、每一个...
原创 丘... 以指导强能力,以能力保质量 ——《条例》下全民阅读的核心实践路径 □ 丘河 近日,《全民阅读促进条...
同安法院:“四力调解”,巧解国... 近日,一起建设工程合同纠纷的原告某建筑公司向福建省厦门市同安区人民法院民事审判二庭庭长林康平和案件承...
“法官,我要撤回4起诉讼、2起... 编者按 调解,被国际社会誉为“东方经验”“东方之花”,是我国独创的化解矛盾、消除纷争、促进和谐的非诉...