Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >几何变换--图像裁剪

几何变换--图像裁剪

作者头像
FPGA开源工作室
发布于 2019-10-29 03:53:56
发布于 2019-10-29 03:53:56
1.6K0
举报
文章被收录于专栏:FPGA开源工作室FPGA开源工作室

基于FPGA图像的裁剪

1 几何变换介绍

几何变换:从新规定图像内像素的几何排列方式。

几何变换包括:缩放、旋转、平移等。这些变换一般用于校正图像处理引起的空间失真,或者通过将图像配准到一个预定义的坐标系统中用于规范化该图像(例如,将一幅航拍图像配准到一个特定的地图投影中,或者在立体视觉中对两幅互相配对的图像进行整形,使得行与外极限)。

与点操作和局部滤波器不同,输出图像通常来说并不是来自同一个输入像素位置。这就意味着需要一些形式的缓存来处理由于几何形状改变引起的延迟。最简单的方法是将输入图像或输出图像(或两者)保存在一个帧缓存中。大部分的几何变换不太容易用数据同时实现输入和输出。

输入和输出像素间的映射可以用两种不同的方法。

图1 几何变换的前向和逆向映射

前向映射:

前向映射将输出像素坐标(u,v)定义为输入像素坐标的一个函数mf

前向映射适用于处理数据流输入,例如,来自一个摄像头,因为它为每个输入像素指定其像素值会映射到输出的什么地方。

逆向映射:

逆向映射定义输入像素坐标为输出坐标的一个函数mr

逆向映射更适用于产生数据流输出,例如图像数据流输出到显示屏,因为对于每一个输出像素,逆向映射指定了像素值是来自输入图像的什么位置。

图2 几何变换的基本结构左:前向映射右:逆向映射

2 几何变换--裁剪

2.1裁剪原理

前向映射将原图像的像素坐标作为自变量,以某个变换函数得出目标图像的像素坐标,裁剪变换的变换函数如式1,Q为输出,I为输入,x和y为原图像坐标,t、b、l、r为四个边界,从某种角度来看,它实际上一种非线性滤波器,保留输入坐标的同时变换输出色彩。

所以,实现一个裁剪模块实际上是要通过给定的边界信息来确定可以输出的一个区域,然后根据是否在这个区域内来确定输出。

2.2 matlab实现裁剪

close all; %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量

clear all;

clc;

[A,map]=imread('peppers.png'); %读入图像

rect=[75 68 130 112]; %定义剪切区域

X1=imcrop(A,rect); %进行图像剪切

set(0,'defaultFigurePosition',[100,100,1000,500]);%修改图形图像位置的默认设置

set(0,'defaultFigureColor',[1 1 1])%修改图形背景颜色的设置

subplot(121),imshow(A); %显示原图像

rectangle('Position',rect,'LineWidth',2,'EdgeColor','r') %显示图像剪切区域

subplot(122),imshow(X1); %显示剪切的图像

图3 matlab实现裁剪

2.3 FPGA实现裁剪

1. `timescale 1ns / 1ps

2.

3. module corp#(

4. parameter DW = 8,//sigle lane 8bit

5. parameter IW = 1920,

6. parameter LEFT = 100,

7. parameter RIGHT = 700,

8. parameter TOP = 100,

9. parameter BUTTOM = 500

10. )

11. (

12. input pixelclk,

13. input reset_n,

14. input i_hsync,

15. input i_vsync,

16. input i_de,

17. input [DW*3-1:0] din,

18. input [11:0] hcount,

19. input [11:0] vcount,

20. output o_hsync,

21. output o_vsync,

22. output o_de,

23. output [DW*3-1:0] dout

24. );

25.

26. reg [DW*3-1:0] dout_r;

27. reg hsync_r;

28. reg vsync_r;

29. reg de_r;

30.

31. //Sequence alignment

32. always @(posedge pixelclk) begin

33. hsync_r <= i_hsync;

34. vsync_r <= i_vsync;

35. de_r <= i_de;

36. end

37.

38. assign o_hsync = hsync_r;

39. assign o_vsync = vsync_r;

40. assign o_de = de_r;

41. assign dout = dout_r;

42.

43. always @(posedge pixelclk or negedge reset_n) begin

44. if(!reset_n)

45. dout_r <= 0;

46. else if( hcount >LEFT && hcount < RIGHT && vcount > TOP && vcount <BUTTOM)// Crop Area

47. dout_r <= din;

48. else

49. dout_r <= 0;//background color

50. end

51.

52.

53. endmodule

实现结果:

图4 FPGA实现裁剪

几何变换中裁剪也是最简单的一个,我们可以通过裁剪保留我们最感兴趣的部分。

点“图像处理往期精彩”了解更多

基于FPGA的车牌字符提取

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

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

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

基于FPGA的数字识别三

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA开源工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于FPGA的直方图拉伸
在视频处理中,为了能够实时调节图像的对比对,通常需要对直方图进行拉伸处理。直方图拉伸是指将图像灰度直方图较窄的灰度级区间向两端拉伸,增强整幅图像像素的灰度级对比度,达到增强图像的效果。
FPGA开源工作室
2019/12/18
1.2K0
基于FPGA图像的镜像
镜像的目的是将图像进行翻转,如图1所示,美国怀俄明大提顿国家公园被水面镜像。镜像可以用前向映射实现,同时由于输出坐标必然落在原先的图像区域内,所以不用进行区域判断,属于比较简单的几何变换。
FPGA开源工作室
2019/10/29
7570
基于FPGA图像的镜像
基于FPGA的人脸位置定位的仿真实现
在肤色识别算法中,常用的颜色空间为Ycbcr,Y代表亮度,cb代表蓝色分量,cr代表红色分量。
FPGA开源工作室
2019/10/29
7680
基于FPGA的人脸位置定位的仿真实现
FPGA实现图像浮雕效果
浮雕在我们现实生活中处处可见,尤其是中国古代的建筑浮雕众多。浮雕既是一种刻在砖、石壁或木头上的一种雕塑。
FPGA开源工作室
2019/10/29
7150
FPGA实现图像浮雕效果
基于FPGA的自动白平衡算法的实现(附代码)
对于白平衡基本概念的详细介绍请查看文章《白平衡初探》,白平衡算法主要的作用是将偏暖或者偏冷的色调自动恢复到正常色调,是图像看起来更加色彩饱满正常。
FPGA技术江湖
2021/04/07
2K0
基于FPGA的自动白平衡算法的实现(附代码)
基于FPGA的帧差法仿真实现
帧差法就是帧间差分法,帧差法是最为常用的行动目标检测措施之一,原理即是在图像序列邻接两帧或三帧间基于像素做差分运算来获取。率先,将邻接帧图像对应像素值相减获得差分图像,然后对差分图像二值化,在环境亮度改变不大的情形下,对应像素值改变小于预先确定的阈值时,能够感受这里为背景像素。假如图像区域的像素值改变很大,能够感受这是由于图像中行动物体引起的,将这些区域符号为前景像素,利用符号的像素区域能够确定行动目标在图像中的位置。由于邻接两帧间的工夫间隔极其短,用前一帧图像作为目前帧的背景模型具有较好的实时性,其背景不聚集,且更新速度快、算法容易、计算量小。算法的不足在于对环境噪声较为敏感,阈值的抉择相当关键,抉择过低不足以压抑图像中的噪声,过高则疏忽了图像中有用的改变。对于比拟大的、颜色统一的行动目标,有可能在目标内部发生抽象,无法全面地提取行动目标。多数应用于选择十字路口监控录像作为实验材料,检测过往车辆动态,也能为后期机器识别打下基础。
FPGA开源工作室
2019/10/29
2.4K0
基于FPGA的帧差法仿真实现
基于脚本的modelsim自动化仿真
FPGA的仿真与调试在FPGA开发过程中起着至关重要的作用,也占用了FPGA开发的大部分时间。所以适当减少或简化FPGA的仿真与调试过程无疑是对FPGA开发的加速,所对产品成型的时间。这里我们将利用三篇给大家讲解使用脚本命令来加速FPGA的仿真过程。
FPGA开源工作室
2019/12/10
2.8K0
基于脚本的modelsim自动化仿真
图像分割(五)
图像分割(五) 之基于FPGA的局部自适应分割 子模块设计 数据累加模块add_tree 数据累加模块负责将窗口内所有元素与均值之差的平方相加,这里还是采用以前的加法思路:每个加法器限制两个输入,这样
瓜大三哥
2018/02/26
6620
图像分割(五)
基于FPGA的多级CIC滤波器实现四倍抽取三
基于FPGA的多级CIC滤波器实现四倍抽取三 原文链接:基于FPGA的多级CIC滤波器实现四倍抽取三
FPGA开源工作室
2019/11/21
1.1K0
基于FPGA的多级CIC滤波器实现四倍抽取三
基于FPGA的单目内窥镜定位系统设计(附代码)
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。
FPGA技术江湖
2025/04/13
620
基于FPGA的单目内窥镜定位系统设计(附代码)
fpga学习——zynq图像处理中的DVP流接口封装
之前文章介绍了基于zynq的图像处理架构问题。其中,作为开发者,需要重点关注图像传感器接口、处理算法、显示接口,这些模块。现在我们一同学习用于视频数据接口的DVP模块,并将其封装成AXI-stream接口便于直接和VDMA IP通信。
全栈程序员站长
2022/09/02
1.6K0
fpga学习——zynq图像处理中的DVP流接口封装
基于FPGA的HDMI显示(二)
  本次设计采用了 IO 模拟的方式实现 HDMI 的功能。与采用专用 HDMI 芯片相比,此方案具有成本更低、效果不输于采用专用芯片的效果、经过测试,兼容性方面也要比专用芯片要好、最大输出图像分辨率 1080P、图像传输稳定等显著的优势。   具体硬件电路上面已经提到过了,这里简单分析一下。
碎碎思
2020/06/30
3.7K0
基于FPGA的5寸LCD显示屏的显示控制
数字图像处理是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。图像处理最早出现于 20 世纪 50 年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于 20 世纪 60 年代初期。早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。
FPGA开源工作室
2019/10/29
1.8K0
基于FPGA的5寸LCD显示屏的显示控制
图像分割(四)
图像分割(四) 之基于FPGA的局部自适应分割 子模块设计 窗口缓存模块win_buf 本模块不做任何算法上的处理,只是负责将当前输入像素的二维窗口元素缓存并组成一个一维的向量输出。 模块的构建非常简
瓜大三哥
2018/02/26
8660
图像分割(四)
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换 OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
  图像几何变换又称为图像空间变换,它将一副图像中的坐标位置映射到另一幅图像中的新坐标位置。我们学习几何变换就是确定这种空间映射关系,以及映射过程中的变化参数。图像的几何变换改变了像素的空间位置,建立一种原图像像素与变换后图像像素之间的映射关系,通过这种映射关系能够实现下面两种计算:
vv彭
2020/10/27
3.9K0
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换
    


OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
基于FPGA的“俄罗斯方块”设计(附设计文档)
今天给各位大侠带来基于FPGA的“俄罗斯方块”设计,设计思路以及代码参考文档,各位大侠可以在“FPGA技术江湖”知识星球内获取,如何加入知识星球可以查看如下文章欢迎加入FPGA专业技术交流群、知识星球!(交流群QQ、微信双向选择)。
FPGA技术江湖
2020/12/30
2.2K0
OpenCV 几何变换-图像镜像
图像镜像是图像基本的几何变换之一,实现起来也很简单,先贴上源码: #include <opencv/highgui.h> #include <time.h> #include <opencv2
chaibubble
2018/01/02
8860
OpenCV 几何变换-图像镜像
基于FPGA的VGA/LCD显示控制器设计(下)
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。
FPGA技术江湖
2020/12/30
6930
基于FPGA的VGA/LCD显示控制器设计(下)
学员学习笔记分享:FPGA之HDMI、以太网篇
高清多媒体接口(High Definition Multimedia Interface)是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视、游戏主机、综合扩大机、数字音响与电视机等设备。HDMI可以同时发送音频和视频信号,由于音频和视频信号采用同一条线材,大大简化系统线路的安装难度。
FPGA技术江湖
2023/04/03
6850
学员学习笔记分享:FPGA之HDMI、以太网篇
Task02 几何变换
该部分将对基本的几何变换进行学习,几何变换的原理大多都是相似,只是变换矩阵不同,因此,我们以最常用的平移和旋转为例进行学习。在深度学习领域,我们常用平移、旋转、镜像等操作进行数据增广;在传统CV领域,由于某些拍摄角度的问题,我们需要对图像进行矫正处理,而几何变换正是这个处理过程的基础,因此了解和学习几何变换也是有必要的。
致Great
2020/04/30
7570
相关推荐
基于FPGA的直方图拉伸
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档