0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA的图像旋转和双线性插值算法设计

CHANBAEK 来源:FPGA Zone 作者:FPGA Zone 2023-09-04 16:52 次阅读

今天开源一个FPGA图像处理相关的项目:图像旋转。图像旋转算法本身非常简单,但是如果想让旋转之后的图像更加完整、平滑,还需要进行双线性插值处理,因此整个算法FPGA实现起来还是有一定难度的。

01算法流程

图像旋转算法可以有两种思路:一种是前向映射,就是由原始图像出发,将像素点传递给旋转后的图像;另一种是反向映射,就是从旋转后的图像出发,找到原始图像对应像素点,然后通过双线性插值算法使旋转后图像更清晰完整。由于前者会丢失很多图像信息,因此在本项目中采用后者。算法流程图如下。

图片

02原理简介

输入图像分辨率默认为256*256,算法处理的是以128为半径内切圆区域。

图片

输出图像一维坐标为i[0,65535],假设图像逆时针旋转θ得到输出图像,对应的输入图像旋转坐标(X,Y)则可以表示成:

X=(i%256-128)*cos(θ)+(128-i/256)*sin(θ)

Y=-(i%256-128)*sin(θ)+(128-i/256)*cos(θ)

首先,对(X,Y)向下取整得到(xx,yy),小数部分表示为(dx,dy),将(xx,yy)转换到输出图像坐标系下为:

xx=xx+128;

yy=128-yy;

进行双线性插值处理:

I(xx,yy)=(1-dx)(1-dy)I(xx,yy)+ (1-dx)dyI(xx,yy-1)+dx(1-dy)I(xx+1,yy)+dxdyI(xx+1,y-1)

浮点数定点化处理:

  • sin(θ)和cos(θ)值为乘以8192取整后的结果;
  • 将上式中dx,dy项定义为8位整数,1改为255参与运算,最后将计算结果向右平移16位。

03IP核配置

该Vivado工程用到的IP主要是 **Multiplier,**用于乘法运算。

  • Signed_16bit * Signed_16bit

图片

图片

  • Unsigned_9bit * Unsigned_9bit

图片

  • Unsigned_18bit * Unsigned_16bit

图片

04测试结果

下方左侧图像为256*256大小的原始测试图像,右侧为顺时针旋转30°后的结果。其中只处理了内切圆区域内的图像,其余部分像素赋值为零。

图片

Verilog代码的Vivado仿真结果如下所示。

图片

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21328

    浏览量

    593267
  • 图像处理
    +关注

    关注

    26

    文章

    1226

    浏览量

    55831
  • 算法
    +关注

    关注

    23

    文章

    4458

    浏览量

    90761
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65107
  • 图像旋转
    +关注

    关注

    0

    文章

    3

    浏览量

    2172
收藏 人收藏

    评论

    相关推荐

    线性插值

    在求解线性插值的时候,我先把一个数组分成两个,再求的时候,有时候出结果,有时候不出结果,求指教
    发表于 11-08 22:04

    双线性插值法的C语言程序!帮帮忙!拜托各位了!

    在DSP6000开发平台上用C语言实现双线性插值法,实现对图像的缩放效果的改进。
    发表于 04-20 18:52

    【安富莱——DSP教程】第21章 InterpolationFunctions的使用

    第21章InterpolationFunctions的使用 本期教程主要讲解一维数据的线性插值和二维数据的双线性插值。 21.1 线性补Linear Interpolation 21
    发表于 06-23 14:13

    这个论坛里面有没有人做 fpga图像缩小的 (不是放大)??求交流交流 真的是很头大 到处找不到做 图像缩小的?

    这个论坛里面有没有人做fpga图像缩小的 (不是放大)??求交流交流真的是很头大到处找不到做 图像缩小的?可以的话留下个联系方式 交流交流我这里有一个 通过双线性插值实现放大的
    发表于 12-23 21:10

    一种基于FPGA的实时视频图像处理算法研究与实现

    针对视频的输出显示要求,重点介绍了基于双线性插值算法的实现。ModelSim的仿真结果表明,该算法符合多屏幕显示系统的要求。关键词 视频监控;视频图像处理;
    发表于 06-28 07:06

    基于FPGA线性插值-上

    1,背景 利用FPGA做数据处理、系统控制时,经常需要做线性插值。如图(1)所示,给点A和B的x,y坐标,需要求A,B中间某一点C的坐标。限定x取整数。 图(1) 示意图 根据A,
    发表于 11-20 23:10

    基于FPGA线性插值-中

    上次分享了基于FPGA线性插值的背景和方法原理,今天分享 方法原理的验证。 通常FPGA的开发分为电路功能设计、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程
    发表于 11-23 23:09

    一种改进的线性图像插值算法

    针对传统的双线性插值法在对图像进行插值后会不可避免的产生边缘模糊的问题,提出了一种改进的线性插值法,该算法首先把待插值点分为三类,然后分别选取合适的已知点进行插值
    发表于 08-20 12:01 29次下载

    基于Matlab的双线性插值算法图像旋转中的应用

    MATLAB双线性插值图像处理的算法,读者可以自行参考。
    发表于 05-04 16:04 1次下载

    基于最优移位双线性插值图像缩放旋转硬件加速研究

    基于最优移位双线性插值图像缩放旋转硬件加速研究_丁家隆
    发表于 01-08 15:15 10次下载

    基于双线性插值图像缩放在GPU上的实现

    基于双线性插值图像缩放在GPU上的实现
    发表于 01-08 14:47 0次下载

    基于FPGA双线性CFA插值算法的设计

    实现了基于FPGA双线性CFA插值算法。该算法的处理对象是每个像素为8bit的XGA@15Hz的Bayer模板数据,目的是能得到每个像素是24bit的XGA@15Hz的彩色
    发表于 11-23 14:24 4036次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>双线性</b>CFA插值<b class='flag-5'>算法</b>的设计

    FPGA上如何实现双线性插值的计算

    双线性插值顾名思义是线性插值Pro,为了说明白什么是双线性插值,首先得先从线性插值说起。那么什么又是线性呢?
    发表于 08-09 17:33 4435次阅读

    使用FPGA实现视频图像缩放显示的设计论文说明

    对几种常用的图像缩放算法进行了比较,在权衡了算法复杂度、缩放效果和FPGA 逻辑资源等3大因素后,选择了双线性插值算法来实现
    发表于 01-25 14:51 6次下载
    使用<b class='flag-5'>FPGA</b>实现视频<b class='flag-5'>图像</b>缩放显示的设计论文说明

    双线性插值算法的讲解

    双线性插值中,我们现在找x0', y0'所在位置旁边的四个点,再根据这四个点与(x0',y0')距离的关系得到权重值,最后计算出目标图像中(x,y)一点的像素值。
    的头像 发表于 09-19 10:25 2321次阅读