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

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

关于低分辨率的图像,直接使用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. camera数字降噪(DNR)

    camera数字降噪(DNR) 闭路电视摄像机 无论多么出色和弱光,在黑暗中拍摄视频监控录像时都会不可避免地产生一些噪音.噪声是任何电子通信中不可避免的部分,无论是视频还是音频.本质上是静态的–视频信 ...

  2. MinkowskiEngine多GPU训练

    MinkowskiEngine多GPU训练 目前,MinkowskiEngine通过数据并行化支持Multi-GPU训练.在数据并行化中,有一组微型批处理,这些微型批处理将被送到到网络的一组副本中. ...

  3. H.264 Video Codec速度和质量

    H.264 Video Codec速度和质量 从Kepler开始的所有 NVIDIA GPUs 都支持完全加速的硬件视频编码: GPUs 从费米开始支持完全加速的硬件视频解码.最近发布的图灵硬件提供了 ...

  4. 嵌入式Linux设备驱动程序:编写内核设备驱动程序

    嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...

  5. 配置NFS共享, Linux与Linux的共享

    • Network File System,网络文件系统 – 用途:为客户机提供共享使用的文件夹 – 协议:NFS(TCP/UDP 2049).RPC(TCP/UDP 111) 只读的NFS共享 服务 ...

  6. 【渗透实战】那些年我们遇到的奇葩WAF_第一期_请求方式绕过

    /文章作者:Kali_MG1937 CSDN博客:ALDYS4 QQ:3496925334/ 该博文为本人18年左右的渗透记录,文法粗糙,技术含量极低,流水账文章,且今日不知为何被顶上博客首页 为了避 ...

  7. 【NX二次开发】判断部件是否已修改(判断部件是否需要保存)UF_PART_is_modified();

    判断部件是否已修改(判断部件是否需要保存)UF_PART_is_modified(); 注意:函数需要输入原型,不要输入事例.事例转原型:UF_ASSEM_ask_prototype_of_occ() ...

  8. 面试官:如何在分布式场景下生成全局唯一 ID?

    在分布式系统中,有一些场景需要使用全局唯一 ID ,可以和业务场景有关,比如支付流水号,也可以和业务场景无关,比如分库分表后需要有一个全局唯一 ID,或者用作事务版本号.分布式链路追踪等等,好的全局唯 ...

  9. Netty 框架学习 —— 编解码器框架

    编解码器 每个网络应用程序都必须定义如何解析在两个节点之间来回传输的原始字节,以及如何将其和目标应用程序的数据格式做相互转换.这种转换逻辑由编解码器处理,编解码器由编码器和解码器组成,它们每种都可以将 ...

  10. unity调用安卓方法实现安装apk文件(androidx)

    原文链接:点击打开 unity想要实现安装apk文件需要与安卓通讯,所以需要自己来实现安卓代码. 第一步先要新建一个安卓项目提供给unity来使用,我这里使用的工具是android studio4.1 ...