精华内容
下载资源
问答
  • 图像压缩

    2019-12-16 08:10:27
    图像压缩

    图像压缩

    展开全文
  • 图像压缩

    千次阅读 2009-09-09 18:05:00
    一个数字图像文件包含MxN个像素的阵列,实际上就是一个MxN的矩阵,现假定...压缩后还要能还原为原来的图像文件。输入:图像文件。 格式:二进制,设矩阵的第m行第n列元素为Num(m,n),文件中按照Num(1,1),Num (1,2),…

    一个数字图像文件包含MxN个像素的阵列,实际上就是一个MxN的矩阵,现假定每个象素有0~255个灰度值,即矩阵元素为8位的整数(矩阵可以表示为char[m][n] matrix),要求将该图像文件保存为一个自定义格式的文件,使存储空间最小。压缩后还要能还原为原来的图像文件。
    输入:图像文件。 格式:二进制,设矩阵的第m行第n列元素为Num(m,n),文件中按照Num(1,1),Num (1,2),……Num(m,n)的顺序连续放入m*n个二进制表示的8位整数(无任何分隔符号)。文件名格式为*.mtr
      例:一个如下3x3像素的数字图像:
        | 1  129 255|
        | 2   3   6 |
        |32  33  34 |
        文件内容表示为二进制串:000000011000000111111111000000100000001100000110001000000010000100100010

    输出:自定义格式的压缩文件。

    要求:
    <1>可以使用任意语言。
    <2>输入的图像文件位于固定目录,绝对路径为“C:/”,输入文件有多个。
    <3>做成一个Win32控制台可执行程序或脚本(不要GUI),以命令行参数控制当前运行压缩功能还是还原功能。
        当命令行第一个参数为1时,执行压缩功能:在程序中一次性读取C盘根目录下的所有*.mtr文件,处理后输出压缩文件到当前目录。
        当命令行第一个参数为0时,执行还原功能:读取当前目录下所有上一步骤生成的压缩文件,还原后仍输出到当前目录。
    <4>执行压缩功能时,每个输入的图像文件要生成一个输出的压缩文件,输出的压缩文件的文件名格式为:[各人名字全拼_输入图像文件名(不包括扩展名).自定义扩展名],自定义扩展名不能是mtr。例:输入图像文件为a.mtr,输出文件名为lili_a.xxx。
    <5>执行还原功能时,同样是一对一生成文件,还原后文件文件名格式为:[压缩文件名(不包括扩展名).mtr]。例:压缩文件为:lili_a.xxx,还原后文件名为:lili_a.mtr。
    <6>执行速度不能过慢。
    例:“C:/”目录下有三个文件a.mtr,b.mtr,c.mtr。
        启动命令行,当前目录设置到D:/Arena/。
        执行程序,第一个参数设置为1,命令行显示为:D:/Arena/xxx.exe 1,此时要在D:/Arena/下生成lili_a.xxx,lili_b.xxx,lili_c.xxx三个压缩文件。
        再次执行程序,第一个参数设置为0,命令行显示为:D:/Arena/xxx.exe 0,此时要在D:/Arena/下生成lili_a.mtr,lili_b.mtr,lili_c.mtr三个还原后的文件。


    比赛规则:
    <1>不限语言,但不能使用任何压缩算法的第三方库
    <2>首先压缩的文件都要能还原,还原文件内容与原始文件完全一致(二进制串完全相同)
    <3>测试时使用多个文件计算平均压缩率,平均压缩率较小者获胜
    <4>压缩率定义为压缩后文件size(字节数)/原始文件size(字节数)*100%(如果压缩后文件比原始文件大,将得到一个大于100%的数),平均压缩率定义为为所有压缩率的算术平均数。
    <5>存在内存泄漏为自动放弃比赛
    <6>存在异常退出为自动放弃比赛
    <7>压缩率相差在0.5%以下(含0.5%)视为相同压缩率
    <8>出现相同压缩率时使用更多文件比较

    展开全文
  • matlab霍夫曼图像压缩方法
  • 今天来简单介绍一下近期调研学习的,基于深度学习的图像压缩算法。End-to-End Optimized Image Compression文章来自ICLR2017,算法由analysis transform、uniform quantizer 和 synthesis transform组成。analysis ...

    e9999e1d3275b70454efe68d4dd18e0f.png

    随着互联网技术的飞速发展,对于图像/视频数据的存储、传输等实际应用的需求也不断扩增。今天来简单介绍一下近期调研学习的,基于深度学习的图像压缩算法。

    End-to-End Optimized Image Compression

    文章来自ICLR2017,算法由analysis transformuniform quantizer synthesis transform组成。analysis transform过程包含三个重复阶段,每个阶段包括卷积线性滤波器+非线性激活函数,联合非线性的目的在于实现局部增益控制。由于uniform quantizer带来了梯度不可导,故引入proxy function代理函数实现网络端到端训练。松弛的损失函数可以看做通过VAE生成模型的对数似然,算法在PSNR、MS-SSIM测量指标下均优于JPEG及JPEG-2000方法。

    4b786e357d0652e5f9c60d10910fac73.png

    如上图所示,算法在编码空间将图像进行编码压缩得到R;转换至感知空间,计算图像的失真率D。

    下图为算法的分析(编码)和合成(解码)模块。分别使用了升降采样,GDN、IGDN结构。

    747cafad60b5ac366cf3fff3560c825a.png

    GDN和IGDN

    在Autoencoder模块中,使用了GDN[1](generalized divisive normalization)进行归一化处理。其类似一般CNN网络中的Batch Normalization作用,可以很好的捕捉图像的统计特性,并将其转换为高斯分布。GDN/IGDN公式如下,对应的在decoder阶段,使用GDN的逆IGND参与网络学习。下式中,k代表stage阶段序号,i,j代表像素位置。

    74e684677015a0de680745a5141e4708.png

    针对本文的更多细节这里不再展开,继续看下一篇~

    Variational image compression with a scale Hyper-prior[2]

    文章来自ICLR2018谷歌团队。这篇论文可谓答疑解惑之良药,之前阅读《Joint Autoregressive and Hierarchical Priors for Learned Image Compression》完全云里雾里的,原来是打开方式不对,应该先读读这篇“绪论”。

    算法提出complex prior,也就是hierarchical模块(下图右),和autoencoder 模块(下图左):

    50d864b805345713d6341e77cc3979b2.png

    可以看到右下角hs模块产出的信号

    ,分别传输至AE和AD中(上图中间部分),作为编码信号传入码流进一步压缩图像信息,作为辅助边信息,帮助图像解码。

    hierarchical priors

    为什么要引入这个hierarchical priors模块?原因在于,图像压缩其实是学习图像的信号分布过程。对于待压缩图像x,我们不知道它的实际分布,且它的分布是存在统计依赖(概率耦合)的,因此需要剔除这部分冗余,实现最优压缩。

    e85c16a6095caee9522d358091abda0d.png

    上图中,2、3子图均可隐约看出图像的大致轮廓,即一些高对比度,边缘纹理等特征(

    )。子图4则完全混淆了图像的“可视”特征,可认为是达到了比较好的信息压缩效果(
    )。由此可以发现,实现理想的最优压缩,我们需要学习
    边信息,添加至熵编码模块中。它既可以实现更优的压缩,也可辅助图像解码恢复。

    论文中提到的,模拟一组目标变量之间依赖关系的标准方法是引入潜在变量,条件是假定目标变量是独立的。我们引入了额外的

    随机变量来捕获目标变量的依赖性。

    4efbaa1c9ee70a41c884ba376cd8c694.png

    上图蓝色部分学习得到的,即为原图像的标准差的空间分部信息,也是hierarchical priors模块的主要目的产物。

    整体算法的损失函数由KL散度推导而来,即图像压缩比及失真率的trade-off,这一设计也被后续的压缩算法传承运用。

    f3d987be026fdd30a990ad0af177ac46.png

    uniform noise

    另外再补充一点,由于算法引入了量化模块Q,为了实现随机梯度优化,在网络训练时需要添加均匀噪声uniform noise “放松模型”,完成参数优化。

    Results

    算法在Kodak数据集上检测性能,MS-SSIM指标达到最优,PSNR略次于BPG方法。

    fbaeb462e82d526247ce8b6df396cea4.png

    Joint Auto-regressive and Hierarchical Priors for Learned Image Compression

    有了论文[2]的阅读基础,理解这篇同样来自谷歌团队的nips2018文章就会轻松一些。文章提出一种结合层级先验 hierarchical priors、自回归Auto-regressive、上下文信息 context of image 等策略的图像压缩算法。算法在PSNR、MS-SSIM等图像指标上均超过BPG方法。可以发现,本篇文章的改进点在于自回归思想及上下文信息的使用。算法框架如下:

    da3b61d58610582766707390f83bc406.png

    上图蓝色框内,算法增加了图像上下文信息模块,及学习熵编码模块中的均值和标准差模块。对比[2]中多学习均值统计量。另外在上图虚线框模块中,结合边信息(Hyper Decoder)和上下文信息(context info)预测熵编码中的概率值。换个角度看,算法基于[3]中的 Gaussian scale mixture (GSM)模型提出的Gaussian mixture model(GMM)高斯混合模型。通过学习两个高斯分布,或者说基于某一已知分布,推算另一数据分布的条件概率值。(个人理解观点,如有错误还请指正) 这就涉及到了我们想要的

    ~ 根据这个概率值,我们能更好的把自编码量化后的信息进一步压缩。异曲同工之妙的还有CVPR2020的《Learned Image Compression with Discretized Gaussian Mixture Likelihoods and Attention Modules》,可一起鉴赏研读~

    再来看看算法各个模块中的网络层设计:

    cd88688f6b8635a724061a3001d5bd71.png

    稍微注意一下,最后的entropy parameters模块中的channel通道数是auto-coder中的2倍。这也很好理解,因为这个模块需要学习均值和方差两个参数。

    依次看一下论文的两个公式:

    0000f4d532eb879009aefb136d43462a.png

    类似[2]中的,损失函数采用压缩比与失真率两个指标的trade-off。由于本文涉及多一层的Hyper encoder,故上式中添加了此部分loss计算。

    Deep Image Compression using Decoder Side Information

    最后介绍一篇arxiv2020的工作《Deep Image Compression using Decoder Side Information》 论文引入side information辅助decoder端进行快速图像解码。注意这个side information和以上几篇论文中的边信息不是同一概念啊,别混淆了。且side information 仅作用在decoder端。

    先看算法框架:

    a99c3454ca8d7a631421bc06bc47df24.png

    同样是auto-encoder模块进行图像编码和解码,初步获得Xdec信号。紧接着,信号流接入SI-Finder模块,实现图像“边”信息提取。在这个模块中生成Ysyn信号,Ysyn信号辅助Xdec信号一起完成图像重建(SI-Net)。

    思考下为什么要引入SI-Finder模块?理论基础来源于Distributed Source Coding(DSC),是视频压缩中的常见方法,其要求编码端与恢复端保持一一对应关系。例举论文中阐述的例子,假设X、Y为对应的两个patch且满足||X-Y||<=3. 我们可以将X压缩至满意的bits,然后根据X、Y之间的对应关系,在解码端通过Y传达的信息,快速找到并恢复想要的X。

    所以SI-Finder模块就是用来解决这个X、Y对应关系的存在,细节如下:

    ee2de1ca18ea7d0446e3a3fa27fb8c64.png

    可以发现,Xdec和Y并不构成一一对应关系,SI-Finder模块会对Y进行auto-encoder处理得到Ydec,然后对Xdec小块与Ydec小块(patch_size)进行互相关性计算(上式所示),从而得到X在Ydec中的对应位置。将Ydec中的位置信息映射至Y中,即得到我们想要的X/Y对应关系,获得Ysyn信号。最后,Ysyn信号与Xdec信号进行concatenated并输入SI-Net模块进行图像恢复。

    来看一下算法的损失函数:

    445fc30f8a925453d0208af4c077c16e.png

    同样也是失真率和压缩率的trad-off,需要注意的是,算法仅对

    信号(算法框架中虚线框所示)进行熵计算,即auto-encoder模块对图像进行初步编码的所得结果。

    Results

    90969c2bd55cac2c7aeffe4485e4a7ac.png

    另外的,论文还针对是否使用2D Gaussian mask处理side information 进行了对比实验,这里不展开描述了。总体来看,算法思路较清晰直观,也给出了开源代码[4],值得好好学习思考~ 以上,如理解有误还请批评指正~ 

    [1] DENSITY MODELING OF IMAGES USING A GENERALIZED NORMALIZATION TRANSFORMATION

    [2] Variational image compression with a scale Hyper-prior

    [3] Scale mixtures of gaussians and the statistics of natural images

    [4] ayziksha/DSIN

    适合于图像重建问题的归一化层:GENERALIZED NORMALIZATION TRANSFORMATION(GDN)

    拉格朗日中值定理:PCS2016、ICLR2016、2017、2018论文阅读

    深度学习图像压缩_1-概述:自编码器、量化、熵编码、率失真_heweiqiran的博客-CSDN博客_深度学习 图像压缩

    详解EM算法与混合高斯模型(Gaussian mixture model, GMM)

    熵编码_百度百科

    边缘分布_百度百科

    展开全文
  • 图像压缩简介

    2019-11-27 18:42:12
    图像压缩的方法 图像的压缩就是一个消除冗余数据的过程,从数学的角度上看,就是将原始图像转化为从统计角度看尽可能不相关的数据集。图像的压缩一般可以分为无损压缩和有损压缩,也可以根据需要进行有损或无损压缩...

    为什么需要对图像进行压缩?

    图像的数据量通常很大,所以就给图像的存储、处理和传输带来了很大的问题。为了应对这些问题,就需要对图像进行压缩。

    图像压缩的方法

    图像的压缩就是一个消除冗余数据的过程,从数学的角度上看,就是将原始图像转化为从统计角度看尽可能不相关的数据集。图像的压缩一般可以分为无损压缩和有损压缩,也可以根据需要进行有损或无损压缩,即准无损技术。

    • 图像压缩的理论基础
      信息域
      图像处理的概念和技术

    • 压缩方法
      预测编码方法(对应空域方法)
      变换编码方法(对应频域方法)
      在这里插入图片描述

    数据冗余

    数据是用来表示信息的,如果不同的方法为表示给定量的数据使用了不同的数据量,那么使用较多数据量的表示方法中,必定有些数据是无用的信息,或是重复了其他数据已经表示的信息,这些数据就是冗余数据。

    • 三种基本的数据冗余

      • 编码冗余
      • 像素间冗余
      • 心理视觉冗余
    • 保真度准则

      • 客观保真度准则
      1. 均方根误差
    • 均方信噪比

      • 主观保真度准则
        在这里插入图片描述

    无误差压缩

    减少像素间冗余
    减少编码冗余

    • 变长编码
      • 霍夫曼(Huffman)编码
        在这里插入图片描述
      • 算术编码
        从整个符号序列出发,采取递推形式连续编码。
      • 其他变长编码
    • LZW编码
    • 位平面编码
    • 无损预测编码

    图像基本格式

    • BMP
      Windows中最常用的图象格式,有压缩和非压缩两种,存储文件的容量较大,可表现单色到24位的色彩, 分辨率从480 * 320到1024 * 768。
    • DXF
      AutoCAD中的图形文件,以ASCII方式存储图形,表现图形的尺寸大小方面非常准确。
    • WMF
      微软Windows图元文件,文件短小,图案造型化。
    • GIF
      各种平台的各种图形处理软件上均可以使用的经过压缩的图形格式。存储的色彩数最高只能达到256种。具有一定的动画效果和短小,所以 多用在Web上。色彩深度低。
    • JPG
      通过一种有损压缩方案获得的高压缩率的图像文件,色彩最高可以达到24位其“有损性”一般不易被人察觉,广泛应用于Web中。没有Alpha通道。
    • PNG
      流式网络图形格式试图替代GIF和TIFF文件格式。用来存储灰度图像时,灰度图像的深度可16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。因为它压缩比高,生成文件容量小,常用于视频序列图存储。
    • SWF
      FLASH的发布格式,其实是一种多媒体文件的格式,只是在FLASH二维动画表现领域表现其的2D动画特征。
    • PSD
      Photoshop中的标准文件格式,专门为Photoshop而优化。
    展开全文
  • 图像压缩介绍 概念 图像压缩是图像编码的一种典型用途。数据压缩的对象是数据,大的数据量并不代表含有大的信息量。图像压缩就是除去图像中多余的数据而对信息没有本质的影响。 目的 图像编码压缩的主要目的是用尽...
  • 图像压缩原理

    万次阅读 多人点赞 2016-06-20 11:05:30
    本文介绍了图像压缩的背景,原理。简单易懂,相信能让你有所收获。
  • 图像压缩是图像处理中应用最好,应用广泛的部分 一阶马尔可夫图像信源:像素之间的关系尽量的少 但是在图像中不现实,图像之间的相关性非常的高,多阶马尔可夫信源(不是很懂) 反正就是KL变换不是很好...
  • 使用CNN对自然图像压缩重构【图像压缩感知】

    千次阅读 热门讨论 2019-05-12 15:36:09
    分析论文:Shi W, Jiang F, Zhang S, et al. Deep Networks for Compressed Image Sensing[J]. 2017:877-882. 论文题目:Deep Networks for Compressed Image Sensing 自然图像压缩深度网络.
  • C++ 图像压缩算法

    热门讨论 2014-03-17 22:14:28
    基于C++的图像压缩算法,可以压缩多种类型的图片,可调压缩率
  • 数字图像压缩编码

    2020-06-05 15:57:37
    数字图像压缩编码基础 数字图像的压缩是指在不同用途的图像质量要求下,用最少的比特数表示一幅图像的技术。 数字图像的压缩是实现图像存储和传输的基础。 数字图像压缩目的: 节省图像存储容量;减少传输信道容量;...
  • 图像压缩编码

    2017-04-10 14:19:41
    1.图像压缩编码  图像压缩就是对图像数据按照一定的规则进行变换和组合,用尽可能少的数据量来表示影像。 ①必要性  图像的数据量非常大,为了有效地传输和存储图像,有必要压缩图像的数据量,而且现代通讯技术...
  • OpenCV—python 图像压缩

    千次阅读 2019-09-12 08:58:50
    文章目录一、简单的图像压缩二、待续 一、简单的图像压缩 import cv2 ''' ====图像压缩===== CV_INTER_NN - 最近邻插值, CV_INTER_LINEAR - 双线性插值 (缺省使用) CV_INTER_AREA - 使用像素关系重采样。当...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,590
精华内容 7,836
关键字:

图像压缩