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

    2007-11-15 13:10:08
    mfc编写的图像压缩算法,有详细的注释!
  • 这篇文章主要介绍了Python基于opencv的图像压缩算法,结合实例形式分析了使用opencv进行图像压缩的常用操作技巧与注意事项,需要的朋友可以参考下本文实例讲述了Python基于opencv的图像压缩算法。分享给大家供大家参考...

    这篇文章主要介绍了Python基于opencv的图像压缩算法,结合实例形式分析了使用opencv进行图像压缩的常用操作技巧与注意事项,需要的朋友可以参考下

    本文实例讲述了Python基于opencv的图像压缩算法。分享给大家供大家参考,具体如下:

    插值方法:

    CV_INTER_NN - 最近邻插值,

    CV_INTER_LINEAR - 双线性插值 (缺省使用)

    CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法..

    CV_INTER_CUBIC - 立方插值.

    函数 cvResize 将图像 src 改变尺寸得到与 dst 同样大小。若设定 ROI,函数将按常规支持 ROI.

    程序1:图像压缩(第一版)

    # coding=utf-8

    import time

    time1 = time.time()

    import cv2

    image=cv2.imread("c:/1.jpg")

    res = cv2.resize(image, (1280,960), interpolation=cv2.INTER_AREA)

    # cv2.imshow('image', image)

    # cv2.imshow('resize', res)

    # cv2.waitKey(0)

    # cv2.destroyAllWindows()

    cv2.imwrite("C:/5.jpg",res)

    time2=time.time()

    print u'总共耗时:' + str(time2 - time1) + 's'

    4.19M—377k 压缩了11倍

    程序2:图像压缩(第二版)

    #-*-coding:utf-8-*-

    #############设置编码################

    import sys

    reload(sys)

    sys.setdefaultencoding('utf-8')

    ###################导入计算机视觉库opencv和图像处理库PIL####################

    from PIL import Image

    from PIL import ImageEnhance

    from PIL import ImageFilter

    import cv2

    import time

    time1 = time.time()

    ####################读入图像###############################

    image=cv2.imread("c:/pic//0.jpg")

    ####################双三次插值#############################

    res = cv2.resize(image, (1280,960), interpolation=cv2.INTER_AREA)

    ####################写入图像########################

    cv2.imwrite("C:/pic/101.jpg",res)

    ###########################图像对比度增强##################

    imgE = Image.open("c:/pic/101.jpg")

    imgEH = ImageEnhance.Contrast(imgE)

    img1=imgEH.enhance(2.8)

    ########################图像转换为灰度图###############

    gray = img1.convert("L")

    gray.save("C:/pic/3.jpg")

    ##########################图像增强###########################

    # 创建滤波器,使用不同的卷积核

    gary2=gray.filter(ImageFilter.DETAIL)

    gary2.save("C:/pic/2.jpg")

    #############################图像点运算#################

    gary3=gary2.point(lambda i:i*0.9)

    gary3.save("C:/pic/4.jpg")

    # img1.show("new_picture")

    time2=time.time()

    print u'总共耗时:' + str(time2 - time1) + 's'

    4.17M–>290kb

    程序3:函数版本

    #-*-coding:utf-8-*-

    #############设置编码################

    import sys

    reload(sys)

    sys.setdefaultencoding('utf-8')

    ############导入计算机视觉库opencv和图像处理库PIL####################

    from PIL import Image

    from PIL import ImageEnhance

    from PIL import ImageFilter

    import cv2

    import time

    time1 = time.time()

    ########################自定义图像压缩函数############################

    def img_zip(path,filename1,filename2):

    image = cv2.imread(path+filename1)

    res = cv2.resize(image, (1280, 960), interpolation=cv2.INTER_AREA)

    cv2.imwrite(path+filename2, res)

    imgE = Image.open(path+filename2)

    imgEH = ImageEnhance.Contrast(imgE)

    img1 = imgEH.enhance(2.8)

    gray1 = img1.convert("L")

    gary2 = gray1.filter(ImageFilter.DETAIL)

    gary3 = gary2.point(lambda i: i * 0.9)

    gary3.save(path+filename2)

    ################################主函数##################################

    if __name__ == '__main__':

    path=u"c:/pic/"

    filename1="0.jpg"

    filename2="1.jpg"

    img_zip(path,filename1,filename2)

    time2 = time.time()

    print u'总共耗时:' + str(time2 - time1) + 's'

    相关推荐:

    展开全文
  • jpeg图像压缩算法,matlab
  • JPEG图像压缩算法

    2018-05-24 17:47:54
    多媒体技术中的JPEG图像压缩算法,主要是实验指导书qa
  • 无损图像压缩算法和硬件架构
  • C++ 图像压缩算法

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

    2014-05-26 16:35:33
    jpeg,图像压缩算法标准,主要的编码方式 huffman 无损压缩编码
  • 人脸图像压缩算法

    2013-06-17 09:31:06
    人脸图像压缩算法,matlab实现,Ieee TIP 上的文章
  • 改进的EZW的图像压缩算法的研究,刘杰云,,本文通过分析EZW图像压缩算法的原理及实现过程,讨论了传统的EZW算法的优点及存在的不足。在此基础上,结合图像的视觉特点及人眼的
  • 今天来简单介绍一下近期调研学习的,基于深度学习的图像压缩算法。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)

    熵编码_百度百科

    边缘分布_百度百科

    展开全文
  • 基于FPGA的图像压缩算法研究 基于FPGA的图像压缩算法研究 基于FPGA的图像压缩算法研究 基于FPGA的图像压缩算法研究 基于FPGA的图像压缩算法研究
  • 一种新的分形高光谱图像压缩算法
  • WSQ图像压缩算法

    热门讨论 2012-03-27 12:28:47
    此代码是国际通用的WSQ图像压缩算法,内附动态库和java调用方式。
  • 主要介绍了Python基于opencv的图像压缩算法,结合实例形式分析了使用opencv进行图像压缩的常用操作技巧与注意事项,需要的朋友可以参考下
  • CCSDS图像压缩算法适合有误码的恶劣环境 博文链接:https://graduate.iteye.com/blog/239974
  • jbig2二值图像压缩算法实现,C++实现,jbig2是二值图像压缩效果效率平衡最佳的国际标准
  • 针对计算机桌面图像压缩问题,提出一种基于颜色聚类的图像压缩算法。将桌面图像划分成16×16的非重叠块,归为文本/图形块、自然图像块及混合块3类。对色彩丰富文本/图形块进行颜色聚类,以降低块的颜色种类数,并做...
  • 基于Blackfin533的CCSDS图像压缩算法编码优化,摘要通过程序结构的调整,编码结构的优化及代码的汇编级优化,完成编码器的DSP高效实现。实验结果表明,优化后的编码器降低了运算复杂度,提高了CCSDS图像压缩算法的...
  • CCSDS图像压缩算法之我见CCSDS:Consultative Committee for Space Data System,国际空间数据系统咨询委员会,于1982年NASA发起组织,至今已经定义了许多空间数据系统的协议规范和标准,如空地通信协议等一系列标准...

    ca2e36845249c4aab8dbdef2adc1d139.gif

    ac31e5e02d561dccc488acd7897ab4fb.png

    点击上方蓝字关注我们!

    CCSDS图像压缩算法之我见33d59f2c93c91e2485de96885039eb42.gif

    CCSDS:Consultative Committee for Space Data System,国际空间数据系统咨询委员会,于1982年NASA发起组织,至今已经定义了许多空间数据系统的协议规范和标准,如空地通信协议等一系列标准和规范。

         今天主要给大家介绍CCSDS发布的图像压缩算法。

    8bb4118973334a503662f0635930fbff.png

    CCSDS指定的深空探测图像的压缩标准从1997年提出第一个建议到2005年11月发布推荐标准,CCSDS图像压缩算法不断从压缩效率和算法复杂度上进行改进,对比JPEG2000, CCSDS图像压缩算法更适用于硬件实现,实现的复杂度更低,且专门面向遥感图像幅宽及bit深度的优化支持,如支持从4bits到16bits的比特位面深度,支持无损和有损,支持以帧方式和非帧方式(如行推扫)处理输入图像,使得该算法更适用于深空探测及对地观测。

         下面给大家详细的分享下CCSDS图像压缩算法,整个算法的处理和JPEG2000类似,算法处理流程如下所示:

    f8f4ef903b5227bde42919a83d6e173c.png

    1.   9/7小波变换

    Tips:小波变换

    电子工程类的同学们应该都知道,信号分析分为时域分析和频域分析两种(图像的时域和频域处理也非常有意思,如果感兴趣的话推荐大家看下经典的冈萨雷斯版数字图像处理课本)。这里有一个非常牛逼的人给出一个非常牛逼的公式,拉普拉斯。这个公式(变换)牛逼的地方就在于把一个自变量是t(时间)的微分方程,转换成了自变量是s(频率)的传递函数,通过变换竟然改变了自变量。当将信号从时域转换到频域后我们这些搬砖的工程师就知道了信号中哪些频率是有用的哪些频率是没用的,比如我们要调整一首歌曲中的低频,高频,中频,这样在频域处理起来要比在时序简单很多

    小波变换:下面简单的从傅里叶变换->短时傅里叶变换->小波变换的顺序来说明小波变换的由来和优点。

    傅里叶变换有一个非常明显的局限性,就是对非平稳过程的处理,假如存在一个信号是随时间变换的非平稳信号,那么经过傅里叶变换后他们的频域成分(分量)可能是一样的,这样你在做频域分析的时候一定会懵逼。因为它只能得到一段信号总体上包含哪些频率的成分,但是对各成分出现的时刻却不知道,因此两个时域相差很大的信号,可能频谱是一样的。

         但是现实中的信号基本上全部是非平稳过程的,我们在进行信号分析时不仅想知道信号的频率域,还想知道各个频率分量出现的时间以及信号频率随时间变换的情况,所以这个时候傅里叶变化的局限性就很明显了。如下图所示,两个时域相差很大的信号,得到频谱确实一样的(其实频率分量出现的时间是不一样的)

    97e798bb18ef6eec53230983aacadafa.png

    这时就有人想到了数学中常用的分解逼近法,把整个时域过程分解成无数个等长的小过程,每个小过程近似平稳,再进行傅里叶变换,这样不就知道了哪个时间点上出现了什么频率,这个思想就是信号分析中另一个牛逼的思路-加窗。

    但是这个方法也有个缺陷,那就是窗函数选多长?窗太窄会导致频率分辨率差,窗太长时间分辨率会差。用一个有意思的概念解释,量子力学中的海森堡不确定性(薛定谔的猫),就如同在量子力学中我们不能同时获取一个粒子是自旋向上还是自旋向下,在信号分析中我们也不能同时获取信号绝对精准的时刻和频率,所以就没法给出精准的窗函数。

          这里就引出了小波变换,小波变换走了另一条路,把傅里叶变换中无线长的三角函数基换成了有限长的会衰减的小波基,这样不仅能获取频率,还能定位到时间。

    f64cf21a96184e68aa7b34eed3b2ef39.png

          从上面公式可以看出,不同于傅里叶变换,变量只有频率ω。小波变换有两个变量,尺度α(Scale)和平移量τ(Translation)。尺度α控制小波函数的伸缩,平移量τ控制小波函数的平移。尺度α就对应与频率,平移量τ就对应于时间。

           介绍一个特别经典的小波分析教程网站,感兴趣的同学可以了解下

          http://users.rowan.edu/~polikar/WTtutorial.html

    在CCSDS图像压缩标准中,使用二维、三层9/7离散小波变换实现图像的频域变换,将图像数据进行去相关,将图像高频部分和低频部分分开。

    Tips:对于上面这句话,没有学过图像处理的先不要慌,给大家解释下。

          二维:所谓二维小波变换就是对一维小波变换的迭代应用,简单来说就是先对图像行进行一维小波变换,之后再对图像列进行一维小波变换,如下如所示:

    e738d974759a1469724b6d5d6f3ac38b.png

           三层:为了提升压缩效率,标准中建议对二维小波进行三层变换,所谓三层变换其实就是对第一层留下的LL1子带再进行一次二维小波变换,然后对得到的第二层LL2子带再做一次小波变换,最终得到二维三层小波变换。

    40a7460b8768ad4c7e76c23119caa7fc.png

    CCSDS给出了两组小波变换系数,分别是浮点系数和整数系数,便于后续实现,我们仅关心整数系数,整数系数如下,其中D为高频分量,C为低频分量:

    4d860ab2318b8cf6190d5d5634f005e4.png

    注意上面公式中那个不是中括号,是向下取整的意思。

    划重点,在实现算法前,第一步也是最重要的一步就是优化算法,优化的思路有两个,一个是速度和面积,一个是便于实现。举个例子来说明下,如上面的其中一个公式,如下所示:

    c5aabdc9fb6cba00c130a35aa317d106.png

          如果直接实现,那么需要需要计算3次加法、1次减法、三次乘法以及三次除法,对于硬件语言来说,实现除法一般难度较大且比较消耗资源。所以我们想办法对公式进行化简合并,看能不能消除除法。

    facfc161b15afe93501669a403cac36f.png

    经过化简后我们可以看到,公式中仅剩2的整数次幂,以及加减法,这样在硬件实现中可以通过左移和右移来实现乘法和除法,而剩下的加法和减法就比较容易实现了。

    多插一嘴,图像转换到频域后,被分为高频分量和低频分量,简单来理解就是整体和细节,所以在有损压缩时,我们通过牺牲图像的细节来达到压缩数据量的目的,所以在后续的编码过程中,也是先进行低频系数编码再进行高频系数编码(截断)。

          再介绍一个后面会用到知识,比特平面分层。还是通过上面的细节和轮廓来解释。比如一个灰度图,每个像素点的量化位宽是8bit,如下所示:

    0cccfca6fdaa5ed08007b0138e5fa127.png

           如上图所示,图像像素中越低的bit平面表示的是图像的细节,越高的bit平面表示的图像的轮廓,假如用最粗暴的办法在时域压缩图像,那我们肯定丢弃的图像的细节信息,留下图像的轮廓,比如将每个像素点的低3位都写成0,这样一来图像就有大量的冗余信息,其实就达到了压缩的目的。

          如果还是不好理解的话,可以看下下面这个数字86431,如果丢弃掉十位和个位,变成86400,这样虽然这个数字丢弃了细节,但是它的数量级86400还在,不影响它要表达的数据的量级。但是如果丢弃掉万,那么剩下的数字和之前相比就会影响到要描述大小了。

    a17be34ac761ca5758f00ece8947fe28.gif

    2.位平面编码

    在CCSDS标准中,位平面编码是对小波变换后得到的小波系数进行编码处理。对于小波系数,按照重要性划分,低频区域大于高频区域,高位面大于低位面。首先位平面编码按照位面位平面的重要性以从最高位到最低位的顺序进行编码以及输出,先进行低频系数编码,再进行高频系数编码。

          小波变换后的系数图像结构如下图所示:

    257355f084078d008c1bc7b42e72f465.png

    小波变换后的图像首先被划分为若干个图像段Segment,每个Segment是S个连续图像块Block组成的图像片段,其中16≤S≤220,下图中为小波变换图像用不同颜色标定的4个图像片段。每个segment被依次独立编码,解码时每个segment被独立解码,解码不受邻近segment解码程度的影响。

    d7062393169d1cd6f7340006c74d0052.png

           这里再进一步解释下,CCSDS编码处理的单位是段(Segment),其大小定义在32x32和8192x8192之间。对于同一幅图像来说,段划分的越大,则重建(解压缩)的图像质量越好,段划分的越小,则运算时需要的缓存空间越小。每个段由固定大小8x8的块组成,每个块是位平面编码处理的基本单元,一个块含有64个小波系数。这64个小波系数中,包含1个直流系数和63个交流系数。如下图所示:

    b020c5359197e93350625c834930cf09.png

           上图中每个块可以分成DC coefficient、parents、children和grandchildren。一个直流系数对应三个parents,以每个parent为根节点形成一个三级四叉树,对应四个children和16个grandchildren。图像块的坐标对应关系如下表所示:

    29265290c8477e48a952590e206efe41.png

    在每个段中,每16个块组成一个群(gaggle),CCSDS图像压缩算法以群为单位完成一个段的编码。最后一个群可能不足16个块,而是以群长度对16取模后的值。

          总结下上述编码划分,段->群->块。一个块有64个小波系数,一个群由16个块组成,一个段由若干个群组成。

    整个位平面编码顺序步骤如下所示:

    • 段头编码

    • 初始化直流系数编码

    • 交流系数比特深度编码

    • 比特平面b=BitDepthAC-1编码

    • 比特平面b=BitDepthAC-2编码

    • ……

    • 比特平面b=0编码

    本期到此就结束啦,下期我们再聊压缩的最核心部分---编码过程

    140e1b6faffe93d842d63c37f57bf835.gif

    展开全文
  • 基于Matlab实现的经典的图像压缩算法,包括哈夫曼编码,算术编码、字典编码、行程编码-Lempel-zev 编码正交变换编码如DCT、子带编码 粒子、子采样、比特分配、矢量量化
  • 基于 MATLAB的数字图像压缩算法研究 作者姓名:杨月桃 专业班级:数学与应用数学系1班 指导教师:陈辉 索引 1.方法简介 2.图像的量化 3.图像变换 4.预测编码 5.总结 成都理工大学2011屈毕业论文 1.方法简介 图像压缩...
  • 补充几种图像压缩算法 1. 图像数据压缩方法的分类 ? 数据压缩的任务在不影响或少影响图像 质量的前提下尽量设法减少图像数据中 的数据量其首要任务是设法去掉各种冗 余的数据 2 ? 数据压缩实际是一个编码的过程即 将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,399
精华内容 1,759
关键字:

图像压缩算法