【技术实现步骤摘要】
一种自引用串的编解码方法和系统
[0001]本专利技术属于数据压缩领域,特别是一种自引用串的编解码方法及系统。
技术介绍
[0002]以串为基元的编码模式的典型代表包括最新的国际视频标准VVC(Versatile Video Coding) 标准和我国AVS3(the thirdgeneration ofAudioVideo Coding Standard)标准及之前的版标准中的Palette(简称PLT)模式和串匹配(也称为串预测或帧内串复制,简称ISC)模式。
[0003]串由样值也称元素按照预定扫描方式排列而成。样值包括像素或像素分量简称分量或像素索引简称索引或像素单元。所述像素单元是mxn个像素或分量或索引组成的阵列,m和n分别是包括1、2、4、8、16的预定的正整数。当m和n取值为1时,像素单元是一个像素或一个像素分量或一个分量或一个像素索引或一个索引。
[0004]扫描方式包括光栅扫描和来回(也称弓形)扫描。在光栅扫描中,所有行或列具有相同扫描方向,一般是从左向右或从上向下。在来回扫描中,相邻行或 ...
【技术保护点】
【技术特征摘要】
1.一种自引用串的编码方法,其特征在于,包括以下步骤:步骤1,输入使用串预测或串匹配编码的编码块,将编码块中的正上方的自引用串拆分为两个或两个以上具有相同或不同串矢量的非自引用串,计算非自引用串的数量;步骤2,将拆分前的自引用串的编码参数的部分或全部信息写入数据码流。2.一种自引用串的编码系统,其特征在于,包括,编码块拆分模块:用于将编码块中的自引用串拆分成两个或两个以上具有相同或不同串矢量的非自引用串并计算非自引用串的数量;数据码流产生模块:用于将拆分前的自引用串的编码参数的部分或全部信息写入数据码流。3.一种自引用串的解码方法,其特征在于,包括以下步骤:步骤1,输入使用串预测或串匹配解码的解码块,解析所述解码块,得到表示串的编码参数的部分或全部信息;步骤2,根据步骤1得到的信息,将解码块中的正上方的自引用串拆分为两个或两个以上具有相同或不同串矢量的非自引用串。4.一种自引用串的解码装置,其特征在于,包括数据码流解析模块:用于对解码块进行解析,得到表示串的编码参数的部分或全部信息;解码块拆分模块:用于将解码块中的自引用串拆分为至少两个或两个以上具有相同或不同串矢量的非自引用串。5.一种自引用串解码系统,包括权利要求3所述的自引用串的解码方法或权利要求4所述的自引用串的解码装置的任意一项,其特征在于,所述串预测或串匹配包括:普通串子模式;或非普通串子模式;或等值串及单位基矢量串子模式;或帧间串预测子模式;或上述四种模式的任意组合。6.根据权利要求5所述的自引用串解码系统,其特征在于,所述解码块的扫描方式包括水平扫描和垂直扫描,将自引用串拆分为非自引用串的方法为为以下两种中的任一种:第一种:在水平扫描中,对串矢量为(0,OffsetY),串长度为Length的自引用串,按照预设的拆分方法将其拆分成至少两个非自引用串,非自引用串的串矢量相同或不同,所有非自引用串的长度之和等于自引用串的长度;在垂直扫描中,对串矢量为(OffsetX,0),串长度为Length的自引用串,按照预设的拆分方法将其拆分成至少两个非自引用串,非自引用串的串矢量相同或不同,所有非自引用串的长度之和等于自引用串的长度;第二种:在水平扫描中,对串矢量为(0,OffsetY),串长度为Length的自引用串,按照预设的拆分方法将其拆分成至少两个非自引用串,非自引用串的串矢量不同,所有非自引用串的长度之和等于自引用串的长度,除了最后一个串,其它的串矢量的Y分量的绝对值单调递增;在垂直扫描中,对串矢量为(OffsetX,0),串长度为Length的自引用串,按照预设的拆分方法将其拆分成至少两个非自引用串,非自引用串的串矢量不同,所有非自引用串的长度之和等于自引用串的长度,除了最后一个串,其它的串矢量的X分量的绝对值单调递增。7.根据权利要求5所述的自引用串解码系统,其特征在于,所述步骤2中,将正上方的自
引用串拆分为至少两个具有相同或不同串矢量的非自引用串,对其余自引用串拆分为至少两个具有相同串矢量的非自引用串。8.根据权利要求6所述的自引用串解码系统,其特征在于,所述的预设方法为以下两种中的任一种:第一种:在水平扫描中,将一个串矢量为(0,OffsetY)的自引用串按顺序拆分为第一个非自引用串、第二个非自引用串、K个非自引用串和最后一个非自引用串;其中,第一个非自引用串的长度为自引用串的第一行的长度加上|OffsetY|
‑
1整行的长度,串矢量为(0,OffsetY);第二个非自引用串的长度为自引用串|OffsetY|整行的长度,串矢量为(0,OffsetY);K个非自引用串中的第i个串的长度为|OffsetY|*(i+1)整行的长度,串矢量为(0,OffsetY*(i+1));最后一个非自引用串的长度为自引用串的总长度减去第一个非自引用串的长度、第二个非自引用串的长度和K个非自引用串的长度,串矢量为(0,OffsetY*K);在垂直扫描中,将一个串矢量为(OffsetX,0)的自引用串按顺序拆分为第一个非自引用串、第二个非自引用串、K个非自引用串和最后一个非自引用串;其中,第一个非自引用串的长度为自引用串的第一列的长度加上|OffsetX|
‑
1整列的长度,串矢量为(OffsetX,0);第二个非自引用串的长度为自引用串的第一列的长度加上|OffsetX|
‑
1整列的长度,串矢量为(OffsetX,0);K个非自引用串中的第i个串的长度为|OffsetX|*(i+1)整列的长度,串矢量为(OffsetX*(i+1),0);最后一个非自引用串的长度为自引用串的总长度减去第一个非自引用串的长度、第二个非自引用串的长度和K个非自引用串的长度;串矢量为(OffsetX*K,0);其中,K为正整数,1≤i≤K。第二种:在水平扫描中,若当前串的起始位置在解码块的最左边或最右边,则将一个串矢量为(0,OffsetY)的自引用串按顺序拆分为第一个非自引用串、K个非自引用串和最后一个非自引用串;其中,第一个非自引用串的长度为自引用串的第一行的长度加上|OffsetY|
‑
1整行的长度,串矢量为(0,OffsetY);K个非自引用串中的第i个串的长度为|OffsetY|*(i+1)整行的长度,串矢量为(0,OffsetY*(i+1));最后一个非自引用串的长度为自引用串的总长度减去第一个非自引用串的长度以及K个非自引用串的长度,串矢量为(0,OffsetY*K);若当前串的起始位置不在解码块的最左边或最右边,则将一个串矢量为(0,OffsetY)的自引用串按顺序拆分为第一个非自引用串、第二个非自引用串、K个非自引用串和最后一个非自引用串;其中,所述第一个非自引用串的长度为所述自引用串的第一行的长度加上|OffsetY|
‑
1整行的长度,串矢量为(0,OffsetY);所述第二个非自引用串的长度为所述自引用串|OffsetY|整行的长度,串矢量为(0,OffsetY);所述中间K个非自引用串,第i(1~K)个串的长度为|OffsetY|*(i+1)整行的长度,串矢量为(0,OffsetY*(i+1));所述最后一个非自引用串的长度为所述自引用串的总长度减去所述第一个非自引用串和所述中间K个非自引用串的长度和,串矢量为(0,OffsetY*K);在垂直扫描中,若当前串的起始位置在解码块的最上边或最下边,则将一个串矢量为(OffsetX,0)的自引用串按顺序拆分为第一个非自引用串、K个非自引用串和最后一个非自引用串;其中,第一个非自引用串的长度为自引用串的第一列的长度加上|OffsetX|
‑
1整列
的长度,串矢量为(OffsetX,0);K个非自引用串中的第i个串的长度为|OffsetX|*(i+1)整列的长度,串矢量为(OffsetX*(i+1),0);最后一个非自引用串的长度为所述自引用串的总长度减去所述第一个非自引用串的长度和K个非自引用串的长度,串矢量为(OffsetX*K,0);若当前串的起始位置不在解码块的最上边或最下边,将一个串矢量为(OffsetX,0)的自引用串按顺序拆分为第一个非自引用串、第二个非自引用串、中间K个非自引用串和最后一个非自引用串(N=K+3);其中,所述第一个非自引用串的长度为所述自引用串的第一列的长度加上|OffsetX|
‑
1整列的长度,串矢量为(OffsetX,0);所述第一个非自引用串的长度为所述自引用串的第一列的长度加上|OffsetX|
‑
1整列的长度,串矢量为(OffsetX,0);所述中间K个非自引用串,第i(1~K)个串的长度为|OffsetX|*(i+1)整列的长度,串矢量为(OffsetX*(i+1),0);所述最后一个非自引用串的长度为所述自引用串的总长度减去所述第一个非自引用串、第二个非自引用串和所述中间K个非自引用串的长度和;串矢量为(OffsetX*K,0)。9.根据权利要求6所述的自引用串解码系统,其特征在于,所述非自引用串的串矢量和非自引用串的长度的计算方法为以下两种中的任一种:第一种:在水平扫描中,按以下步骤计算:A、NoOverlapStrLen[1]=min((|ySv|
‑
1)
×
width+firstLineLen,RemainingStrLen),其中,若所述起始元素在反向行,则所述firstLineLen=xStartPos+1;否则所述firstLineLen=width
‑
xStartPos;NoOverlapOffset[1]=(0,ySv);RemainingStrLen自减NoOverlapStrLen[1];B、当RemainingStrLen>NoOverlapStrLen[1]时,NoOverlapStrLen[2]=min(|ySv|
×
width,RemainingStrLen)NoOverlapOffset[2]=(0,ySv);NoOverlapStrNum=2;i=1;C、当RemainingStrLen>NoOverlapStrLen[NoOverlapStrNum]时,重复执行下列步骤:a、更新RemainingStrLen:RemainingStrLen自减NoOverlapStrLen[NoOverlapStrNum];b、NoOverlapStrNum加1;i加1;c、获得NoOverlapStrLen[NoOverlapStrNum]和NoOverlapOffset[NoOverlapStrNum]:如果,|ySv|
×
width*i>RemainingStrLen,则NoOverlapStrLen[NoOverlapStrNum]=RemainingStrLen,NoOverlapOffset[NoOverlapStrNum]=(0,ySv*(i
‑‑
);否则,NoOverlapStrLen[NoOverlapStrNum]=|ySv|
×
width*i,NoOverlapOffset[NoOverlapStrNum]=(0,ySv*i),其中,令自引用串的串矢量为(0,ySv),串长度为StrLen,当前串的起始元素坐标为(xStartPos,yStartPos),最后一个元素坐标为(xEndPos,yEndPos),解码块的宽和高分别为width和height,初始化NoOverlapStrNum为1,RemainingStrLen为StrLen,N等于NoOverlapStrNum,非自引用串的串矢量为NoOverlapOffset[n],非自引用串的串长度为NoOverlapStrLen[n],n为正整数;在垂直扫描中,按以下步骤计算:A、NoOverlapStrLen[1]=min((|ySv|
‑
1)
×
width+firstLineLen,RemainingStrLen),
其中,若所述起始元素在反向行,则所述firstLineLen=xStartPos+1;否则所述firstLineLen=width
‑
xStartPos;NoOverlapOffset[1]=(0,ySv);RemainingStrLen自减NoOverlapStrLen[1];B、当RemainingStrLen>NoOverlapStrLen[1]时,NoOverlapStrLen[2]=min(|ySv|
×
width,RemainingStrLen)NoOverlapOffset[2]=(0,ySv);NoOverlapStrNum=2;i=1;C、当RemainingStrLen>NoOverlapStrLen[NoOverlapStrNum]时,重复执行下列步骤:a、更新RemainingStrLen:RemainingStrLen自减NoOverlapStrLen[NoOverlapStrNum];b、NoOverlapStrNum加1;i加1;c、获得NoOverlapStrLen[NoOverlapStrNum]和NoOverlapOffset[NoOverlapStrNum]:如果|ySv|
×
width*i>RemainingStrLen,则NoOverlapStrLen[NoOverlapStrNum]=RemainingStrLen,NoOverlapOffset[NoOverlapStrNum]=0,ySv*(i
‑‑
)),否则,NoOverlapStrLen[NoOverlapStrNum]=|ySv|
×
width*i,NoOverlapOffset[NoOverlapStrNum]=(0,ySv*i),其中,令自引用串的串矢量为(xSv,0),串长度为StrLen,当前串的起始元素坐标为(xStartPos,yStartPos),最后一个元素坐标为(xEndPos,yEndPos),解码块的宽和高分别为width和height,初始化NoOv...
【专利技术属性】
技术研发人员:赵利平,王旭,马思伟,胡珂立,
申请(专利权)人:绍兴市北大信息技术科创中心,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。