FPGA图像处理HLS实现三种图像缩放算法,线性插值、双线性插值、双三次插值,提供HLS工程和vivado工程源码 |
您所在的位置:网站首页 › 二次函数三种图像的区别 › FPGA图像处理HLS实现三种图像缩放算法,线性插值、双线性插值、双三次插值,提供HLS工程和vivado工程源码 |
目录
一、三种图像缩放算法介绍线性插值双线性插值双三次插值
二、HLS实现线性插值图像缩放三、HLS实现双线性插值图像缩放四、HLS实现双三次插值图像缩放五、HLS在线仿真并导出IP六、其他FPGA型号HLS在线仿真并导出IP七、zynq7100开发板vivado工程八、上板调试验证九、福利:工程源码获取
一、三种图像缩放算法介绍
线性插值
线性插值是针对一维数据的插值方法。它根据一维数据序列中需要插值的点的左右临近两个数据来进行数值估计。当然了它不是求这两个点数据大小的平均值(在中心点的时候就等于平均值)。而是根据到这两个点的距离来分配比重的。 在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值(即从X方向进行两次线性插值,得到R1、R2,再对Y方向进行一次线性插值,就可以得到P)。见下图: 双三次插值,英文是Bicubic interpolation。双三次插值是一种更加复杂的插值方式,它能创造出比双线性插值更平滑的图像边缘。双三次插值方法通常运用在一部分图像处理软件、打印机驱动程序和数码相机中,对原图像或原图像的某些区域进行放大。Adobe Photoshop CS 更为用户提供了两种不同的双三次插值方法:双三次插值平滑化和双三次插值锐化。 在数值分析这个数学分支中,双三次插值(英语:Bicubic interpolation)是二维空间中最常用的插值方法。在这种方法中,函数f在点 (x,y) 的值可以通过矩形网格中最近的十六个采样点的加权平均得到,在这里需要使用两个多项式插值三次函数,每个方向使用一个。 双三次插值又叫双立方插值,用于在图像中“插值”(Interpolating)或增加“像素”(Pixel)数量/密度的一种方法。通常利用插值技术增加图形数据,以便在它打印或其他形式输出的时候,能够增大打印面积以及(或者)分辨率。 目前有不同的插值技术可供选用。双立方插值通常能产生效果最好,最精确的插补图形,但它速度也几乎是最慢的。“双线性插值”(Bilinear interpolation)的速度则要快一些,但没有前者精确。在商业性图像编辑软件中,经常采用的是速度最快,但也是最不准确的“最近相邻”(Nearest Neighbor)插值。其他一些插值技术通常只在高档或单独应用的程序中出现。 通过双三次插值可以得到一个连续的插值函数,它的一阶偏导数连续,并且交叉导数处处连续。 在前面的详细介绍了三种图像缩放算法,看起来很复杂很NB对吧? 然并卵!!!!!!! 然并卵!!!!!!! 然并卵!!!!!!! 因为对于HLS来说,干这活儿只需要一句话一行代码即可实现; 因为Xilinx早就帮你做好了三种图像缩放算法的库,并且可以综合,既然如此,我还需要去管他怎么实现的,算法公式是怎样的吗?这就是HLS的NB之处。。。 线性插值图像缩放HLS工程如下: 源文件的核心代码如下:三种算法共用一个工程,用注释选择使用哪一种 这里选择线性插值: hls::Resize_opr_linear(img_0,img_1); //线性插值 //hls::Resize(img_0,img_1,HLS_INTER_LINEAR); //双线性插值 //hls::Resize_opr_bicubic(img_0,img_1); //双三次插值核心代码就一句话,BN吧?呵呵。。。。。。 三、HLS实现双线性插值图像缩放双线性插值图像缩放综合后的延时、资源占用等性能参数如下: 核心代码就一句话,BN吧?呵呵。。。。。。 四、HLS实现双三次插值图像缩放双三次插值图像缩放综合后的延时、资源占用等性能参数如下: 核心代码就一句话,BN吧?呵呵。。。。。。 五、HLS在线仿真并导出IP线性插值原图缩小到320X320的HLS在线仿真结果如下: HLS工程的FPGA型号选的是zynq7100,可在zynq系列上用,若需要在其他FPGA型号上运行,则仅需修改FPGA型号,然后重新综合导出IP即可,HLS工程需修改FPGA型号方法如下: 开发板:Xilinx zynq7100开发板; 开发环境:HLS2019.1;vivado2019.1; 输入:OV5640摄像头,输入分辨率1280x720; 输出1:1280x720输入,1920x1080分辨率HDMI输出; 输出2:1280x720输入,放大到1920x1080分辨率HDMI输出; 输出3:1280x720输入,缩小到640x480分辨率HDMI输出; 本例程使用的是双线性插值算法的IP,需要使用其他算法IP的兄弟,需自行将HLS工程改下,选择需要的算法,然后综合导出IP; 工程BD如下: 放大或者缩小,直接由helai_hls_resize()函数灵活配置即可,所以这里的放大和缩小共用一个工程即可; 八、上板调试验证zynq开发板实物连接如下: 福利:工程代码的获取 代码太大,无法邮箱发送,以某度网盘链接方式发送, 资料如下:获取方式:私,或者文章末尾的V名片。 网盘资料如下: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |