基于FPGA的图像镜像
图像镜像,一种较为常见的图像处理操作,分为水平镜像、垂直镜像、对角镜像。水平镜像即处理后的图像与原图像关于垂直线对称,垂直镜像为处理后的图像与
原图像关于水平线对称,对角镜像则关于对角线对称。
关于低分辨率的图像,直接使用BRAM缓存,然后按照对称的关系取出即可,而高分辨率的图像则需要要到DDR缓存。本文主要讲述1080P分辨率的图像镜像,选用
DDR3缓存,使用的仍然是XILINX K7开发板。
起初,我是将图像先缓存至DDR中,然后再按照对应的位置关系取出。后来发现实现对角镜像时逻辑极为复杂,便放弃该方案。后来根据对角镜像可以由水平镜像和
垂直镜像组合而来,将图像镜像分为两部分:水平镜像、垂直镜像,结构如图1所示。其中,水平镜像使用BRAM实现,垂直镜像使用DDR3实现。

图1 图像镜像结构
水平镜像,即图像行的位置调转,行首变成行末,行末变成行尾。在FPGA中可选用两个bram乒乓操作,也可选择一个真双口BRAM同时读写,实现
思路一致,即:先写入一行有效图像数据,然后开启读,根据是否水平镜像读取已经存入的一行数据,如果需要水平镜像则逆序读bram,否则顺序读。关键
代码如下所示:
if(neg_vid_data_valid_image)begin//一行有效数据写完
state_bram_ctrl<=BRAM_WR_RD;//读写同时进行
bram0_addra<=bram0_part2_addr;
line_length<=bram0_addra;
bram0_eab<=1'b1;
bram0_addrb<=bram_reverse_flag? (bram0_addra+'d1):'d0;//1-1920为有效数据段
bram_init_done<=1'b1;
end
垂直镜像,即原图像列的位置翻转,列首变成列尾,列尾变成列首。对于高分辨的图像只能选用DDR缓存,即在图像已经缓存至DDR一帧的基础上开启读操作,行内顺序,列内逆序读。
而对角镜像,则是水平镜像和垂直镜像的组合,所以需同时开启水平镜像以及垂直镜像使能,通过两个部分的处理以得到最终结果。最后实现的效果如下图所示:

图2 原图像

图3 垂直镜像

图4 对角镜像

图5 水平镜像
基于FPGA的图像镜像的更多相关文章
- 基于FPGA的图像开发平台 其他摄像头附件说明(OV5642 OV9655)
基于FPGA的图像开发平台 其他摄像头附件说明 FPGA_VIP_V101 编者 奇迹再现 个人博客 http://www.cnblogs.com/ccjt/ 联系邮箱 Shenyae86@163.c ...
- 基于 FPGA 的图像边缘检测
本文主要内容是实现图像的边缘检测功能 目录 mif文件的制作 调用 ip 核生成rom以及在 questasim 仿真注意问题 灰度处理 均值滤波:重点是3*3 像素阵列的生成 sobel边缘检测 图 ...
- 基于FPGA的图像去噪
目录 结构图 其中FPGA 控制模块为核心,通过它实现视频图像数据的获取.缓存.处理和控制各模块间通讯[1].由CCD 相机对目标成像,高速图像数据由camera link 实时传输[2],经信号转换 ...
- 基于FPGA的线阵CCD图像测量系统研究——笔记
本文是对基于FPGA的线阵CCD图像测量系统研究(作者:高尚)的阅读笔记 第一章绪论 1. 读读看 读了前面的摘要依然没有看懂作者要做什么.接着往下读....终于看到了一个字眼“基于机器视觉的图像测量 ...
- 基于FPGA的Uart接收图像数据至VGA显示
系统框图 前面我们设计了基于FPGA的静态图片显示,接下来我们来做做基于FPGA的动态图片显示,本实验内容为:由PC端上位机软件通过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描 ...
- 基于FPGA的线阵CCD实时图像采集系统
基于FPGA的线阵CCD实时图像采集系统 2015年微型机与应用第13期 作者:章金敏,张 菁,陈梦苇2016/2/8 20:52:00 关键词: 实时采集 电荷耦合器件 现场可编程逻辑器件 信号处理 ...
- 基于FPGA的RGB图像转灰度图像算法实现
一.前言 最近学习牟新刚编著<基于FPGA的数字图像处理原理及应用>的第六章直方图操作,由于需要将捕获的图像转换为灰度图像,因此在之前代码的基础上加入了RGB图像转灰度图像的算法实现. 2 ...
- 基于FPGA的OLED真彩色动态图像显示的实现
源:基于FPGA的OLED真彩色动态图像显示的实现 作为第3代显示器,有机电致发光器件(Organic Light Emitting Diode,OLED)由于其主动发光.响应快.高亮度.全视角.直流 ...
- 基于FPGA的均值滤波算法的实现
前面实现了基于FPGA的彩色图像转灰度处理,减小了图像的体积,但是其中还是存在许多噪声,会影响图像的边缘检测,所以这一篇就要消除这些噪声,基于灰度图像进行图像的滤波处理,为图像的边缘检测做好夯实基础. ...
随机推荐
- 安装Keras出现的问题
先是pip install tensorflow 给装好了,但是pip install keras出现如下的问题: 只好搜帖子,参考如下的帖子,我直接 conda install keras wi ...
- C# 尝试还原程序包是出错:找不到“XXXXX”版本的程序包“XXXXXX”
在C#管理程序包的时候有时会出现找不到某某版本的程序包 如果出现这样的情况,解决办法是在你当前项目获取当前类库下的packages.config里去删除一段配置就可以解决! 我的缺少的是版本为9.0. ...
- 国内操作系统OS分析(下)
国内操作系统OS分析(下) 3.2 Android/iOS移动互联网时代 Android是一种基于Linux的自由及开放源代码的操作系统.主要使用于移动设备,如智能手机和平板电脑,由Google公司和 ...
- CodeGen融合核心扩展定制文件
CodeGen融合核心扩展定制文件 融合核心定制文件 Harmony核心环境的各个方面都可以通过创建一个定制文件来定制,该文件是一个名为Harm的JSON文件onyCoreCustomization. ...
- 24GHz和77GHz毫米波雷达技术细节
24GHz和77GHz毫米波雷达技术细节 FMCW Radar Sensitivity Measurement Tech Field Test and Raw Data Analysis Capabi ...
- springboot2.x整合tkmapper
springboot整合tkmapper 1.导入pom依赖 1.1 导入springboot的parent依赖 <parent> <artifactId>spring-boo ...
- Java基础_循环嵌套_打印乘法口诀、菱形,各种图形,计算二元一次和三元一次方程组_7
循环嵌套 打印乘法口诀 for(int j=1;j<=9;j++){ for(int i=1;i<=j;i++){ System.out.print(i+"*"+j+& ...
- servlet、过滤器、监听器、拦截器之间的关系和区别
一.概念 1.什么是servlet servlet是一个接口.定义了一套处理网络请求的规范,所有实现servlet的类,都需要实现它那五个方法,其中最主要的是两个生命周期方法 init()和destr ...
- 实验4、Flask基于Blueprint & Bootstrap布局的应用服务
1. 实验内容 模块化工程内容能够更好的与项目组内成员合作,Flask Blueprint提供了重要的模块化功能,使得开发过程更加清晰便利.此外,Flask也支持Bootstrap的使用. 2. 实验 ...
- 【C++】秒级时间戳,毫秒级时间戳
时间戳,秒级 测试代码: #include <iostream> #include <time.h> #include <windows.h> using name ...