AVS3:跨分量预测TSCPM

TSCPM

两步跨分量预测模式(TSCPM,Two Step Cross-component Prediction Mode)通过探索不同分量之间的线性关系去除分量间冗余。TSCPM分为两个步骤执行,首先使用Co-located luma块通过参数α和β生成尺寸相同的临时预测块,第二步再进行下采样,得到色度分量的预测值,如图1。

图1 TSCPM

AVS3的TSCPM仅用于intra模式中,类似于VVC中的CCLM。其中TSCPM的关键是计算线性模型的参数alpha和beta。

整个过程分为两步,第一步计算alpha和beta,当得到alpha和beta后,根据亮度和色度之间的线性关系,得到重构亮度像素,第二步对重构的亮度像素进行下采样得到色度预测值。

计算alpha和beta需要使用4个可用的像素点对,据相邻块像素的可用性分为了3种情况来得到这4个可用的像素点,过程如下:

在选取4对可用像素点时,需要考虑上侧像素和左侧像素的可用性,分为以下3种情况:

1. 如果当前块的正上侧和正左侧像素均可用,则2个像素点从上侧选择,另外2个像素点从左侧选择(0,-1),(W-max(1,r),-1),(-1,0),(-1,H-max(1,r))。H、W是宽高,r是长宽比。

2. 如果当前块只有上侧可用,则4个像素点均从正上侧选择,选择的位置宽度为:0/4,1/4,2/4,3/4

3. 如果当前块只有左侧像素可用,则4个像素点均从正左侧选择,选择的位置为高度的:0/4,1/4,2/4,3/4

图2 像素点选择

得到4个点后即可计算alpha和beta,计算方式和CCLM类似,不过其中计算aplha过程中的除法通过查表代替以减少复杂度。

minIndex[2] = {0, 2}maxIndex[2] = {1, 3}if (x[minIndex[0]] > x[minIndex[1]]) {Exchange(minIndex[0], minIndex[1])}if (x[maxIndex[0]] > x[maxIndex[1]]) {Exchange(maxIndex[0], maxIndex[1])}if (x[minIndex[0]] > x[maxIndex[1]]) {Exchange (minIndex[0], maxIndex[0])Exchange (minIndex[1], maxIndex[1])}if (x[minIndex[1]] > x[maxIndex[0]]) {Exchange (minIndex[1], maxIndex[0])}xMin = (x[minIndex[0]] + x[minIndex[1]] + 1) >> 1yMin = (y[minIndex[0]] + y[minIndex[1]] + 1) >> 1xMax = (x[maxIndex[0]] + x[maxIndex[1]] + 1) >> 1yMax = (y[maxIndex[0]] + y[maxIndex[1]] + 1) >> 1diffX = xMax – xMindiffY = yMax – yMinif (diffX > 64) {shift = (BitDepth > 8) ? BitDepth – 6 : 2add = 1 << (shift – 1)alphaX = (diffY * TscpmTable[((diffX+add)>>shift)-1] + add) >> shiftbetaX = yMin – ((alphaX * xMin) >> iShiftX)}else if (diffX > 0) {alphaX = diffY * TscpmTable[diffX-1]betaX = yMin – ((alphaX * xMin) >> iShiftX)}else {alphaX = 0betaX = yMin}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 FFmpeg 进行 AVS3 编码,需要先编译 FFmpeg 并启用 AVS3 的支持。下面是一个简单的编译和配置过程: 1. 下载 FFmpeg 源代码 首先,你需要从 FFmpeg 官网下载最新的源代码。 2. 安装 AVS3 相关依赖 FFmpeg 需要依赖以下软件包来支持 AVS3 编码: - AVS3-P2 reference software - xavs3 库 你可以从 AVS3 官方网站上下载这些软件包,并按照它们的指导进行安装。 3. 配置 FFmpeg 在配置 FFmpeg 时,你需要启用 AVS3 的支持。你可以使用以下命令进行配置: ``` ./configure --enable-libxavs3 --enable-version3 --enable-shared --enable-hardcoded-tables --enable-gpl --enable-nonfree ``` 其中,`--enable-libxavs3` 表示启用 xavs3 库的支持,`--enable-version3` 表示使用最新的库版本,`--enable-shared` 表示编译动态链接库,`--enable-hardcoded-tables` 表示启用硬编码的表格,`--enable-gpl` 表示启用 GPL 许可证,`--enable-nonfree` 表示启用非自由许可证。 4. 编译 FFmpeg 在配置完成后,你可以使用以下命令编译 FFmpeg: ``` make ``` 5. 安装 FFmpeg 编译完成后,你可以使用以下命令将 FFmpeg 安装到系统中: ``` make install ``` 6. 使用 FFmpeg 进行 AVS3 编码 现在,你可以使用 FFmpeg 进行 AVS3 编码了。例如,如果你要将一个视频文件编码为 AVS3 格式,你可以使用以下命令: ``` ffmpeg -i input.mp4 -c:v libxavs3 output.avs ``` 其中,`-i` 表示输入文件,`-c:v libxavs3` 表示使用 libxavs3 库进行视频编码,`output.avs` 表示输出文件的名称。 注意:AVS3 是中国提出的一种新型视频编码标准,目前尚未得到广泛的应用和支持。因此,在使用 FFmpeg 进行 AVS3 编码时,你需要先确认你的播放器或设备是否支持 AVS3 格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值