控制压缩率的原理

在JPEG压缩编码原理介绍中就知道整个JPEG压缩原理就是通过DCT变换去除空间冗余来达到图片压缩的。

如图1所示,经过DCT变换之后DCT系数只保留的左上角的数据(低频分量数据),右下角部分均变成0.

因此,想要进一步压缩就可以从量化表下手

量化表的量化系数越大,得到的量化后的DCT系数就越小,高频信息消失的更多,图片容量就越小。

图1. 量化过程

图2. DCT变换的频谱

海思平台操作

控制JPEG编码参数的接口

HI_MPI_VENC_SetJpegParam
【描述】
设置JPEG协议编码通道的高级参数

【语法】

HI_S32 HI_MPI_VENC_SetJpegParam(VENC_CHN VeChn, const VENC_JPEG_PARAM_S *pstJpegParam);

【参数】

VENC_JPEG_PARAM_S

typedef struct hiVENC_JPEG_PARAM_S
{HI_U32 u32Qfactor;HI_U8 u8YQt[64];HI_U8 u8CbQt[64];HI_U8 u8CrQt[64];HI_U32 u32MCUPerECS;
} VENC_JPEG_PARAM_S;

其中结构体VENC_JPEG_PARAM_S里的u32Qfactor量化表因子,该因子范围为[1, 99],u32Qfactor 越大,量化表中的量化系数越小,得到的图像质量会更好,同时,编码压缩率更低。同理 u32Qfactor 越小,量化表中的量化系数越大,得到的图像质量会更差,同时,编码压缩率更高。具体的 u32Qfactor 与量化表的关系请见 RFC2435 标准。

因此量化表因子其实就是控制图像所保留高频分量的范围,如果想压缩更低,那就保留的高频分量信息就越少。

在实际应用中,如果对JPEG图片大小没有限制,一般会将u32Qfactor设置为99,这样能保证图像质量最好。但是如果在实际应用场景中,对图片的大小有明确的限制,例如图片必须小于1M,那是不是直接把u32Qfactor调到最小就好了呢?当然不是,通常我们的做法就是先从u32Qfactor从高往下调,每次编码结束后读取JPEG大小是否满足1M,如果不满足的话,那就再把u32Qfactor调小一些,知道满足大小为1M,而图像质量又能得到较好的保证。

参考文档:HiMPP V4.0 媒体处理软件开发参考.pdf

注意

目前的JPEG编码,如果配置的u32Qfactor过低,会导致编码出来的JPEG图片出现偏色等现象,原因是色度的量化步长过大。用户可以通过调用HI_MPI_VENC_SetJpegParam接口修改色度的量化表,限制色度的量化步长,避免偏色等现象。具体的u32Qfactor与量化表的关系请见RFC2435标准。修改色度的量化表有可能会导致JPEG图片容量变大,用于需要权衡图像质量和JPEG图像容量

JPEG编码压缩率调整相关推荐

  1. jpeg编码学习笔记

    jpeg编码学习笔记 各种图片格式目的是在网络传输和存储的时候使用更少的字节,即起到压缩的作用.在图片格式解码后,无论图片的格式,图片数据都是像素数组. 本文将尝试通过JPEG这种图片编码格式的学习, ...

  2. 基于C语言的JPEG编码代码详解

    一.基于C语言的JPEG编码代码详解 #include <stdio.h> #include <stdlib.h> #include <string.h>#prag ...

  3. 数字图像处理|Matlab-数字图像编码实验-有损压缩/压缩算法实验-JPEG编码压缩

    Matlab-数字图像编码实验-有损压缩/压缩算法实验 代码链接:https://download.csdn.net/download/qq_43571150/12033274 查阅JPEG编码的有关 ...

  4. 佳能5D4相机Motion JPEG编码4K MOV视频损坏修复

    Motion JPEG视频编码简介 Motion JPEG是一种视频压缩编码格式,从命名中包含的JPEG可以推断,我们都知道JPEG是最常见的图像文件格式,Motion JPEG编码的每一帧画面都是使 ...

  5. Jpeg编码压缩比例

    jpeg编码命令 gst-launch-1.0 -v v4l2src device = /dev/video0 ! video/x-raw,framerate=30/1,width=1920,heig ...

  6. JPEG编码原理及简易编码器实现

    简介 以学习为目的编写的简易jpeg编码器,以看得懂为目标,代码尽可能清晰简洁,不对内存.性能做看不懂的优化,也不实现jpeg更多高级特性. 这篇文章是我从自己的开源工程中整理来的 本文对应的工程为h ...

  7. JPEG编码原理及文件格式及代码分析

    一 JPEG编码原理 首先我们先来看一下JPEG的编码原理图 如上图所示,下面进行逐步的分析: 1 RGB->YUV 首先为了降低互相的关联性,将RGB转换为YUV,这样就可以对亮度信号和色度信 ...

  8. JPEG编码过程中的霍夫曼编码

    JPEG编码过程中的霍夫曼编码 jpeg文件中的霍夫曼编码分两个部分对DC系数编码和对AC系数的编码. DC系数的编码 编码过程 DC系数的编码由两部分组成, huffman 编码的bitlen + ...

  9. JPEG编码和H264

    jpeg中心思想,图片给人看的,针对人的视觉特性,对亮度敏感,色度不敏感,对高频模糊部分不敏感,低频边界敏感.类似于滤波. 1.ycbcr编码,将亮度y,cb蓝色色度,cr红色色度提出来 2.色度缩减 ...

  10. FFmpeg将Jpeg 编码到视频中

    这个不能直接发h264,需要先解码,再编码 利用FFmpeg将Jpeg图片转为任意视频容器格式 原文: https://blog.csdn.net/oHanTanYanYing/article/det ...

最新文章

  1. 英雄联盟离线更新方法
  2. Qt Quick测试
  3. CString与string、char*的区别和转换
  4. 【珍藏】 2012.NET开发必看资料53个+经典源码77个—下载目录
  5. 动态口令 java_java动态口令登录实现过程详解
  6. Python程序员都会喜欢的6个库
  7. OkHttp之BridgeInterceptor简单分析
  8. 单片机学习笔记(五)
  9. 【数分】1. 常用的效应和定律
  10. 只有加法也能做深度学习,北大、华为等提出AdderNet,性能不输传统CNN
  11. 荣耀手机装联通卡显示无服务器,荣耀X10用不了物联网卡(联通物联卡3g却不能上网)...
  12. val和var和Java
  13. 基于OFBiz的E-TICKET(在线咨询管理)模块
  14. power supply frameware 框架
  15. 《EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES》阅读笔记
  16. zzulioj1094c语言版答案,ZZULIOJ 1094: 统计元音(函数专题)
  17. 模拟键盘自动输入英文——基于pykeyboard和pymouse
  18. UOS安装Java环境
  19. make_layers 作用
  20. iCloud for Android下载

热门文章

  1. 串口通信简介——发展历史与基本概念
  2. ASP.NET项目部署到阿里云服务器(IIS)
  3. 物理学四大神兽!今分享一些有意思的东西~~
  4. JVM之 永久代与元空间
  5. 常见计算机硬件故障维修方法,电脑硬件有哪些常见问题 电脑硬件常见问题维修技巧【详解】...
  6. c语言算个人所得税的源代码,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
  7. 拉姆达表达式启动一个线程
  8. 灰尘对服务器影响吗,灰尘可谓是数据中心机房的死敌
  9. outlook图片显示红叉
  10. 地震速度分析matlab程序,地震波频谱分析。。。。。