STM32H7之JPEG编解码基础知识

硬件框图

在这里插入图片描述
通过这个框图,我们可以得到如下信息:
◆ JPEG 硬件外设支持编码和解码
并且对于输入数据和输出数据都有 FIFO 支持。
◆ jpeg_hclk
为 JPEG 内核和寄存器提供时钟。
◆ jpeg_it
JPEG 全局中断输出。
◆ jpeg_ift_trg
JPEG 输入 FIFO 阈值信号,可触发 MDMA。
◆ jpeg_ifnf_trg
JPEG 输入 FIFO 未满信号,可触发 MDMA。
◆ jpeg_oft_trg
JPEG 输出 FIFO 阀值信号,可触发 MDMA。
◆ jpeg_ofne_trg
JPEG 输出 FIFO 非空信号,可触发 MDMA。
◆ jpeg_oec_trg
JPEG 转换结束信号,可触发 MDMA。

TCbCR颜色格式

(注,硬件 JPEG 解码后输出的图像格式是 YCbCr,所以有必要了解下)
正如几何上用坐标空间来描述坐标集,而色彩空间用数学方式来描述颜色集。常见的 3 种色彩模型是RGB,CMYK 和 YUV。
YCbCr 是 YUV 经过缩放和修改的翻版,只是在表示方法上不同。其中 Y 是指亮度分量,Cb 指蓝色色度分量,而 Cr 指红色色度分量。人眼对视频的 Y 分量更敏感,因此通过对色度分量进行子采样来减少色度分量后,人眼察觉不到的图像质量的变化。
在 YUV 家族中,YCbCr 是在计算机系统中应用最多的成员,其应用领域广泛,JPEG、MPEG 均采用此格式。一般人们所讲的 YUV 大多是指 YCbCr。

YCbCr采样格式

YCbCr 有许多取样格式,如 YCbCr 4:4:4,YCbCr 4:2:2,YCbCr 4:1:1 和 YCbCr 4:2:0。
◆ 4:2:0
表示每 4 个像素有 4 个亮度分量,2 个色度分量 (YYYYCbCr),仅采样奇数扫描线,是便携式视频
设备(MPEG-4)以及电视会议(H.263)最常用格式。
◆ 4:2:2
表示每 4 个像素有 4 个亮度分量,4 个色度分量(YYYYCbCrCbCr),是 DVD、数字电视、HDTV
以及其它消费类视频设备的最常用格式。
◆ 4:4:4
表示全像素点阵(YYYYCbCrCbCrCbCrCbCr),用于高质量视频应用、演播室以及专业视频产品。
具体的采样方式如下图所示,以 8 个像素为一个单元进行采样:
在这里插入图片描述由上面的截图可以了解到:
4:4:4 表示 Y 通道,Cb+Cr 通道全部采样。
4:2:2 表示 Y 通道全部采样,而 Cb+Cr 通道两个像素为一组,统一采用第 1 个颜色值。
4:2:0 表示 Y 通道全部采样,而 Cb+Cr 通道四个像素为一组,统一采用第 1 个颜色值。
下面是整体效果,方便大家更好的理解:
在这里插入图片描述

YCbCr的优势

RGB 信号作为存储和传输的效率不高,因为它们具有大量冗余信息。而使用 YCbCr 可以丢弃一些信息以减少带宽,因为人的肉眼对视频的Y分量更敏感,因此通过对色度分量进行子采样来减少色度分量后,肉眼察觉不到的图像质量的变化。了解这种人为缺点,NTSC 和 PAL 等标准大大降低了色度通道的带宽。
在这里插入图片描述

驱动设计框架

先简单理解一下,等真的用到再去对具体的代码进行查看。
在这里插入图片描述

相关推荐

  1. STM32 基础知识

    2024-07-12 17:44:07       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 17:44:07       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 17:44:07       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 17:44:07       43 阅读
  4. Python语言-面向对象

    2024-07-12 17:44:07       54 阅读

热门阅读

  1. 解决 idea git提交后,文件状态不刷新

    2024-07-12 17:44:07       18 阅读
  2. 如何理解李彦宏说的”不要卷模型,要卷应用

    2024-07-12 17:44:07       18 阅读
  3. Vue3学习记录

    2024-07-12 17:44:07       20 阅读
  4. 浏览器Content-Range断点续传MP4文件

    2024-07-12 17:44:07       20 阅读