图像解压缩方法及装置

文档序号:1395780 发布日期:2020-02-28 浏览:25次 >En<

阅读说明:本技术 图像解压缩方法及装置 (Image decompression method and device ) 是由 朱江 于 2019-10-22 设计创作,主要内容包括:本申请公开了一种图像解压缩方法及装置。所述方法包括:获取图像压缩数据;基于预设的反量化因素,对所述图像压缩数据进行反量化,获得反量化数据;所述反量化因素为整数;对所述反量化数据进行DCT反变换,获得图像数据;所述DCT反变换包括移位运算和加法运算。本申请能够提高图像解压缩的处理效率。(The application discloses an image decompression method and device. The method comprises the following steps: acquiring image compression data; carrying out inverse quantization on the image compressed data based on a preset inverse quantization factor to obtain inverse quantization data; the inverse quantization factor is an integer; performing DCT inverse transformation on the inverse quantization data to obtain image data; the inverse DCT transform includes a shift operation and an addition operation. The image decompression processing method and device can improve the processing efficiency of image decompression.)

图像解压缩方法及装置

技术领域

本申请涉及显示面板技术领域,尤其涉及一种图像解压缩方法及装置。

背景技术

随着经济水平的提高,平板电视愈来愈受到人们欢迎,电视的解析度也越来越高,从最初的高清至全高清,再至4K,8K,在单位时间内,数据的传输量越来越大。另外,人们对液晶电视的品质要求也越来越高,液晶电视由于制造工艺的原因,液晶面板难免会出现显示画质不均匀的问题,常用画质均匀度补偿算法进行补偿。随着液晶面板解析度的增高,补偿数据所需的储存单元越来越大,成本亦越来越高。

针对越来越大的数据传输与存储,一般采取的方法为数据压缩。数据在存储或者传输之前,常用CPU进行压缩,此过程通常作用时间较为宽裕,而数据在使用之前,需进行解压缩,如视频APP/DVD在播放网路或者光盘传过来的数据需进行解压缩,此过程通常需进行实时处理。FPGA在实时处理数据方面具有很大的优势,但是数据类型,运算的复杂程度对FPGA资源的使用情况影响很大。

但是,DCT变换是压缩技术中常使用的变换技术,DCT变换不仅存在大量的浮点运算,而且需使用较多的乘法器,资源使用较大。而现有技术中的DCT反变换也需要进行大量的浮点运算和乘法运算,导致FPGA解压缩的处理效率低下。

发明内容

本申请实施例提供一种图像解压缩方法及装置,以解决图像解压缩时处理效率低下的问题。

本申请实施例提供了一种图像解压缩方法,包括:

获取图像压缩数据;

基于预设的反量化因素,对所述图像压缩数据进行反量化,获得反量化数据;所述反量化因素为整数;

对所述反量化数据进行DCT反变换,获得图像数据;所述DCT反变换包括移位运算和加法运算。

进一步地,在所述基于预设的反量化因素,对所述图像压缩数据进行反量化,获得反量化数据之前,还包括:

获取图像压缩过程中的DCT变换基和量化因素;

获取所述DCT变换基中的小数部分;

将所述小数部分左移预设位数,获得整数;

将获得的整数与所述量化因素相乘后取整,获得所述反量化因素。

进一步地,所述反量化数据为n行n列的矩阵,n>1;

所述对所述反量化数据进行DCT反变换,获得图像数据,具体包括:

对所述反量化数据的每一行数据进行变换运算,获得行变换矩阵;所述变换运算包括移位运算和加法运算;

对所述行变换矩阵的每一列数据进行变换运算,获得列变换矩阵;

将所述列变换矩阵右移所述预设位数,获得所述图像数据。

进一步地,所述对所述反量化数据的每一行数据进行变换运算,获得行变换矩阵,具体包括:

分别将所述反量化数据中的每一行数据作为目标矩阵,并将所述目标矩阵中的奇数位数据构成奇数位矩阵,将所述目标矩阵中的偶数位数据构成偶数位矩阵;

对所述奇数位矩阵进行第一运算,获得第一运算矩阵;所述第一运算包括移位运算和加法运算;

对所述偶数位矩阵进行第二运算,获得第二运算矩阵;所述第二运算包括移位运算和加法运算;

计算所述第一运算矩阵与所述第二运算矩阵之和,获得第一变换矩阵;

计算所述第一运算矩阵与所述第二运算矩阵的差值,获得第二变换矩阵;

将所述第一变换矩阵中的数据与所述第二变换矩阵中的数据合并为所述目标矩阵对应的目标变换矩阵;所述反量化数据中的n行数据对应的目标变换矩阵构成所述行变换矩阵。

进一步地,所述反量化数据为8行8列的矩阵,所述目标矩阵为1行8列的矩阵;

所述第一运算为:

Figure BDA0002242306110000031

其中,Y_1C为第一运算矩阵,

Figure BDA0002242306110000032

为奇数位矩阵,da1、da3、da5、da7为目标矩阵中的奇数位数据;

所述第二运算为:

Figure BDA0002242306110000033

其中,Y_2C为第二运算矩阵,

Figure BDA0002242306110000034

为偶数位矩阵,da2、da4、da6、da8为目标矩阵中的偶数位数据。

本申请实施例还提供一种图像解压缩装置,包括:

数据获取模块,用于获取图像压缩数据;

反量化模块,用于基于预设的反量化因素,对所述图像压缩数据进行反量化,获得反量化数据;所述反量化因素为整数;以及,

反变换模块,用于对所述反量化数据进行DCT反变换,获得图像数据;所述DCT反变换包括移位运算和加法运算。

进一步地,所述装置还包括:

因素获取模块,用于获取图像压缩过程中的DCT变换基和量化因素;

小数获取模块,用于获取所述DCT变换基中的小数部分;

左移模块,用于将所述小数部分左移预设位数,获得整数;以及,

取整模块,用于将获得的整数与所述量化因素相乘后取整,获得所述反量化因素。

进一步地,所述反量化数据为n行n列的矩阵,n>1;

所述反变换模块具体包括:

行变换单元,用于对所述反量化数据的每一行数据进行变换运算,获得行变换矩阵;所述变换运算包括移位运算和加法运算;

列变换单元,用于对所述行变换矩阵的每一列数据进行变换运算,获得列变换矩阵;

右移单元,用于将所述列变换矩阵右移所述预设位数,获得所述图像数据。

进一步地,所述行变换单元具体包括:

矩阵获取子单元,用于分别将所述反量化数据中的每一行数据作为目标矩阵,并将所述目标矩阵中的奇数位数据构成奇数位矩阵,将所述目标矩阵中的偶数位数据构成偶数位矩阵;

第一运算子单元,用于对所述奇数位矩阵进行第一运算,获得第一运算矩阵;所述第一运算包括移位运算和加法运算;

第二运算子单元,用于对所述偶数位矩阵进行第二运算,获得第二运算矩阵;所述第二运算包括移位运算和加法运算;

第一计算子单元,用于计算所述第一运算矩阵与所述第二运算矩阵之和,获得第一变换矩阵;

第二计算子单元,用于计算所述第一运算矩阵与所述第二运算矩阵的差值,获得第二变换矩阵;以及,

合并子单元,用于将所述第一变换矩阵中的数据与所述第二变换矩阵中的数据合并为所述目标矩阵对应的目标变换矩阵;所述反量化数据中的n行数据对应的目标变换矩阵构成所述行变换矩阵。

进一步地,所述反量化数据为8行8列的矩阵,所述目标矩阵为1行8列的矩阵;

所述第一运算为:

其中,Y_1C为第一运算矩阵,

Figure BDA0002242306110000051

为奇数位矩阵,da1、da3、da5、da7为目标矩阵中的奇数位数据;

所述第二运算为:

Figure BDA0002242306110000052

其中,Y_2C为第二运算矩阵,

Figure BDA0002242306110000053

为偶数位矩阵,da2、da4、da6、da8为目标矩阵中的偶数位数据。

本申请的有益效果为:基于整数的反量化因素对图像压缩数据进行反量化,获得反量化数据,进而基于移位运算和加法运算对反量化数据进行DCT反变换,获得图像数据,使得图像解压缩过程中无浮点运算和乘法运算,有效提高解压缩的处理效率,保证解压缩的实时处理。

附图说明

下面结合附图,通过对本申请的

具体实施方式

详细描述,将使本申请的技术方案及其它有益效果显而易见。

图1为本申请实施例提供的图像解压缩方法的一种流程示意图;

图2为本申请实施例提供的图像解压缩方法中反量化数据到列变换矩阵的原理图;

图3为本申请实施例提供的图像解压缩装置的一种结构示意图。

具体实施方式

这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本申请的示例性实施例的目的。但是本申请可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。

在本申请的描述中,需要理解的是,术语“中心”、“横向”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。另外,术语“包括”及其任何变形,意图在于覆盖不排他的包含。

在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是支撑连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。

这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。

下面结合附图和实施例对本申请作进一步说明。

如图1所示,本申请实施例提供了一种图像解压缩方法,包括

101、获取图像压缩数据。

本实施例中,图像压缩数据是指原始的图像数据经压缩后得到的压缩数据。压缩过程可以包括DCT变换、量化和编码。其中,DCT变换又称离散余弦变换,其目的是将空域信号变换到频域信号,有效地去除信号的相关性,并使大部分能量集中到低频区域,然后有选择的编码部分显著的低频域信号,丢弃不显著的高频域信号,达到提高压缩效率的目的。

在N×M空间的DCT变换公式如下:

Figure BDA0002242306110000071

二维DCT变换等价于先对图像数据进行行变换,再进行列变换,也即对每行或每列N个元素分别与N个不同频率的变换基做内积,因此DCT变换公式可以等效于:Y=C*X*CT,C为DCT变换基。

其中,DCT变换基C为:

Figure BDA0002242306110000072

量化是指将信号的连续取值(或者大量可能的离散取值)近似为有限多个(或较少的)离散值的过程。基于预设的量化因素Q,将DCT变换后的数据进行量化。

编码是将信息由一种格式或形式转换为另一种形式的过程。量化后的数据经编码得到图像压缩数据。

102、基于预设的反量化因素,对所述图像压缩数据进行反量化,获得反量化数据;所述反量化因素为整数。

本实施例中,在获取图像压缩数据后,可先对图像压缩数据进行解码。解码是将信息从已经编码的形式恢复到编码前原状的过程。

进而,基于预设的反量化因素,对解码后的图像压缩数据进行反量化。其中,反量化因素是根据图像压缩过程中的DCT变换基C和量化因素Q预设计算并设置的。

具体地,反量化因素的计算方法包括:

获取图像压缩过程中的DCT变换基和量化因素;

获取所述DCT变换基中的小数部分;

将所述小数部分左移预设位数,获得整数;

将获得的整数与所述量化因素相乘后取整,获得所述反量化因素。

需要说明的是,DCT变换基C和量化因素Q均为矩阵,DCT变换基C中的每个数据均包括整数部分和小数部分,提取DCT变换基C中的每个数据的小数部分,构成小数矩阵A。将小数矩阵A左移预设位数f,即相当于将小数矩阵A放大2的f次方,变成整数,将该整数与量化因素Q相结合取整,即可获得反量化因素V。其中,小数矩阵A可以为8行8列的矩阵,量化因素Q可以为8行8列的矩阵,预设位数f可以为8行8列的矩阵,分别如下:

A11 A12 A13 A14 A15 A16 A17 A18
A21 A22 A23 A24 A25 A26 A27 A28
A31 A32 A33 A34 A35 A36 A37 A38
A41 A42 A43 A44 A45 A46 A47 A48
A51 A52 A53 A54 A55 A56 A57 A58
A61 A62 A63 A64 A65 A66 A67 A68
A71 A72 A73 A74 A75 A76 A77 A78
A81 A82 A83 A84 A85 A86 A87 A88

Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18
Q21 Q22 Q23 Q24 Q25 Q26 Q27 Q28
Q31 Q32 Q33 Q34 Q35 Q36 Q37 Q38
Q41 Q42 Q43 Q44 Q45 Q46 Q47 Q48
Q51 Q52 Q53 Q54 Q55 Q56 Q57 Q58
Q61 Q62 Q63 Q64 Q65 Q66 Q67 Q68
Q71 Q72 Q73 Q74 Q75 Q76 Q77 Q78
Q81 Q82 Q83 Q84 Q85 Q86 Q87 Q88

f11 f12 f13 f14 f15 f16 f17 f18
f21 f22 f23 f24 f25 f26 f27 f28
f31 f32 f33 f34 f35 f36 f37 f38
f41 f42 f43 f44 f45 f46 f47 f48
f51 f52 f53 f54 f55 f56 f57 f58
f61 f62 f63 f64 f65 f66 f67 f68
f71 f72 f73 f74 f75 f76 f77 f78
f81 f82 f83 f84 f85 f86 f87 f88

反量化因素V的计算公式如下:

V=floor(A*Q*2f);

其中,*为点乘,floor为取整。

由于小数矩阵A和量化因素Q为固定值,因此反量化因素V的计算可以在线下进行,计算获得的反量化因素V写入寄存器,在反量化时直接从寄存器中读取使用。

在反量化时,本实施例采用反量化因素V代替现有技术中的量化因素Q,对解码后的图像压缩数据进行反量化,从而不增加反量化的运算。

103、对所述反量化数据进行DCT反变换,获得图像数据;所述DCT反变换包括移位运算和加法运算。

本实施例中,反量化数据为n行n列的矩阵,n>1,且矩阵中的每个数据均为整数。对整数矩阵进行DCT反变换可以仅使用移位运算和加法运算,而避免使用乘法运算,有效降低运算复杂度,提高DCT反变换的处理效率。

具体地,所述对所述反量化数据进行DCT反变换,获得图像数据,具体包括:

对所述反量化数据的每一行数据进行变换运算,获得行变换矩阵;所述变换运算包括移位运算和加法运算;

对所述行变换矩阵的每一列数据进行变换运算,获得列变换矩阵;

将所述列变换矩阵右移所述预设位数,获得所述图像数据。

需要说明的是,对于反量化数据这一n行n列的矩阵,先从第一行开始进行变换运算,依次变换至第n行。n行数据变换完成后,即可获得行变换矩阵,该行变换矩阵仍为n行n列的矩阵。然后,对于行变换矩阵,先从第一列开始进行变换运算,依次变换至第n列。N列数据变换完成后,即可获得列变换矩阵,该列变换矩阵仍为n行n列的矩阵。其中,每一行的变换运算与每一列的变换运算的原理相同。

具体地,所述对所述反量化数据的每一行数据进行变换运算,获得行变换矩阵,具体包括:

分别将所述反量化数据中的每一行数据作为目标矩阵,并将所述目标矩阵中的奇数位数据构成奇数位矩阵,将所述目标矩阵中的偶数位数据构成偶数位矩阵;

对所述奇数位矩阵进行第一运算,获得第一运算矩阵;所述第一运算包括移位运算和加法运算;

对所述偶数位矩阵进行第二运算,获得第二运算矩阵;所述第二运算包括移位运算和加法运算;

计算所述第一运算矩阵与所述第二运算矩阵之和,获得第一变换矩阵;

计算所述第一运算矩阵与所述第二运算矩阵的差值,获得第二变换矩阵;

将所述第一变换矩阵中的数据与所述第二变换矩阵中的数据合并为所述目标矩阵对应的目标变换矩阵;所述反量化数据中的n行数据对应的目标变换矩阵构成所述行变换矩阵。

本实施例中,对反量化数据每一行的变换运算与对行变换矩阵每一列的变换运算的原理相同。如图2所示,先针对反量化数据,设置反量化数据的行数i,令i=1,从第一行开始进行变换运算,即获取反量化数据中的第i行数据,将第i行数据划分为奇数位矩阵和偶数位矩阵,分别对奇数位矩阵进行第一运算和偶数位矩阵进行第二运算,该第一运算和第二运算均包括移位运算和加法运算,对应获得第一运算矩阵和第二运算矩阵,进而将第一运算矩阵和第二运算矩阵进行加法运算,此处的加法运算包括第一运算矩阵与第二运算矩阵的相加和相减两个运算,将两个运算的运算结果合并,如将相加运算的结果顺序排列,将相减运算的结果倒序排列在相加运算结果之后,即可构成变换后的第i行数据。将变换后的第i行数据缓存,同时i++,若此时i≤8,则继续获取反量化数据中的第i行数据,并对第i行数据进行变换运算;若此时i>8,则将缓存的所有行数据按照原始的行顺序排列,构成行变换矩阵。

进而,针对行变换矩阵,设置行变换矩阵的列数j,另j=0,从第一列开始进行变换运算,即获取行变换矩阵中的第j列数据,将第j列数据划分为奇数位矩阵和偶数位矩阵,分别对奇数位矩阵进行第一运算和偶数位矩阵进行第二运算,该第一运算和第二运算均包括移位运算和加法运算,对应获得第一运算矩阵和第二运算矩阵,进而将第一运算矩阵和第二运算矩阵进行加法运算,此处的加法运算包括第一运算矩阵与第二运算矩阵的相加和相减两个运算,将两个运算的运算结果交替排列,如将相加运算的结果顺序排列,将相减运算的结果倒序排列在相加运算结果之后,即可构成变换后的第j列数据。将变换后的第j列数据缓存,同时j++,若此时j≤8,则继续获取行变换矩阵中的第j列数据,并对第j列数据进行变换运算;若此时j>8,则将缓存的所有列数据按照原始的列顺序排列,构成列变换矩阵。

例如,反量化数据为8行8列的矩阵,将某一行的数据作为目标矩阵,该目标矩阵中的数据依次为da1、da2、da3、da4、da5、da6、da7、da8。其中,da1、da3、da5、da7为奇数位数据,构成奇数位矩阵

Figure BDA0002242306110000101

da2、da4、da6、da8为偶数位数据,构成偶数位矩阵对奇数位矩阵进行第一运算,获得第一运算矩阵Y_1C,第一运算为:

Figure BDA0002242306110000112

奇数位矩阵中的数据乘以2表示向左移动一位,数据乘以1表示不移位,因此第一运算中只有移位运算和加法运算。对偶数位矩阵进行第二运算,获得第二运算矩阵Y_2C,第二运算为:

Figure BDA0002242306110000113

偶数位矩阵中的数据乘以4表示向左移动两位,数据乘以2表示向左移动一位,数据乘以1表示不移位,因此第二运算中只有移位运算和加法运算。

进而,计算第一运算矩阵Y_1C和第二运算矩阵Y_2C之和,即第一变换矩阵I_1C=Y_1C+Y_2C,同时计算第一运算矩阵Y_1C和第二运算矩阵Y_2C的差值,即第二变换矩阵I_2C=Y_1C-Y_2C。其中,将第一变换矩阵I_1C中的数据作为顺序排列,将第二变换矩阵I_2C中的数据倒序排列在第一变换矩阵I_1C中的数据之后,构成目标矩阵对应的目标变换矩阵I_Y(i)=[I_1C(1)I_1C(2)I_1C(3)I_1C(4)I_2C(4)I_2C(3)I_2C(2)I_2C(1)]。

在获取列变换矩阵后,由于在计算反量化因素时DCT变换基中的小数部分左移预设位数f,则此时需对列变换矩阵中的数据右移预设位数f,即将列变换矩阵中的数据除以2f,获得原始的图像数据。

本申请实施例能够基于整数的反量化因素对图像压缩数据进行反量化,获得反量化数据,进而基于移位运算和加法运算对反量化数据进行DCT反变换,获得图像数据,使得图像解压缩过程中无浮点运算和乘法运算,有效提高解压缩的处理效率,保证解压缩的实时处理。

相应地,本申请实施例还提供一种图像解压缩装置,能够实现上述实施例中图像解压缩方法的所有流程。

如图3所示,本申请实施例提供的图像解压缩装置,包括:

数据获取模块1,用于获取图像压缩数据;

反量化模块2,用于基于预设的反量化因素,对所述图像压缩数据进行反量化,获得反量化数据;所述反量化因素为整数;以及,

反变换模块3,用于对所述反量化数据进行DCT反变换,获得图像数据;所述DCT反变换包括移位运算和加法运算。

进一步地,所述装置还包括:

因素获取模块,用于获取图像压缩过程中的DCT变换基和量化因素;

小数获取模块,用于获取所述DCT变换基中的小数部分;

左移模块,用于将所述小数部分左移预设位数,获得整数;以及,

取整模块,用于将获得的整数与所述量化因素相乘后取整,获得所述反量化因素。

进一步地,所述反量化数据为n行n列的矩阵,n>1;

所述反变换模块具体包括:

行变换单元,用于对所述反量化数据的每一行数据进行变换运算,获得行变换矩阵;所述变换运算包括移位运算和加法运算;

列变换单元,用于对所述行变换矩阵的每一列数据进行变换运算,获得列变换矩阵;

右移单元,用于将所述列变换矩阵右移所述预设位数,获得所述图像数据。

进一步地,所述行变换单元具体包括:

矩阵获取子单元,用于分别将所述反量化数据中的每一行数据作为目标矩阵,并将所述目标矩阵中的奇数位数据构成奇数位矩阵,将所述目标矩阵中的偶数位数据构成偶数位矩阵;

第一运算子单元,用于对所述奇数位矩阵进行第一运算,获得第一运算矩阵;所述第一运算包括移位运算和加法运算;

第二运算子单元,用于对所述偶数位矩阵进行第二运算,获得第二运算矩阵;所述第二运算包括移位运算和加法运算;

第一计算子单元,用于计算所述第一运算矩阵与所述第二运算矩阵之和,获得第一变换矩阵;

第二计算子单元,用于计算所述第一运算矩阵与所述第二运算矩阵的差值,获得第二变换矩阵;以及,

合并子单元,用于将所述第一变换矩阵中的数据与所述第二变换矩阵中的数据合并为所述目标矩阵对应的目标变换矩阵;所述反量化数据中的n行数据对应的目标变换矩阵构成所述行变换矩阵。

进一步地,所述反量化数据为8行8列的矩阵,所述目标矩阵为1行8列的矩阵;

所述第一运算为:

Figure BDA0002242306110000131

其中,Y_1C为第一运算矩阵,为奇数位矩阵,da1、da3、da5、da7为目标矩阵中的奇数位数据;

所述第二运算为:

Figure BDA0002242306110000133

其中,Y_2C为第二运算矩阵,

Figure BDA0002242306110000134

为偶数位矩阵,da2、da4、da6、da8为目标矩阵中的偶数位数据。

本申请实施例能够基于整数的反量化因素对图像压缩数据进行反量化,获得反量化数据,进而基于移位运算和加法运算对反量化数据进行DCT反变换,获得图像数据,使得图像解压缩过程中无浮点运算和乘法运算,有效提高解压缩的处理效率,保证解压缩的实时处理。

综上所述,虽然本申请已以优选实施例揭露如上,但上述优选实施例并非用以限制本申请,本领域的普通技术人员,在不脱离本申请的精神和范围内,均可作各种更动与润饰,因此本申请的保护范围以权利要求界定的范围为准。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:游戏交互方法、直播系统、电子设备及存储装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类