FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持

这篇具有很好参考价值的文章主要介绍了FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前言

JPEG-LS(简称JLS)是一种无损/有损的图像压缩算法,其无损模式的压缩率相当优异,优于 Lossless-JPEG、Lossless-JPEG2000、Lossless-JPEG-XR、FELICES 等。

本设计使用system verilog语言设计了一个JPEG-LS图像压缩加速器,输入数据为8位的灰度图,输出数据为JPEG-LS图像压缩后的16位数据,集成了有损和无损两种压缩方案,可通过顶层参数配置,选择有损压缩时还有1~7的7个有损压缩等级可配置,实用性和灵活性很高;一并提供了加速器的仿真源文件,可通过vivado或其他软件进行仿真,文章后面有详细的仿真教程;

本文详细描述了JPEG-LS图像压缩加速器及其仿真的设计方案,工程代码可综合编译上板调试,但目前只做到了仿真层面,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像压缩领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、JPEG-LS图像压缩理论

JPEG-LS图像压缩算法介绍可以百度一下或者csdn或者知乎搜一下看看,专业的讲解我不擅长,我只擅长用fpga实现算法,专业讲原理的大佬比我讲得好,这里可以推荐一篇阅读量很大的文章:直接点击前往

3、JPEG-LS图像压缩性能介绍

首先看看在Xilinx Artix-7 xc7a35tcsg324-2 上综合和实现的资源消耗:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
35MHz 下,图像压缩的性能为 35 Mpixel/s ,对 1920x1080 图像的压缩帧率是 16.8fps;
理论上支持任意分辨率图片的压缩;

4、JPEG-LS图像压缩时序介绍

首先看看PEG-LS图像压缩加速器顶层接口:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
注意仔细看每个接口对应的注释,看懂了接口才能理解时序;

下图展示了压缩 2 张图像的输入时序图(//代表省略若干周期,X代表don’t care)。其中图像 1 在输入第一个像素后插入了 1 个气泡;而图像 2 在 i_vs=1 后插入了 1 个气泡。注意图像间空闲必须至少 16 个周期。
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
代码量不大,加上注释和隔行一共才856行,如下:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持

5、JPEG-LS图像压缩输出压缩流

在输入过程中,JPEG-LS图像压缩同时会输出压缩好的 JPEG-LS流,该流构成了完整的 .jls 文件的内容(包括文件头部和尾部)。o_de=1 时,o_data 是一个有效输出数据。其中,o_data 遵循大端序,即 o_data[15:8] 在流中的位置靠前,o_data[7:0] 在流中的位置靠后。在每个图像的输出流遇到最后一个数据时,o_last=1 指示一张图像的压缩流结束。

6、工程源码和仿真

开发板FPGA型号:Xilinx xc7k325tffg676-2;
开发环境:Vivado2019.1;
运行:Vivado在线仿真;

仿真是将指定文件夹里的 .pgm 格式的未压缩图像批量送入 JPEG-LS图像压缩加速器 进行压缩,然后将 JPEG-LS图像压缩加速器 的输出结果保存到 .jls 文件里,最后通过工具查看.jls图片;

工程代码架构如下:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
仿真流程为:
第一步:
添加源码并开启行为仿真:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
运行中可能会出现如下信息导致仿真失败:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
解决办法:在Tcl中输入以下指令并回车:
set_property display_limit 134217728 [current_wave_config]
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
第二步:
点击开始仿真:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
该仿真需要运行十几分钟;
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
仿真完后可以看到仿真了8张图片,产生了8个sof;

仿真的输入和输出:
共准备了9张.pgm 格式的未压缩图像作为输入源,路径如下:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
经过十几分钟的漫长仿真后,输出8张压缩后的.jls图片,路径如下:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
输入输出的对比:
输入的.pgm 格式的未压缩图像我在Win10系统中可以直接打开;
输出的压缩后的.jls图片我在Win10系统中不能打开,可以使用下面某网站打开:
某网站:点击前往
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
最后查看原图和压缩后的图比较:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
另外,你还可以修改一些仿真参数来进行别的玩儿法:
修改 tb_helai_jpeg_jls_EC.sv 里的宏名 NEAR 来改变压缩率。
修改 tb_helai_jpeg_jls_EC.sv 里的宏名 BUBBLE_CONTROL 来决定输入相邻的像素间插入多少个气泡:
BUBBLE_CONTROL=0 时,不插入任何气泡;
BUBBLE_CONTROL>0 时,插入 **BUBBLE_CONTROL **个气泡;
BUBBLE_CONTROL<0 时,每次插入随机的 0~(-BUBBLE_CONTROL) 个气泡;
在不同 NEAR 值和 BUBBLE_CONTROL 值下,本库已经经过了几百张照片的结果对比验证,充分保证无bug;

7、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持文章来源地址https://www.toymoban.com/news/detail-439227.html

到了这里,关于FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JPEG图像压缩算法的python实现

    文章在研究JPEG压缩编码对图像数据压缩的基本原理的基础上,设计了JPEG图像压缩算法程序实现流程,利用 Python语言对程序进行了编写,并实现了对压缩质量进行控制,验证了JPEG压缩编码对图像数据压缩的可行性。 用 JPEG压缩软件将图像从原图像中输出并对它进行重建,通过

    2024年02月04日
    浏览(42)
  • 基于扩散模型的图像压缩:创建基于Stable Diffusion的有损压缩编解码器

    Stable Diffusion是最近在图像生成领域大火的模型,在对他研究的时候我发现它可以作为非常强大的有损图像压缩编解码器。在介绍之前,我们先看看它与高压缩率下的JPG和WebP相比的而结果,所有都是512x512像素的分辨率为单位: 上面这图的细节如下: 这是JPG压缩结果大小为5

    2024年02月12日
    浏览(47)
  • JPEG2000图像压缩算法学习

    压缩算法——JPEG2000 编解码原理 JPEG2000-Matlab源码实现 JPEG2000和JEPG都是静止图像压缩标准,最大区别是在空间域至频域转换。JPEG是基于 离散余弦变换(DCT) , 而JEPG2000是基于 离散小波变换(DWT) 。JPEG2000是JPEG的升级版,其压缩率比JPEG高约30%左右,同时 支持有损和无损压缩

    2024年02月16日
    浏览(44)
  • 无损网络和有损网络

    无损网络近来越来越多被提到,无损网络似乎是 RDMA 的必须,为了减轻主机侧的负载(这是 RDMA 的目标之一),网络就要承担复杂,因此,RoCE 为 RDMA 承诺了一个无损链路层,这样 RDMA 就不必再实现丢包重传那些东西了。可靠传输是在底层保证的,而不是在传输层保证的。 但物

    2023年04月22日
    浏览(42)
  • Baumer工业相机堡盟工业相机如何通过BGAPI SDK使用JPEG图像压缩功能(C++)

    Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩

    2024年02月08日
    浏览(40)
  • 基于DCT+huffman变换的图像压缩解压缩FPGA实现

    目录 一、理论基础 二、verilog程序 三、仿真结果        图像压缩和解压缩是数字图像处理中的重要技术。基于DCT(离散余弦变换)和Huffman变换的图像压缩解压缩方法是一种常见的图像压缩标准,它可以将图像数据压缩成更小的体积,同时保持图像的质量和还原性。 一、

    2023年04月16日
    浏览(73)
  • 【视频编解码】M-JPEG压缩、H.264压缩 对比

    参考这篇文章:https://blog.csdn.net/qq_41248872/article/details/83590337 写的比较好,这里就不赘述了。 我们在视频传输的时候,需要压缩,常见的压缩包括: jpeg 压缩 h264 压缩 当然使用最多的还是 264, 毕竟他的压缩比高嘛。对于一些实时的场景比较有优势,但是这玩意还是得分不同的

    2024年02月22日
    浏览(51)
  • FPGA实现jpeg图片解码RGB 纯verilog代码编写 提供基于zynq得工程源码和技术支持

    jpg是一种压缩的图片格式,之所以压缩是为了减小图片所占空间,jpg压缩原理这里不罗嗦,可以自行百度或者b站,大佬讲的比我好,jpg解压缩就是逆向过程,用opencv啥的解压缩就是一句话的事儿,但对于fpga硬件来说就是大型工程了。 本设计使用zynq7100位平台,将jpg图片的c语

    2024年02月07日
    浏览(56)
  • 矢量数据无损压缩传输-geobuf(java项目分享)

    Hello小伙伴们,太太太久不更文了,研发太忙了没时间搞,技术性的文章肯定要有干货,今天小编就为大家带来干干干货~ 有段时间在朋友圈看见有朋友分享了他们的产品,其中有几个字眼让我影响深刻“集成了GeoBuf的功能”,让我不禁想探索探索GeoBuf是个啥东东,搜集了有关

    2023年04月12日
    浏览(51)
  • 加速44%!RT-DETR量化无损压缩优秀实战

    RT-DETR 模型是飞桨目标检测套件 PaddleDetection 最新发布的 SOTA 目标检测模型。其是一种基于 DETR 架构的端到端目标检测器,在速度和精度上均取得了 SOTA 性能。在实际部署中,为了追求“更准、更小、更快”的效率能力,本文使用飞桨模型压缩工具 PaddleSlim 中的自动压缩工具(

    2024年02月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包