专栏首页FPGA开源工作室基于FPGA图像的镜像

基于FPGA图像的镜像

几何变换-镜像

镜像的目的是将图像进行翻转,如图1所示,美国怀俄明大提顿国家公园被水面镜像。镜像可以用前向映射实现,同时由于输出坐标必然落在原先的图像区域内,所以不用进行区域判断,属于比较简单的几何变换。

图1 美国怀俄明大提顿国家公园(水面镜像)

1 原理

镜像有两种模式—水平镜像和垂直镜像,它的原理如式1所示,Q为输出,I为输入,x和y为输入像素坐标,xt和yt为输出像素坐标,width和height为图像宽度和高度。可见镜像的本质是将输入坐标和图像的宽度和高度做减法以得到输出坐标,同时由于减法的结果必然小于被减数,故这实际上是单纯的无符号数的减法。

实际应用中会出现三种情况—水平镜像、垂直镜像和全镜像,所以需要一个模式选择来确定模块的工作方式。

2 matlab实现

图2 实验原图

Matlab实现水平、垂直、全镜像源码:

close all;

clear all;

clc;

I=imread('test.png');

[ROW COL DIM] = size(I);

Ih = uint8(zeros(ROW, COL,DIM));%Horizontal mirroring

Iv = uint8(zeros(ROW, COL,DIM));%Vertical mirroring

Ihv = uint8(zeros(ROW, COL,DIM));

%水平镜像

for i =1:ROW

for j=1:COL

for k=1:DIM

x = i;

y = COL-j+1;

z = k;

Ih(x,y,z) =I(i,j,k);

end

end

end

%垂直镜像

for i =1:ROW

for j=1:COL

for k=1:DIM

x = ROW-i+1;

y = j;

z = k;

Iv(x,y,z) =I(i,j,k);

end

end

end

%水平垂直镜像

for i =1:ROW

for j=1:COL

for k=1:DIM

x = ROW-i+1;

y = COL-j+1;

z = k;

Ihv(x,y,z)=I(i,j,k);

end

end

end

figure,

subplot(221),imshow(I);title('原图');

subplot(222),imshow(Ih);title('水平镜像');

subplot(223),imshow(Iv);title('垂直镜像');

subplot(224),imshow(Ihv);title('水平垂直镜像');

图3 matlab实验结果

3FPGA 实现

共有四种模式: Mode1: 原图,

Mode2:全镜像,

Mode3: 水平镜像,

Mode4:垂直镜像。

Verilog实现镜像源码:

  1. `timescale 1ns / 1ps
  2. module mirror#(
  3. parameter DW = 8,
  4. parameter IW = 1920,
  5. parameter IH = 1080,
  6. parameter MODE = 0 //0 1 2 3
  7. )
  8. (
  9. input pixelclk,
  10. input reset_n,
  11. input i_hsync,
  12. input i_vsync,
  13. input i_de,
  14. input [DW*3-1:0] din,
  15. input [11:0] hcount,//x
  16. input [11:0] vcount,//y
  17. output [11:0] hcount_t,//xt
  18. output [11:0] vcount_t,//yt
  19. output o_hsync,
  20. output o_vsync,
  21. output o_de,
  22. output [DW*3-1:0] dout
  23. );
  24. assign o_hsync = i_hsync;
  25. assign o_vsync = i_vsync;
  26. assign o_de = i_de;
  27. assign dout = din;
  28. assign hcount_t = (MODE == 0)?hcount:
  29. (MODE == 1)?(IW-1)-hcount:
  30. (MODE == 2)?(IW-1)-hcount:hcount;
  31. assign vcount_t = (MODE == 0)?vcount:
  32. (MODE == 1)?(IH-1)-vcount:
  33. (MODE == 2)?vcount:(IH-1)-vcount;
  34. endmodule

图4 FPGA实现全镜像

基于FPGA的车牌字符提取

一种MXN维的手写字符识别算法

基于HDMI的视频流输入输出实验

一种简单的基于FPGA车牌定位算法的实现

基于FPGA的数字识别三

本文分享自微信公众号 - FPGA开源工作室(leezym0317),作者:OpenSLee

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PetaLinux安装

    1、$ sudo dpkg-reconfigure dash 2、在弹出的界面选择“否”,禁用dash 3、$ sudo ls -al /bin/sh 如果看...

    FPGA开源工作室
  • Quartus II和Nios II使用时遇到的错误及解决方法总结

    发现提示错误的器件是epcs,其实epcs是没有问题的。通过修改bsp的配置即可,Bsp右击-nios ii –bspeditor 取消选中所有选项即可。

    FPGA开源工作室
  • 基于FPGA的人脸位置定位的仿真实现

    在肤色识别算法中,常用的颜色空间为Ycbcr,Y代表亮度,cb代表蓝色分量,cr代表红色分量。

    FPGA开源工作室
  • 编写Dockerfile的最佳实践

    虽然 Dockerfile 简化了镜像构建的过程,并且把这个过程可以进行版本控制,但是很多人构建镜像的时候,都有一种冲动——把可能用到的东西都打包到镜像中。这种...

    KevinYan
  • Docker 查看镜像

    happyJared
  • 聊聊Docker镜像

    在上篇也同样留下一个问题:我们知道Tomcat运行起来需要Java的支持,那么我们在DockerHub拉取下来的Tomcat镜像是不是也有Java环境呢?

    Java3y
  • TKE操作笔记01

    腾讯云容器服务(Tencent Kubernetes Engine,TKE)是高度可扩展的高性能容器管理服务,您可以在托管的云服务器实例集群上轻松运行应用程序。...

    聂小星
  • openshift-ImageStream

    ImageStream包含任意数量的由标签(tags)标识的Docker格式的容器镜像。它提供了关联镜像的单个虚拟视图,类似于镜像仓库,也许还包含以下镜像:

    用户1470379
  • 删除容器镜像中心的镜像

    在使用容器的时候,我们都是自己搭建一个私有的容器镜像环境,一般使用的镜像也就是registry了,用来保存相关的镜像,搭建了镜像,上传了镜像,使用了镜像,那么...

    SRE运维实践
  • OpenShift 的容器镜像(第 3 部分):使您的镜像易用

    这是我在欧洲,中东和非洲(EMEA)红帽技术交流 2017 会议上的一个会议记录,与会者包括 EMEA 所有红帽解决方案架构师和顾问。会议的主要内容包括了在创建...

    hldh214

扫码关注云+社区

领取腾讯云代金券