图像镜像,一种较为常见的图像处理操作,分为水平镜像、垂直镜像、对角镜像。水平镜像即处理后的图像与原图像关于垂直线对称,垂直镜像为处理后的图像与

原图像关于水平线对称,对角镜像则关于对角线对称。

关于低分辨率的图像,直接使用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的图像镜像的更多相关文章

  1. 基于FPGA的图像开发平台 其他摄像头附件说明(OV5642 OV9655)

    基于FPGA的图像开发平台 其他摄像头附件说明 FPGA_VIP_V101 编者 奇迹再现 个人博客 http://www.cnblogs.com/ccjt/ 联系邮箱 Shenyae86@163.c ...

  2. 基于 FPGA 的图像边缘检测

    本文主要内容是实现图像的边缘检测功能 目录 mif文件的制作 调用 ip 核生成rom以及在 questasim 仿真注意问题 灰度处理 均值滤波:重点是3*3 像素阵列的生成 sobel边缘检测 图 ...

  3. 基于FPGA的图像去噪

    目录 结构图 其中FPGA 控制模块为核心,通过它实现视频图像数据的获取.缓存.处理和控制各模块间通讯[1].由CCD 相机对目标成像,高速图像数据由camera link 实时传输[2],经信号转换 ...

  4. 基于FPGA的线阵CCD图像测量系统研究——笔记

    本文是对基于FPGA的线阵CCD图像测量系统研究(作者:高尚)的阅读笔记 第一章绪论 1. 读读看 读了前面的摘要依然没有看懂作者要做什么.接着往下读....终于看到了一个字眼“基于机器视觉的图像测量 ...

  5. 基于FPGA的Uart接收图像数据至VGA显示

    系统框图 前面我们设计了基于FPGA的静态图片显示,接下来我们来做做基于FPGA的动态图片显示,本实验内容为:由PC端上位机软件通过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描 ...

  6. 基于FPGA的线阵CCD实时图像采集系统

    基于FPGA的线阵CCD实时图像采集系统 2015年微型机与应用第13期 作者:章金敏,张 菁,陈梦苇2016/2/8 20:52:00 关键词: 实时采集 电荷耦合器件 现场可编程逻辑器件 信号处理 ...

  7. 基于FPGA的RGB图像转灰度图像算法实现

    一.前言 最近学习牟新刚编著<基于FPGA的数字图像处理原理及应用>的第六章直方图操作,由于需要将捕获的图像转换为灰度图像,因此在之前代码的基础上加入了RGB图像转灰度图像的算法实现. 2 ...

  8. 基于FPGA的OLED真彩色动态图像显示的实现

    源:基于FPGA的OLED真彩色动态图像显示的实现 作为第3代显示器,有机电致发光器件(Organic Light Emitting Diode,OLED)由于其主动发光.响应快.高亮度.全视角.直流 ...

  9. 基于FPGA的均值滤波算法的实现

    前面实现了基于FPGA的彩色图像转灰度处理,减小了图像的体积,但是其中还是存在许多噪声,会影响图像的边缘检测,所以这一篇就要消除这些噪声,基于灰度图像进行图像的滤波处理,为图像的边缘检测做好夯实基础. ...

随机推荐

  1. Sqlserver语句获取本周、上一周、本月数据

    sql语句获取本周.上一周.本月数据 获取周数据 1 本周 2 select * from table1 where datediff(week,时间字段,getdate()) = 0 3 上周 4 ...

  2. python_xlutils : python利用xlutils修改表格内容

    一.xlutils是什么 是一个提供了许多操作修改excel文件方法的库: 属于python的第三方模块 xlrd库用于读取excel文件中的数据,xlwt库用于将数据写入excel文件,修改用xlu ...

  3. 如何安装/导入Arduino库文件及库文件的不同位置与区别(以eFLL中嵌入式模糊逻辑库为例)

    网上有数百个可在Aruduino中使用的库,这些代码集使得我们无需从0-1地搭建我们所需功能,这使得学习和使用Arduino变得更加方便简单.除此之外,平时直接从网上download下的代码也很有可能 ...

  4. 【NX二次开发】查找部件中的对象 UF_OBJ_cycle_objs_in_part

    返回所有层上指定类型部件中的所有对象,不管它们的当前显示状态如何.这个例程不返回表达式.指定对象.临时(系统创建的)对象或休眠对象.休眠对象指的是从模型中删除的对象例如,如果你混合了一条边,那么这条边 ...

  5. 如何在CentOS 7上搭建LAMP环境(使用YUM或编译)

    什么是LAMP? LAMP是Linux,Apache,MySQL和PHP的缩写. 它是一堆应用程序的堆栈,它们在Web服务器上一起工作以托管网站. 话虽如此,每个程序都有不同的目的: 在LAMP中, ...

  6. Java基础面试题(史上最全、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  7. 数据泵导入,报错:ORA-12899: value too large for column "SCOTT"."TEST112"."JOIN" (actual: 9, maximum: 8)

    1.报错: 数据泵执行导入时报错:ORA-12899: value too large for column "SCOTT"."TEST112"."J ...

  8. WPF中ListView控件怎么添加新的tiem时滚动条一直在最下面

    listBox.ScrollIntoView(listBox.Items[listBox.Items.Count - 1])

  9. vue 快速入门 系列 —— vue loader 上

    其他章节请看: vue 快速入门 系列 vue loader 上 通过前面"webpack 系列"的学习,我们知道如何用 webpack 实现一个不成熟的脚手架,比如提供开发环境和 ...

  10. 37、linux下安装python3.6和django

    37.1.安装python: 1.python介绍: python是一种面向对象的,解释型的计算机语言,它的特点是语法简介,优雅,简单易学.1989年诞生,Guido(龟叔)开发. 编译型语言:代码在 ...