音频和视频的基础知识

目录

    • PCM-脉冲编码调制
      • 录音的原理
      • 记录声音-音频数字化
      • 音频数字化-PCM
    • 采样
      • 采样
      • 采样率
      • 采样定理
    • 量化
      • 位深度
    • 编码
    • 声道(Channel)
    • 比特率
    • 信噪比
    • 编码(Encode)
    • 解码(Decode)
    • 常见的音频编码和文件格式
    • 无损
      • Monkey's Audio
      • FLAC
      • ALAC
    • 有损
      • MP3
      • WMA
      • AAC
      • Speex
      • Opus
    • 文件格式
      • Ogg
      • WAV
      • AIFF
    • 有损和无损
    • 声波
    • 音调
    • 响度
    • 音色
    • 噪音
    • 像素
    • RGB颜色模型
    • 位深度
      • 24bit颜色的表示形式
      • 颜色数量
      • 其他位深度
      • 不同位深度的对比
    • 格式
    • 动画
    • YUV
      • 体积更小
      • 组成
      • 兼容性
    • RGB和YUV转换
      • 公式1
      • 公式2
      • 公式3
    • 色度二次采样
      • 原理
      • 概念
      • 采样格式
      • 4:4:4
      • 4:2:2
      • 4:2:0
    • H.264编码
      • 编码器
      • 解码器
      • 编码过程与原理
      • 划分帧类型
        • GOP的长度
        • GOP的类型
      • 帧内/帧间编码
        • 划分宏块
        • 帧内编码
        • 帧间编码
      • 变换与量化
      • 规格

PCM-脉冲编码调制

录音的原理

可以简单理解为:把声源的振动记录下来,需要时再让某个物体按照记录下来的振动规律去振动,就会产生与原来一样的声音。

记录声音-音频数字化

如何把声音(声源的振动)记录下来呢?声音属于模拟信号,但更便于计算机处理和存储的是数字信号(二进制编码),所以需要将模拟信号(Analog Signal)转成数字信号(Digital Signal)后进行存储。这一过程,我们可以称之为:音频数字化。

音频数字化-PCM

将音频数字化的常见技术方案是脉冲编码调制(PCM,Pulse Code Modulation),主要过程是:采样 → 量化 → 编码。

在这里插入图片描述

采样

模拟信号的波形是无限光滑的,可以看成由无数个点组成,由于存储空间是相对有限的,数字编码过程中,必须要对波形的点进行采样。

采样

采样(Sampling):每隔一段时间采集一次模拟信号的样本,是一个在时间上将模拟信号离散化(把连续信号转换成离散信号)的过程。

采样率

每秒采集的样本数量,称为采样率(采样频率,采样速率,Sampling Rate)。比如,采样率44.1kHz表示1秒钟采集44100个样本。

采样定理

根据采样定理(奈奎斯特–香农采样定理,Nyquist-Shannon sampling theorem)得知:只有当采样率高于声音信号最高频率的2倍时,才能把采集的声音信号唯一地还原成原来的声音。

人耳能够感觉到的最高声音频率为20000Hz,因此为了满足人耳的听觉要求,需要至少每秒进行40000次采样(40kHz采样率)。

这就是为什么常见的CD的采样率为44.1kHz。

电话、无线对讲机、无线麦克风等的采样率是8kHZ。

人耳听觉 20HZ–20KHZ 敏感 1KHz–4KHz 最敏感 3.4KHz(再往上容易产生听觉疲劳)

人嗓音 男 80Hz–500Hz 女100Hz–1KHz

电话 200/300–3KHZ

电视 100HZ

20–250 LOW (LF) 250–2KHz MID (MF) 2kHz–4KHz MH 4KHz–20KHz High (HF)

根据采样定律,要保证信号传输中不失真,采样频率最起码是最高频率的两倍,也就是说采样频率6800hz以上都可以,至于为什么是8000hz,可以认为是一种约定而已。

量化

量化(Quantization):将每一个采样点的样本值数字化。

位深度

位深度(采样精度,采样大小,Bit Depth):使用多少个二进制位来存储一个采样点的样本值。位深度越高,表示的振幅越精确。常见的CD采用16bit的位深度,能表示65536(216)个不同的值。DVD使用24bit的位深度,大多数电话设备使用8bit的位深度。

就相当于下图纵坐标的间距 位深度越大 纵坐标刻度越密集,表示的振幅越精确。

下图的横坐标间距越小 表示采样率越高

在这里插入图片描述

编码

编码:将采样和量化后的数字数据转成二进制码流。

声道(Channel)

单声道产生一组声波数据,双声道(立体声)产生两组声波数据。

采样率44.1kHZ、位深度16bit的1分钟立体声PCM数据有多大?

  • 采样率 * 位深度 * 声道数 * 时间
  • 44100 * 16 * 2 * 60 / 8 ≈ 10.34MB

1分钟10.34MB,这对于大部分用户来说是不能接受的。

要想在不改变音频时长的前提下,降低音频数据的大小,只有2种方法:

降低采样指标、压缩。

降低采样指标是不可取的,会导致音频质量下降,用户体验变差,因此专家们研发了各种压缩方案。

举个例子:

现在有个需求,在局域网内实现实时语音,传输层协议使用UDP协议,如果直接使用AudioRecord进行录制音频流并发送到另一端进行播放,音质会非常差,而且断断续续,原因如下:

采样频率: fm = 44.1KHz

量化位数:16bit

声道配置:2(双声道)

那么,码率 V = 44.1K * 16 *2 = 1411.2 Kbps = 176.4KBps,即每秒传输速率大概176.4KB,

若音频帧时间为20ms,每个音频数据包大小为 size = 176.4KBps * 0.02s = 3.528KB,

一般情况下,我们每次读取一个音频帧的数据,可以取整为3600Byte,

所以 每秒大概发送 176.4/3.6=49 个数据包,每个数据包大小为3.6KB。

如果再考虑到数据报头,实测每秒发送约45个数据包,每秒传输速率大概180KB。

由于一般都是使用手机连接Wifi,这就要求网络质量和硬件设备必须很好,而且信道干扰较弱,并且链接的设备不能过多。只要稍微信号不好,就会导致丢包率特别高,而且延时十分大,根本无法满足通信的需要。在这种情况下,我们就需要进行语音压缩、降噪等处理。

比特率

比特率(Bit Rate),指单位时间内传输或处理的比特数量,单位是:比特每秒(bit/s或bps),还有:千比特每秒(Kbit/s或Kbps)、兆比特每秒(Mbit/s或Mbps)、吉比特每秒(Gbit/s或Gbps)、太比特每秒(Tbit/s或Tbps)。

采样率44.1kHZ、位深度16bit的立体声PCM数据的比特率是多少?

  • 采样率 * 位深度 * 声道数
  • 44100 * 16 * 2 = 1411.2Kbps

通常,采样率、位深度越高,数字化音频的质量就越好。从比特率的计算公式可以看得出来:比特率越高,数字化音频的质量就越好。

信噪比

信噪比(Signal-to-noise ratio,SNR,S/N,讯噪比),指信号与噪声的比例,用于比较所需信号的强度与背景噪声的强度,以分贝(dB)为单位。

位深度限制了信噪比的最大值,它们的关系如下表所示。

位深度信噪比
424.08
848.16
1166.22
1272.24
1696.33
18108.37
20120.41
24144.49
32192.66
48288.99
64385.32

关于信噪比的意义:

图像的信噪比和图像的清晰度一样,都是衡量图像质量高低的重要指标。图像的信噪比是指视频信号的大小与噪波信号大小的比值,其公式为:

S/N(信噪比)= 20 log (信号/噪声)dB

信噪比大,图像画面就干净,看不到什么噪波干扰(表现为“颗粒”和“雪花”),看起来很舒服;若信噪比小,则在画面上,可能满是雪花,严重影响图像画面。信噪比与图像质量之间具有如下对应关系:

S/N为60dB(比率为1000:1)时,图像质量优良,不出现噪声;

S/N为50dB(比率为316:1)时,图像有少量噪声,但图像质量算好;

S/N为40dB(比率为100:1)时,图像有一定的精细颗粒或雪花,图像的精细结构受到一定的损失;

S/N为30dB(比率为32:1),图像将是有大量噪声的劣质图像;

S/N为20dB(比率为10:1),图像就不能使用。

影响信噪比的因素很多,例如电源的干扰,电子元器件过热产生的干扰,光敏元件上的小电压放大成0.7V视频信号时,因放大而产生的噪声,光照度降低时,放大器增益提高,噪声也将增加等等。

一般摄像机的信噪比在50-60dB之间,录像机在40-50dB之间。

编码(Encode)

PCM数据可以理解为是:未经压缩的原始音频数据,体积比较大,为了更便于存储和传输,一般都会使用某种音频编码对它进行编码压缩,然后再存成某种音频文件格式

压缩分为无损压缩和有损压缩。

  • 无损压缩
    • 解压后可以完全还原出原始数据
    • 压缩比小,体积大
  • 有损压缩
    • 解压后不能完全还原出原始数据,会丢失一部分信息
    • 压缩比大,体积小
    • 压缩比越大,丢失的信息就越多,还原后的信号失真就会越大
    • 一般是通过舍弃原始数据中对人类听觉不重要的部分,达成压缩成较小文件的目的
  • 压缩比 = 未压缩大小 / 压缩后大小

解码(Decode)

当需要播放音频时,得先解码(解压缩)出PCM数据,然后再进行播放。

常见的音频编码和文件格式

需要注意的是:音频文件格式并不等于音频编码。比如:

  • WAV只是一种文件格式,并不是一种编码
  • FLAC既是一种文件格式,又是一种编码

下面对常见的音频编码和文件格式做一个简介。

名称无损压缩文件扩展名
Monkey’s Audio✔️.ape
FLAC(Free Lossless Audio Codec)✔️.flac
ALAC(Apple Lossless Audio Codec)✔️.m4a/.caf
MP3(MPEG Audio Layer III).mp3
WMA(Windows Media Audio).wma
AAC(Advanced Audio Coding).acc/.mp4/.m4a
Vorbis.ogg
Speex.spx
Opus.opus
Ogg.ogg
WAV(Waveform Audio File Format).wav
AIFF(Audio Interchange File Format).aiff、.aif

无损

Monkey’s Audio

Monkey’s Audio,是一种无损的音频编码和文件格式,文件扩展名为.ape,压缩率一般在55%左右。

FLAC

FLAC(Free Lossless Audio Codec),是一种无损的音频编码和文件格式,文件扩展名为.flac。虽然压缩率稍有不及Monkey’s Audio,但FLAC技术更先进,占用资源更低,有更多的平台及硬件产品支持FLAC。

ALAC

ALAC(Apple Lossless Audio Codec),是由Apple开发的一种无损的音频编码,文件扩展名为.m4a、.caf。

有损

MP3

MP3(MPEG Audio Layer III),是非常流行的一种有损音频编码和文件格式,文件扩展名为.mp3。

第1版是:MPEG-1 Audio Layer III,属于国际标准ISO/IEC 11172-3
第2版是:MPEG-2 Audio Layer III,属于国际标准ISO/IEC 13818-3
第3版是:MPEG-2.5 Audio Layer III,并不是由MPEG官方开发的,不是公认的标准

WMA

WMA(Windows Media Audio),是由Microsoft开发的音频编码和文件格式,文件扩展名为.wma。包括4种类型:

WMA:原始的WMA编解码器,作为MP3的竞争者,属于有损音频编码
WMA Pro:支持更多声道和更高质量的音频,属于有损音频编码
WMA Lossless:属于无损音频编码
WMA Voice:属于有损音频编码

AAC

AAC(Advanced Audio Coding),是由Fraunhofer IIS、杜比实验室、AT&T、Sony、Nokia等公司共同开发的有损音频编码和文件格式,压缩比通常为18:1。

AAC被设计为MP3格式的后继产品,通常在相同的比特率下可以获得比MP3更高的声音质量,是iPhone、iPod、iPad、iTunes的标准音频格式。

AAC编码的文件扩展名主要有3种:

.acc:传统的AAC编码,使用MPEG-2 Audio Transport Stream(ADTS)容器
.mp4:使用了MPEG-4 Part 14的简化版即3GPP Media Release 6 Basic(3gp6)进行封装的AAC编码
.m4a:为了区别纯音频MP4文件和包含视频的MP4文件而由Apple公司使用的扩展名
Apple iTunes对纯音频MP4文件采用了.m4a文件扩展名
M4A的本质和音频MP4相同,故音频MP4文件可以直接更改文件扩展名为.m4a
Vorbis
Vorbis,是由Xiph.Org基金会开发的一种有损音频编码。通常以Ogg作为容器格式,所以常合称为Ogg Vorbis,文件扩展名为.ogg。

Speex

Speex,是由Xiph.Org基金会开发的一种有损音频编码和文件格式,文件扩展名为.spx。

Opus

Opus,是由Xiph.Org基金会开发的一种有损音频编码和文件格式,文件扩展名为.opus。用以取代Vorbis和Speedx。经过多次盲听测试,在任何给定的比特率下都比其他标准音频格式具有更高的质量,包括MP3、AAC。

文件格式

Ogg

Ogg是一种多媒体文件格式,由Xiph.Org基金会所维护,可以纳入各式各样的音视频编码(音频、视频都可以),文件扩展名常为.ogg。

Ogg常用的音频编码有:

有损压缩:Speex、Vorbis、Opus
无损压缩:FLAC
未压缩:PCM

WAV

WAV(Waveform Audio File Format),是由IBM和Microsoft开发的音频文件格式,扩展名是.wav,通常采用PCM编码,常用于Windows系统中。

AIFF

AIFF(Audio Interchange File Format),由Apple开发的音频文件格式,扩展名是.aiff、.aif。跟WAV一样,通常采用PCM编码,常用于Mac系统中。

有损和无损

根据采样率和位深度可以得知:相对于自然界的信号,音频编码最多只能做到无限接近,任何数字音频编码方案都是有损的,因为无法完全还原。目前能够达到最高保真水平的就是PCM编码,因此,PCM约定俗成叫做无损音频编码,被广泛用于素材保存及音乐欣赏,CD、DVD以及常见的WAV文件中均有应用。

但并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度的无限接近。我们习惯性的把MP3列入有损音频编码范畴,是相对于PCM编码的。要做到真正的无损是困难的,就像用数字去表达圆周率,不管精度多高,也只是无限接近,而不是真正等于圆周率的值。

声波

以扬声器为例子,扬声器发声时是振膜在振动。

振膜的振动会导致振膜旁边的空气振动,然后导致更大范围的空气跟着一起振动,最后耳朵旁边的空气也开始振动。

空气的振动带来了动能(Kinetic Energy),能量传入了耳朵中,最后就听到了声音。

所以,扬声器可以通过空气来传播能量,而不是传播空气本身。

声音与波有着相同的关键特征:可以通过介质传播能量,而不是传播介质本身。

  • 因此,我们也把声音称为声波
  • 声音的传播介质可以是气体、液体、固体,比如:2个人面对面交流时,声音是通过空气传播到对方耳中

为什么自己录下来的声音和平时说话的声音,听起来会不太一样?

  • 当自己说话的时候,实际上自己听到了2个声音,分别来自2种不同的传播介质
    • 声波 → 空气 → 耳朵
    • 声波 → 血肉、骨骼等介质 → 耳朵
  • 录制声音时
    • 声波 → 空气 → 录音设备
  • 当听自己录下来的声音时,自己只听到了1个声音
    • 声波 → 空气 → 耳朵
  • 所以,平时别人耳中听到的你说话的声音,就是你录音中的声音

人耳又是如何听到声音的呢?

大概过程是:声源 → 耳廓(收集声波) → 外耳道(传递声波) → 鼓膜(将声波转换成振动) → 听小骨(放大振动) → 耳蜗(将振动转换成电信号) → 听觉神经(传递电信号) → 大脑(形成听觉)

如果只关注单个空气分子,可以发现:它来回振动的轨迹,就是一个正弦或余弦函数的曲线图

横轴:代表时间。

纵轴:代表空气分子来回振动时产生的位移。

平衡位置:该空气分子的未受振动干扰时的位置

从平衡位置到最大位移位置之间的距离,叫做振幅(Amplitude)。

空气分子完全来回振动一次所花费的时间,叫做周期(Period),单位是秒(s)。

物体每秒来回振动的次数,叫做频率(Frequency),也就是周期分之一。

  • 单位是秒分之一(1/s),也称为赫兹(Hz)
  • 比如440Hz代表物体每秒来回振动440次
  • 因此,频率用来表示物体振动的快慢

理论上,人类的发声频率是85Hz ~ 1100Hz,人类只能听见20Hz ~ 20000Hz之间的声音。

  • 低于20Hz的称为:次声波(Infrasound)
  • 高于20000Hz的称为:超声波(Ultrasound)

音调

频率越高,音调就越高。

频率越低,音调就越低。

通常女生讲话时,声带振动的频率就比较高,因此我们听到的音调就高,而男生讲话时,声带振动的频率就比较低,因此我们听到的音调就低。

响度

当提高声音的响度(音量,大小)时,振动的幅度会变大。

我们常用dB(分贝)来描述声音的响度。

分贝情景
0刚能听到的声音
15以下感觉安静
30耳语的音量大小
40冰箱的嗡嗡声
60正常交谈的声音
70相当于走在闹市区
85汽车穿梭的马路上
95摩托车启动声音
100装修电钻的声音
110卡拉OK、大声播放MP3的声音
120飞机起飞时的声音
150燃放烟花爆竹的声音

音色

音色(Timbre)是指声音的特色。

  • 不同的声源由于其材料、结构不同,则发出声音的音色也不同
  • 我们之所以能够根据声音区分出不同的乐器、不同的人,都是因为它们的音色不同
  • 不同音色的声音,即使在同一响度和同一音调的情况下,也能让人区分开来

原理

通常声源的振动产生的并不是单一频率的声波,而是由基音和不同频率的泛音组成的复合声音。

  • 当声源的主体振动时会发出一个基音(基本频率,基频,Fundamental Frequency)
  • 同时其余各部分也有复合的声源,这些声源组合产生泛音
  • 泛音(Overtone)其实就是物理学上的谐波(Harmonic)

音调是由基音决定的,而音色主要取决于泛音。

音色不同,波形也就不同。

声音的最终波形是由多个不同的波形组合而成的。

噪音

声源作无规则振动时发出的声音

长期的噪音可以影响人的身心健康。

  • 噪音可能导致各种不同程度的听力丧失
    • 长时间处于85分贝以上的噪音可以影响人的听力
    • 响于120分贝的噪音可以使人耳聋

研究表明:

  • 让人讨厌的噪音和婴儿啼哭及人类尖叫的声音有着相同的频率
  • 人耳对2000Hz ~ 4000Hz范围内的声音是难以接受的
  • 而指甲刮黑板声音的特殊之处,就在于它的频率,正好处于2000Hz ~ 4000Hz频段内

大脑中的杏仁核(Amygdala)在听到指甲刮黑板的声音时,会异常兴奋,于是霸道地接管了大脑听觉的任务,向听觉皮层(Auditory Cortex)发出痛苦的信息。听觉皮层是属于大脑皮层(大脑皮质,Cerebral Cortex)的一部分。

像素

一个图的分辨率是60x50,用Photoshop放大图片上百倍后,可以清晰地看到图片由若干个方形的色块组成,每一个方形的色块被称为:像素(Pixel)。这张图片的每一行都有60个像素,共50行,总共60*50=3000个像素。

总结一下:

  • 每张图片都是由N个像素组成的(N≥1)
  • 如果一张图片的分辨率是WxH,那么:
    • 每一行都有W个像素,共H行,总共W*H个像素
    • 宽度是W像素,高度是H像素

每个像素都有自己独立的颜色,若干个像素就组成了一张色彩缤纷的完整图片。

RGB颜色模型

实验发现:太阳光通过三棱镜折射后,会被折射分散成红、橙、黄、绿、蓝、靛、紫7种单色光。其中的红、绿、蓝被称为是色光三原色。

接下来,再看一个很重要的概念:RGB颜色模型(RGB color model),又称为三原色光模式。

  • 将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的含量相叠加,可以合成产生各种色彩光

每个像素的颜色,可以通过红色、绿色、蓝色以不同的含量混合而成。比如:

  • 红色(Red)、绿色(Green)可以合成:黄色(Yellow)
  • 红色(Red)、蓝色(Blue)可以合成:洋红色(Magenta)
  • 绿色(Green)、蓝色(Blue)可以合成:青色(Cyan)
  • 红色(Red)、绿色(Green)、蓝色(Blue)可以合成:白色(White)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YPGOyZWN-1634558631089)(C:\Users\jym\Desktop\497279-20210301182807299-1567553861.png)]

位深度

每一个像素的颜色信息是如何存储的呢?

  • 取决于图片的位深度(Bit Depth),也称为:色彩深度(Color Depth,简称:色深)
  • 如果一张图片的位深度为n,那么它的每一个像素都会使用n个二进制位来存储颜色信息

位深度是24,它的具体含义是:

  • 每一个像素都会使用24个二进制位来存储颜色信息
  • 每一个像素的颜色都是由红(Red)、绿(Green)、蓝(Blue)3个颜色通道合成的
  • 每个颜色通道都用8bit来表示其“含量”(值),取值范围是:
    • 二进制:00000000~11111111
    • 十进制:0~255
    • 十六进制:00~FF
  • 举例:01000000 11100000 11010000(共24bit)表示绿宝石色(Turquoise)
    • 红色的值:二进制01000000,十进制64,十六进制40
    • 绿色的值:二进制11100000,十进制224,十六进制E0
    • 蓝色的值:二进制11010000,十进制208,十六进制D0
    • 64的红色 + 224的绿色 + 208的蓝色 = 绿宝石色

24bit颜色的表示形式

我们常用2种形式来表示24bit颜色,比如刚才提到的绿宝石色

  • 十进制:rgb(64, 224, 208)
  • 十六进制:#40E0D0

常见的24bit颜色:

  • 红色:rgb(255, 0, 0),#FF0000
  • 绿色:rgb(0, 255, 0),#00FF00
  • 蓝色:rgb(0, 0, 255),#0000FF
  • 黄色:rgb(255, 255, 0),#FFFF00
  • 洋红色:rgb(255, 0, 255),#FF00FF
  • 青色:rgb(0, 255, 255),#00FFFF
  • 白色:rgb(255, 255, 255),#FFFFFF
  • 黑色:rgb(0, 0, 0),#000000
    • 当红绿蓝全为0时,就是黑色
    • 这个其实很容易理解:没有任何光,自然是一片漆黑
    • 所以说:黑色是世界上最纯洁的颜色,因为它啥也没有,(づ。◕ᴗᴗ◕。)づ
    • 相反,白色是世界上最不纯洁的颜色,因为它啥都有,而且都是满色(全是255)
  • 更多颜色,可以参考颜色对照表,红绿蓝的比例不同,合成的颜色也就不同

颜色数量

如果位深度为n,那么每一个像素能显示2n种颜色。

  • 所以,位深度为24时,每一个像素能显示224种颜色,也就是16777216种颜色(约1678万)
  • 24bit颜色,也被称为是:真彩色(True Color),也就是常说的24位真彩

其他位深度

除了24bit,常见的位深度还有:

  • 1bit:2种颜色,黑白两色
  • 3bit:8种颜色,用于大部分早期的电脑显示器,红绿蓝各占1位
  • 8bit:256种颜色,用于最早期的彩色Unix工作站,红色占3位、绿色占3位、蓝色占2位
  • 16bit:红色占5位、蓝色占5位、绿色占6位
  • 32bit:基于24位,增加8个位的透明通道
    • 可以表示带有透明度的颜色
    • 比如CSS中的rgba(255, 0, 0, 0.5)表示50%透明度的红色

不同位深度的对比

位深度越大,能表示的颜色数量就越多,图片也就越鲜艳,颜色过渡就会越平滑。

格式

一说到图片,马上能想到拓展名为jpg、png、gif的图片文件。

每张图片都有自己的大小,一张图片的大小是如何计算出来的?为什么dragon01.jpg的大小是288KB?

  • 要想知道一张图片的大小是多少?首先得知道每个像素的大小是多少。
  • 如果位深度是n,那么每个像素的大小就是n个二进制位

分辨率是60x50,位深度是24,所以:

  • 每个像素的大小是:24bit(3字节,1字节=8bit)
  • 图片的理论大小是:(6050)(24/8)=9000B≈8.79KB

但实际上会发现:在相同分辨率、相同位深度的前提下,把这张图片存成2种不同的格式(jpg、png),它们的大小是不同的,而且都小于理论上的8.79KB。

其实jpg、png都是经过压缩后的图片(具体的压缩算法和原理,就不在此讨论了,大家可以到网上自行搜索),所以它们的大小会比理论值偏小。

图片的压缩类型可以分为2种:

  • 无损压缩
    • 不损失图片质量
    • 压缩比小,体积大
    • 解压(显示)后能够还原出完整的原始图片数据,不会损失任何图片信息
  • 有损压缩
    • 会损失图片质量
    • 压缩比大,体积小
    • 解压(显示)后无法还原出完整的原始图片数据,会损失掉一些图片信息
  • 压缩比 = 未压缩大小 / 压缩后大小
压缩类型位深度
JPG(JPEG)有损压缩24bit
PNG无损压缩8bit、24bit、32bit
GIF无损压缩8bit

众所周知,gif是一种支持动画的图片,所以一般也叫作gif动态图,微信的动态表情包就是基于gif动态图。

gif动画的实现原理类似手翻书。gif的动画原理是:

  • gif内部存储了很多帧(张)静态图片
  • 在短时间内,连续按顺序地呈现每一帧静态图片,就形成了动画的效果

动画

不管是gif动态图,还是手翻书,它们的动画原理其实都基于:视觉暂留(Persistence of vision)现象。

  • 当人眼所看到的影像消失后,人眼仍能继续保留其影像约0.1~0.4秒左右,这种现象被称为视觉暂留现象
  • 人眼观看物体时,成像于视网膜上,并由视神经输入人脑,感觉到物体的像,但当物体移去时,视神经对物体的印象不会立即消失,而要延续0.1~0.4秒的时间,人眼的这种性质被称为“眼睛的视觉暂留”
  • 我们日常使用的日光灯每秒大约熄灭100余次,但我们基本感觉不到日光灯的闪动,这都是因为视觉暂留的作用
  • 在一帧图片消失在大脑中之前呈现下一帧图片,反复如此,就可以形成连贯的动画效果
    • 电影的帧率是24fps
    • fps:每秒的帧数,Frames Per Second

YUV

YUV,是一种颜色编码方法,跟RGB是同一个级别的概念,广泛应用于多媒体领域中。

也就是说,图像中每1个像素的颜色信息,除了可以用RGB的方式表示,也可以用YUV的方式表示。

对比RGB,YUV有哪些不同和优势呢?

体积更小

  • 如果使用RGB
    • 比如RGB888(R、G、B每个分量都是8bit)
    • 1个像素占用24bit(3字节)
  • 如果使用YUV
    • 1个像素可以减小至平均只占用12bit(1.5字节)
    • 体积为RGB888的一半

组成

RGB数据由R、G、B三个分量组成。

YUV数据由Y、U、V三个分量组成,现在通常说的YUV指的是YCbCr。

  • Y:表示亮度(Luminance、Luma),占8bit(1字节)
  • Cb、Cr:表示色度(Chrominance、Chroma)
    • Cb(U):蓝色色度分量,占8bit(1字节)
    • Cr(V):红色色度分量,占8bit(1字节)

兼容性

  • Y分量对呈现出清晰的图像有着很大的贡献
  • Cb、Cr分量的内容不太容易识别清楚

Y分量的内容:其实以前黑白电视的画面就是这样子。

YUV的发明处在彩色电视与黑白电视的过渡时期。

  • YUV将亮度信息(Y)与色度信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的
  • 这样的设计很好地解决了彩色电视与黑白电视的兼容性问题,使黑白电视也能够接收彩色电视信号,只不过它只显示了Y分量
  • 彩色电视有Y、U、V分量,如果去掉UV分量,剩下的Y分量和黑白电视相同

RGB和YUV转换

公式1

Y = 0.257R + 0.504G + 0.098B + 16
U = -0.148R - 0.291G + 0.439B + 128
V = 0.439R - 0.368G - 0.071B + 128R = 1.164(Y - 16) + 2.018(U - 128)
G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
B = 1.164(Y - 16) + 1.596(V - 128)
  • RGB的取值范围是[0,255]
  • Y的取值范围是[16,235]
  • UV的取值范围是[16,239]

公式2

Y = 0.299R + 0.587G + 0.114B
U = 0.564(B - Y) = -0.169R - 0.331G + 0.500B
V = 0.713(R - Y) = 0.500R - 0.419G - 0.081BR = Y + 1.403V
G = Y - 0.344U - 0.714V
B = Y + 1.770U
  • RGB的取值范围是[0, 1]
  • Y的取值范围是[0, 1]
  • UV的取值范围是[-0.5, 0.5]

公式3

Y = 0.299R + 0.587G + 0.114B
U = -0.169R - 0.331G + 0.500B + 128
V = 0.500R - 0.419G - 0.081B + 128R = Y + 1.403(V - 128)
G = Y - 0.343(U - 128) - 0.714(V - 128)
B = Y + 1.770(U - 128)
  • RGB的取值范围是[0, 255]
  • YUV的取值范围是[0, 255]

色度二次采样

原理

人眼的视网膜上,分布着两种感光细胞:视杆细胞和视锥细胞。

  • 视杆细胞
    • 感知光线的强弱
    • 没有色彩识别功能
    • 负责夜间非彩色视觉
  • 视锥细胞
    • 感知颜色
    • 负责白天彩色视觉
    • 如果你的视锥细胞发育不正常,数量太少,那感知颜色就会受阻,可能会导致你色弱

人眼中有上亿个感光细胞,其中视杆细胞占了95%,而视锥细胞仅占5%。

因此,人眼对亮度的敏感程度要高于对色度的敏感程度,人眼对于亮度的分辨要比对颜色的分辨精细一些。

如果把图像的色度分量减少一些,人眼也丝毫感觉不到变化和差异。

概念

如果在色度分量上进行(相对亮度分量)较低分辨率的采样,也就是存储较多的亮度细节、较少的色度细节,这样就可以在不明显降低画面质量的同时减小图像的体积。上述过程称为:色度二次采样(Chroma Subsampling)。

采样格式

采样格式通常用A:B:C的形式来表示,比如4:4:4、4:2:2、4:2:0等,其中我们最需要关注的是4:2:0。

  • A:一块A*2个像素的概念区域,一般都是4
  • B:第1行的色度采样数目
  • C:第2行的色度采样数目
    • C的值一般要么等于B,要么等于0

下图可以看出:最上面的图像颜色是下面两个图像颜色叠加。

在这里插入图片描述

下图可以看出 左右两个图像颜色叠加产生第三列的图像颜色

在这里插入图片描述

上图中,不管是哪种采样格式,Y分量都是全水平、全垂直分辨率采样的,每一个像素都有自己独立的Y分量。

4:4:4

  • 第1行采集4组CbCr分量,第2行采集4组CbCr分量
  • 每1个像素都有自己独立的1组CbCr分量
    • Y分量与CbCr分量的水平方向比例是1:1(每1列都有1组CbCr分量)
    • Y分量与CbCr分量的垂直方向比例是1:1(每1行都有1组CbCr分量)
    • Y分量与CbCr分量的总比例是1:1
  • 1个像素占用24bit(3字节),跟RGB888的体积一样
    • 24bpp(bits per pixel)
  • 这种格式是没有进行色度二次采样的

4:2:2

  • 第1行采集2组CbCr分量,第2行采集2组CbCr分量
  • 水平方向相邻的2个像素(1行2列)共用1组CbCr分量
    • Y分量与CbCr分量的水平方向比例是2:1(每2列就有1组CbCr分量)
    • Y分量与CbCr分量的垂直方向比例是1:1(每1行都有1组CbCr分量)
    • Y分量与CbCr分量的总比例是2:1
  • 1个像素平均占用16bit(2字节)
    • 16bpp
    • 因为2个像素共占用32bit(4字节 = 2个Y分量 + 1个Cb分量 + 1个Cr分量)

4:2:0

  • 第1行采集2组CbCr分量,第2行共享第1行的CbCr分量
  • 相邻的4个像素(2行2列)共用1组CbCr分量
    • Y分量与CbCr分量的水平方向比例是2:1(每2列就有1组CbCr分量)
    • Y分量与CbCr分量的垂直方向比例是2:1(每2行就有1组CbCr分量)
    • Y分量与CbCr分量的总比例是4:1
  • 1个像素平均占用12bit(1.5字节)
    • 12bpp
    • 因为4个像素共占用48bit(6字节 = 4个Y分量 + 1个Cb分量 + 1个Cr分量)

H.264编码

计算一下:10秒钟1080p(1920x1080)、30fps的YUV420P原始视频,需要占用多大的存储空间?

  • (10 * 30) * (1920 * 1080) * 1.5 = 933120000字节 ≈ 889.89MB
  • 可以看得出来,原始视频的体积是非常巨大的

由于网络带宽和硬盘存储空间都是非常有限的,因此,需要先使用视频编码技术(比如H.264编码)对原始视频进行压缩,然后再进行存储和分发。H.264编码的压缩比可以达到至少是100:1。

H.264,又称为MPEG-4 Part 10,Advanced Video Coding。

  • 译为:MPEG-4第10部分,高级视频编码
  • 简称:MPEG-4 AVC

H.264是迄今为止视频录制、压缩和分发的最常用格式。截至2019年9月,已有91%的视频开发人员使用了该格式。H.264提供了明显优于以前任何标准的压缩性能。H.264因其是蓝光盘的其中一种编解码标准而著名,所有蓝光盘播放器都必须能解码H.264。

编码器

H.264标准允许制造厂商自由地开发具有竞争力的创新产品,它并没有定义一个编码器,而是定义了编码器应该产生的输出码流。

x264是一款免费的高性能的H.264开源编码器。x264编码器在FFmpeg中的名称是libx264。

解码器

H.264标准中定义了一个解码方法,但是制造厂商可以自由地开发可选的具有竞争力的、新的解码器,前提是他们能够获得与标准中采用的方法同样的结果。

FFmpeg默认已经内置了一个H.264的解码器,名称是h264。

编码过程与原理

大体可以归纳为以下几个主要步骤:

  • 划分帧类型
  • 帧内/帧间编码
  • 变换 + 量化
  • 滤波
  • 熵编码

划分帧类型

有统计结果表明:在连续的几帧图像中,一般只有10%以内的像素有差别,亮度的差值变化不超过2%,而色度的差值变化只在1%以内。

于是可以将一串连续的相似的帧归到一个图像群组(Group Of Pictures,GOP)。

GOP中的帧可以分为3种类型:

  • I帧(I Picture、I Frame、Intra Coded Picture),译为:帧内编码图像,也叫做关键帧(Keyframe)
    • 是视频的第一帧,也是GOP的第一帧,一个GOP只有一个I帧
    • 编码
      • 对整帧图像数据进行编码
    • 解码
      • 仅用当前I帧的编码数据就可以解码出完整的图像
    • 是一种自带全部信息的独立帧,无需参考其他图像便可独立进行解码,可以简单理解为一张静态图像
  • P帧(P Picture、P Frame、Predictive Coded Picture),译为:预测编码图像
    • 编码
      • 并不会对整帧图像数据进行编码
      • 以前面的I帧或P帧作为参考帧,只编码当前P帧与参考帧的差异数据
    • 解码
      • 需要先解码出前面的参考帧,再结合差异数据解码出当前P帧完整的图像
  • B帧(B Picture、B Frame、Bipredictive Coded Picture),译为:前后预测编码图像
    • 编码
      • 并不会对整帧图像数据进行编码
      • 同时以前面、后面的I帧或P帧作为参考帧,只编码当前B帧与前后参考帧的差异数据
      • 因为可参考的帧变多了,所以只需要存储更少的差异数据
    • 解码
      • 需要先解码出前后的参考帧,再结合差异数据解码出当前B帧完整的图像

不难看出,编码后的数据大小:I帧 > P帧 > B帧。

GOP的长度

GOP的长度表示GOP的帧数。GOP的长度需要控制在合理范围,以平衡视频质量、视频大小(网络带宽)和seek效果(拖动、快进的响应速度)等。

  • 加大GOP长度有利于减小视频文件大小,但也不宜设置过大,太大则会导致GOP后部帧的画面失真,影响视频质量
  • 由于P、B帧的复杂度大于I帧,GOP值过大,过多的P、B帧会影响编码效率,使编码效率降低
  • 如果设置过小的GOP值,视频文件会比较大,则需要提高视频的输出码率,以确保画面质量不会降低,故会增加网络带宽
  • GOP长度也是影响视频seek响应速度的关键因素,seek时播放器需要定位到离指定位置最近的前一个I帧,如果GOP太大意味着距离指定位置可能越远(需要解码的参考帧就越多)、seek响应的时间(缓冲时间)也越长

GOP的类型

GOP又可以分为开放(Open)、封闭(Closed)两种。

  • Open
    • 前一个GOP的B帧可以参考下一个GOP的I帧
  • Closed
    • 前一个GOP的B帧不能参考下一个GOP的I帧
    • GOP不能以B帧结尾

需要注意的是:

  • 由于P帧、B帧都对前面的参考帧(P帧、I帧)有依赖性,因此,一旦前面的参考帧出现数据错误,就会导致后面的P帧、B帧也出现数据错误,而且这种错误还会继续向后传播
  • 对于普通的I帧,其后的P帧和B帧可以参考该普通I帧之前的其他I帧

在Closed GOP中,有一种特殊的I帧,叫做IDR帧(Instantaneous Decoder Refresh,译为:即时解码刷新)。

  • 当遇到IDR帧时,会清空参考帧队列
  • 如果前一个序列出现重大错误,在这里可以获得重新同步的机会,使错误不会继续往下传播
  • 一个IDR帧之后的所有帧,永远都不会参考该IDR帧之前的帧
  • 视频播放时,播放器一般都支持随机seek(拖动)到指定位置,而播放器直接选择到指定位置附近的IDR帧进行播放最为便捷,因为可以明确知道该IDR帧之后的所有帧都不会参考其之前的其他I帧,从而避免较为复杂的反向解析

帧内/帧间编码

I帧采用的是帧内(Intra Frame)编码,处理的是空间冗余。
P帧、B帧采用的是帧间(Inter Frame)编码,处理的是时间冗余。

划分宏块

在进行编码之前,首先要将一张完整的帧切割成多个宏块(Macroblock),H.264中的宏块大小通常是16x16。

宏块可以进一步拆分为多个更小的变换块(Transform blocks)、预测块(Prediction blocks)。

  • 变换块的尺寸有:16x16、8x8、4x4
  • 预测块的尺寸有:16×16、16×8、8×16、8×8、8×4、4×8、4×4

帧内编码

帧内编码,也称帧内预测。以4x4的预测块为例,共有9种可选的预测模式。

利用帧内预测技术,可以得到预测帧,最终只需要保留预测模式信息、以及预测帧与原始帧的残差值。

编码器会选取最佳预测模式,使预测帧更加接近原始帧,减少相互间的差异,提高编码的压缩效率。

帧间编码

帧间编码,也称帧间预测,用到了运动补偿(Motion compensation)技术。

编码器利用块匹配算法,尝试在先前已编码的帧(称为参考帧)上搜索与正在编码的块相似的块。如果编码器搜索成功,则可以使用称为运动矢量的向量对块进行编码,该向量指向匹配块在参考帧处的位置。

在大多数情况下,编码器将成功执行,但是找到的块可能与它正在编码的块不完全匹配。这就是编码器将计算它们之间差异的原因。这些残差值称为预测误差,需要进行变换并将其发送给解码器。

综上所述,如果编码器在参考帧上成功找到匹配块,它将获得指向匹配块的运动矢量和预测误差。使用这两个元素,解码器将能够恢复该块的原始像素。

如果一切顺利,该算法将能够找到一个几乎没有预测误差的匹配块,因此,一旦进行变换,运动矢量加上预测误差的总大小将小于原始编码的大小。

如果块匹配算法未能找到合适的匹配,则预测误差将是可观的。因此,运动矢量的总大小加上预测误差将大于原始编码。在这种情况下,编码器将产生异常,并为该特定块发送原始编码。

变换与量化

接下来对残差值进行DCT变换(Discrete Cosine Transform,译为离散余弦变换)。

规格

H.264的主要规格有:

  • Baseline Profile(BP)
    • 支持I/P帧,只支持无交错(Progressive)和CAVLC
    • 一般用于低阶或需要额外容错的应用,比如视频通话、手机视频等即时通信领域
  • Extended Profile(XP)
    • 在Baseline的基础上增加了额外的功能,支持流之间的切换,改进误码性能
    • 支持I/P/B/SP/SI帧,只支持无交错(Progressive)和CAVLC
    • 适合于视频流在网络上的传输场合,比如视频点播
  • Main Profile(MP)
    • 提供I/P/B帧,支持无交错(Progressive)和交错(Interlaced),支持CAVLC和CABAC
    • 用于主流消费类电子产品规格如低解码(相对而言)的MP4、便携的视频播放器、PSP和iPod等
  • High Profile(HiP)
    • 最常用的规格
    • 在Main的基础上增加了8x8内部预测、自定义量化、无损视频编码和更多的YUV格式(如4:4:4)
      • High 4:2:2 Profile(Hi422P)
      • High 4:4:4 Predictive Profile(Hi444PP)
      • High 4:2:2 Intra Profile
      • High 4:4:4 Intra Profile
    • 用于广播及视频碟片存储(蓝光影片),高清电视的应用

部分内容来自网络以及参考https://www.cnblogs.com/mjios/p/14810630.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络算法-论证单层感知器的局限性

神经网络算法-论证单层感知器的局限性 今天课上学习了一个思路 将真值表转换到平面直角坐标系中 来论证线性可分还是不可分,挺有意思记录一下。 简单感知器模型实际上仍然是MP模型的结构,但是它通过采用监督学习来逐步增强模式划分的能力,达…

python 通过pip安装库 pycharm里面使用第三方库

安装所需的模块(python) pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。 首先命令行输入pip3 --version查看是否有pip C:\Users\jym>pip3 --version pip 19.2.3 from d:\program files\python38\l…

python 实现TCP socket通信和 HTTP服务器、服务器和客户端通信python实例

python 实现TCP socket通信和 HTTP服务器、服务器和客户端通信实例socket是什么?服务器和客户端通信的流程python 实现TCP socket通信例子关于Host和PORT的设置socket函数socket编程思路基于TCP socket的HTTP服务器分析HTTP服务器代码服务器的response文本客户端的r…

判断ROS版本号-ubuntu20.04安装ROS_noetic-修改镜像源

判断ROS版本号-ROS安装-修改镜像源 linux版本:ubuntu20.04 ROS版本:noetic判断ROS版本号安装ROS改镜像源判断ROS版本号 机器人用的是树莓派、stm32、ros。 首先要配置网络,把机器人上的sd卡插到树莓派开发板上,然后配置连接的热点。 接下来&#xff0…

ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令

ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令ROS是什么ROS文件系统文件系统工具:rospack、roscd、rosls创建ROS 软件包catkin是什么创建和构建一个catkin工作空间:catkin软件包的结构catkin工作空间中存放软件包的结构创建catkin软件包-catkin_c…

ubuntu 中 ROS 一些报错的解决

1. Unable to load type jymubuntu:~/catkin_ws$ rosservice args /add_two_ints ERROR: Unable to load type [beginner_tutorials/AddTwoInts]. Have you typed make in [beginner_tutorials]?由于当前使用的终端的工作环境没有更新导致无法找到自定义的消息。使用下面的命…

ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点(python版本)

ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点-python版本rosedmsg和srv创建msg使用rosmsg创建srv使用rossrv重新make一下软件包编写发布者节点发布者节点代码解析编写订阅者节点订阅者节点代码解析构建节点运行发布者和订阅者节点编写服务节点编写客户端节…

从空间中理解线性代数

线性代数-从空间中理解总结向量线性组合空间的基 Basis张成的空间 Span线性相关和线性无关向量空间的一组基变换线性变换数值描述线性变换复合变换行列式矩阵的用途线性方程组逆矩阵列空间零空间秩非方阵基变换基变换矩阵特征向量 特征值特征基关于坐标总结 空间中不共线的两个…

python 视频和图片转换 视频压缩 图片降低分辨率 图像处理

python 做视频后期单个视频转图片所有图片转视频视频压缩 - ffmpeg图片降低分辨率图像处理这是最近无聊的想法,对视频进行处理,其实也就是对图片的处理。 对视频进行后期处理,思路就是,视频转图片,然后对图片进行处理…

矩阵论复习-过渡矩阵、生成子空间、表示矩阵、度量矩阵、酉空间、内积

一小部分矩阵论的整理复习,这个由于公式输入的太麻烦了,所以就弄了一点。后面直接看着书复习的。 矩阵论复习线性空间基与维数基变换公式、过渡矩阵、坐标变换公式线性子空间齐次方程组的解空间特征子空间生成子空间交空间和空间维数定理直和线性映射线性…

使用Anaconda3安装pytorch、paddle环境并在pycharm里面进行环境测试

安装完Anaconda后,也配好了框架的环境,接下来就需要在pycharm里面写代码了。 Anaconda里面的一些命令 1.新建环境,pytorch 是自己命的名(新建虚拟环境)conda create -n pytorch python3.82.看conda 环境中&#xff0…

Anaconda配置的环境里面增加第三方库的方法

用Anaconda3配置了paddle框架的环境,但是环境里面没有项目代码用到的一些包,比如matplotlib。 在Anaconda的Powershall里面输入如下内容可以增加一些包: 有三句话,第一句是看在conda 环境中,创建的所有环境。 第二句话…

python numpy常用操作、Numpy 多维数组、矩阵相乘、矩阵乘以向量

python numpy常用操作 Numpy基本操作 # 导入numpy import numpy as np # 生成numpy数组 x np.array([1.0, 2.0, 3.0]) print(x) # [1. 2. 3.] print(type(x)) # <class numpy.ndarray> # Numpy的算术运算 x np.array([1.0, 2.0, 3.0]) y np.array([2.0, 4.0, 6.0]…

【数据结构】——期末复习题题库(1)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

感知机实现与、或、与非门和异或门

机器学习-感知机【perceptron】what is 感知机单层感知机运用实例多层感知机what is 感知机 感知机接收多个输入信号&#xff0c;输出一个信号。 接收两个信号的感知机&#xff0c;如下图&#xff1a; x1与x2是输入信号&#xff1b;y是输出信号&#xff1b; w1与w2是权重。圆…

神经网络的激活函数、并通过python实现激活函数

神经网络的激活函数、并通过python实现what is 激活函数激活函数的python实现python实现阶跃函数python实现sigmoid函数python实现ReLU函数激活函数的特点what is 激活函数 感知机的网络结构如下&#xff1a; 左图中&#xff0c;偏置b没有被画出来&#xff0c;如果要表示出b&…

下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)

下载MNIST数据集并使用python将数据转换成NumPy数组首先来分析init_mnist函数接下来继续分析load_mnist函数实现数据集转换的python脚本的代码显示MNIST图像并确认数据下载MNIST数据集并将数据转换成NumPy数组的Python脚本里面最重要的就是load_mnist函数&#xff0c;其他项目想…

使用python构建三层神经网络、softmax函数

【机器学习】使用python手写三层神经网络输入层到第一层的传递表示第一层到第二层的传递表示第二层到第三层的传递表示全过程传递表示代码输入层到第一层的传递表示 首先看输入层到第一层的第一个神经元的信号传递过程&#xff1a; 可以用数学式子表示第一层的第一个神经元的值…

使用python对数据集进行批处理

【机器学习】使用python对数据集进行批处理 只输入一张图像数据过程和一次性处理100张图像数据过程中&#xff0c;数组形状变换如下图所示&#xff1a; 这些数组形状可以在代码中输出出来&#xff1a; def get_data():(x_train, t_train), (x_test, t_test) load_mnist(norm…

损失函数、python实现均方误差、交叉熵误差函数、mini-batch的损失函数

损失函数what is 损失函数均方误差交叉熵误差计算mini-batch学习的损失函数why 损失函数what is 损失函数 神经网络学习目标是找到各层合适的权重参数w和偏置b&#xff0c;使得最终的输出结果能够与实际结果更加接近。那神经网络的这些权重参数是如何得到的&#xff1a;靠损失…