泗塘新村街道网站建设,如何修改网站模版,毕业作品是做网站的答辩会问什么,临沂电商网站建设目录1、前言2、理论基础3、设计思路和框架图像输入和采集图像旋转处理图像缓存图像输出4、vivado工程详解5、上板调试验证6、福利#xff1a;工程代码的获取1、前言
图像旋转是一种常用的图像处理技术#xff0c;其基本原理就是指图像以某一点为中心旋转一定的角度#xff…
目录1、前言2、理论基础3、设计思路和框架图像输入和采集图像旋转处理图像缓存图像输出4、vivado工程详解5、上板调试验证6、福利工程代码的获取1、前言
图像旋转是一种常用的图像处理技术其基本原理就是指图像以某一点为中心旋转一定的角度形成一幅新的图像的过程。当然这个点通常就是图像的中心。图像的旋转是图像几何变换的一种旋转前后的图像的像素的 RGB 都是没有改变的改变的只是每一个像素的所在位置这个就是旋转的本质。 本设计采用OV5640摄像头作为输入分辨率为640x480也可配置为其他分辨率输出HDMI分辨率为1024x76860Hz。图像缓存至DDR做旋转变换旋转角度由串口命令控制实用性很强高度贴近真实项目希望对你有用。 本文详细描述了设计方案工程代码编译通过后上板调试验证可直接项目移植适用于在校学生、研究生项目开发也适用于在职工程师做项目开发可应用于医疗、军工等行业的数字成像和图像传输领域 提供完整的、跑通的工程源码和技术支持 工程源码和技术支持的获取方式放在了文章末尾请耐心看到最后
2、理论基础
图像旋转是指图像以某一点为中心旋转一定的角度形成一幅新的图像的过程。当然这个点通常就是图像的中心。既然是按照中心旋转自然会有这样一个属性旋转前和旋转后的点离中心的位置不变。 根据这个属性我们可以得到旋转后的点的坐标与原坐标的对应关系。由于原图像的坐标是以左上角为原点的所以我们先把坐标转换为以图像中心为原点。假设原图像的宽为 w高为 hx0y0为原坐标内的一点转换坐标后的点为x1y1。那么不难得到 x1 x0 - w/2y1 -y0 h/2 在新的坐标系下假设点x0y0距离原点的距离为 r点与原点之间的连线与 x 轴的夹角为 b旋转的角度为 a旋转后的点为x1y1如下图所示。 那么有以下结论 x0rcosby0rsinb x1 rcos(b-a) rcosbcosarsinbsinax0cosay0sina y1rsin(b-a)rsinbcosa-rcosbsina-x0sinay0cosa 得到了转换后的坐标我们只需要把这些坐标再转换为原坐标系即可。这里还有一点要注意旋转后的图像的长和宽会发生变化因此要计算新图像的长和宽。
3、设计思路和框架
设计思路和框架如下
图像输入和采集
本设计采用OV5640摄像头作为输入分辨率为640x480也可配置为其他分辨率OV5640需要i2c配置才能使用代码里包含了纯verilog的i2c配置图像采集输出RGB565格式图像数据图像采集顶层接口如下
module uiSensorRGB565(input cmos_clk_i ,//cmos senseor clock.input rst_n_i ,//system reset.active low.input cmos_pclk_i ,//input pixel clock.input cmos_href_i ,//input pixel hs signal.input cmos_vsync_i,//input pixel vs signal.input [7:0] cmos_data_i ,//data.output cmos_xclk_o ,//output clock to cmos sensor.output [15:0] rgb_o ,output de_o ,output vs_o ,output hs_o );图像旋转处理
本小节内容包括串口解析、旋转参数切换和图像旋转前处理等模块内容。 首先本设计暂时只支持90°、180°、270°和360°旋转不支持任意角度旋转 旋转角度由串口命令控制控制命令如下 串口发送0xaa 0xbb 0x00 0x00 0x00 0x01 0x01 0xcc 0xdd 旋转90° 串口发送0xaa 0xbb 0x00 0x00 0x00 0x02 0x02 0xcc 0xdd 旋转180° 串口发送0xaa 0xbb 0x00 0x00 0x00 0x04 0x04 0xcc 0xdd 旋转270° 串口发送0xaa 0xbb 0x00 0x00 0x00 0x08 0x08 0xcc 0xdd 旋转360° 视频演示使用的串口调试助手配置和指令如下 关于串口指令和解析请参考我之前写的文章点击查看串口解析 参数切换模块根据切换信号来切换输出到各个模块的参数。 图像旋转前处理模块根据切换信号对 ram 中的数据进行调度以方便 ddr 控制器模块的使用。
图像缓存
调用MIG实现图像到DDR3的乒乓缓存这里用到的是纯净的MIG并未用到我常用的FDMAAXI MIG方案直接调用MIG更为简单 想了解FDMAAXI MIG图像缓存方案的可以参考我之前写的文章点击查看FDMAAXI MIG
图像输出
图像输出采用HDMI发送分辨率为1024x76860HzHDMI由silicon9134芯片编码silicon9134需要i2c配置才能使用代码里包含了纯verilog的i2c配置想了解silicon9134芯片配置的可以参考我之前写的文章点击查看silicon9134
4、vivado工程详解
开发板Xilinx Artix7-35T开发板 开发环境vivado2019.1 输入OV5640摄像头分辨率640x480 输出HDMI辨率为1024x76860Hzsilicon9134编码 工程代码架构如下 FPGA资源消耗和功耗预估如下
5、上板调试验证 演示视频如下
FPGA图像视频旋转6、福利工程代码的获取
福利工程代码的获取 代码太大无法邮箱发送以某度网盘链接方式发送 资料获取方式私或者文章末尾的V名片。 网盘资料如下