本發(fā)明實施例涉及圖像處理技術,尤其涉及一種圖像編解碼方法及裝置。
背景技術:
視頻會議、視頻監(jiān)控和網絡電視等視頻多媒體應用在生活工作中的廣泛應用,使得視頻圖像質量、視頻圖像傳輸以及視頻圖像存儲的需求越來越高,這使得圖像編碼技術應運而生。該圖像編碼技術可以通過對視頻圖像數據進行編碼,減少視頻圖像數據的冗余信息,方便視頻圖像傳輸和存儲,保證視頻圖像的質量。
現(xiàn)有的圖像編碼方法可以采用幀間預測(intra-pictureprediction)編碼方式,根據待編碼單元的相鄰已編碼單元的運動矢量確定該待編碼單元的運動矢量,并根據該待編碼單元的運動矢量確定該待編碼單元的預測像素值,繼而對該待編碼單元的原始像素值和該預測像素值的殘差值進行編碼獲得該待編碼單元的碼流。
由于該相鄰已編碼單元與該待編碼單元的運動相關性,也對該待編碼單元的運動矢量造成影響,因而該現(xiàn)有的圖像編碼方法中所確定的該待編碼單元的運動矢量不夠準確,從而使得圖像編碼的準確度較低。
技術實現(xiàn)要素:
本發(fā)明實施例提供一種圖像編解碼方法及裝置,以提供圖像編解碼的準確度。
本發(fā)明實施例提供一種圖像編碼方法,包括:
按照第一預設規(guī)則從待編碼單元的相鄰已編碼單元中確定出n個已編碼單元;其中,n個已編碼單元與待編碼單元的運動預測模式相同;n為正整數;
根據第n已編碼單元的運動矢量采用第一預設算法生成第n運動矢量組;n取遍不大于n的所有正整數;
按照第二預設規(guī)則在得到的n個運動矢量組中確定出一個運動矢量組為最優(yōu)運動矢量組;
根據所述最優(yōu)運動矢量組采用第二預設算法確定所述待編碼單元中每個像素單元的預測像素值;
根據所述每個像素單元的原始像素值與所述每個像素單元的預測像素值的差值確定所述每個像素單元的預測殘差值;
對所述每個像素單元的預測殘差值和所述最優(yōu)運動矢量組的索引標識進行編碼獲得所述待編碼單元對應的碼流;所述最優(yōu)運動矢量組的索引標識用于指示解碼裝置確定所述每個像素單元的預測像素值。
可選的,根據第n已編碼單元的運動矢量按照第一預設算法生成第n運動矢量組,可包括:
根據第n已編碼單元的運動矢量、第n已編碼單元的像素坐標和m個控制點的像素坐標,采用第一預設算法確定出待編碼單元的m個控制點的運動矢量預測值;
根據m個控制點的運動矢量預測值,生成第n運動矢量組;m為根據待編碼單元的運動預測模式確定的正整數。
可選的,m個控制點包括所述待編碼單元的左上頂點和右上頂點;
上述根據第n已編碼單元的運動矢量、第n已編碼單元的像素坐標和m個控制點的像素坐標,采用第一預設算法確定出待編碼單元的m個控制點的運動矢量預測值,包括:
根據第n已編碼單元的左上頂點的運動矢量(vx2,vy2)、第n已編碼單元的右上頂點的運動矢量(vx3,vy3)、第n已編碼單元的左下頂點的運動矢量(vx4,vy4)、第n已編碼單元的左上頂點的像素坐標(x2,y2)、第n已編碼單元的右上頂點的像素坐標(x3,y3)、第n已編碼單元的左下頂點的像素坐標(x4,y4)和待編碼單元的左上頂點的像素坐標(x0,y0),采用如下公式(1)確定出待編碼單元的左上頂點的運動矢量預測值(vx0,vy0);
根據第n已編碼單元的左上頂點的運動矢量(vx2,vy2)、第n已編碼單元的右上頂點的運動矢量(vx3,vy3)、第n已編碼單元的左上頂點的像素坐標(x2,y2)、第n已編碼單元的右上頂點的像素坐標(x3,y3)、待編碼單元的左上頂點的運動矢量預測值(vx0,vy0)、待編碼單元的左上頂點的像素坐標(x0,y0)及待編碼單元的左上頂點的像素坐標(x1,y1),采用如下公式(2)確定出待編碼單元的右上頂點的運動矢量預測值(vx1,vy1);
可選的,按照第二預設規(guī)則在得到的n個運動矢量組中確定出一個運動矢量組為最優(yōu)運動矢量組,可包括:
按照預設排序規(guī)則對n個運動矢量組進行排序,生成候選運動矢量隊列;
若n大于或等于預設值,確定候選運動矢量隊列中前預設個數的運動矢量組;
確定前預設個數的運動矢量組中各運動矢量組與待編碼單元的匹配誤差;
確定匹配誤差最小的一個運動矢量組為最優(yōu)運動矢量組。
可選的,預設排序規(guī)則包括:n個已編碼單元從大到小的順序。
可選的,按照第二預設規(guī)則在得到的n個運動矢量組中確定出一個運動矢量組為最優(yōu)運動矢量組,可以包括:
按照預設排序規(guī)則對n個運動矢量組進行排序;
若n小于預設值,生成q個運動矢量組,使得n與q之和大于或等于預設值,q為正整數;
將q個運動矢量組排列至n個運動矢量組之后,生成候選運動矢量隊列;
確定候選運動矢量隊列中前預設個數的運動矢量組;
確定前預設個數的運動矢量組中各運動矢量組與待編碼單元的匹配誤差;
確定匹配誤差最小的一個運動矢量組為最優(yōu)運動矢量組。
可選的,生成q個運動矢量組可包括:
從相鄰已編碼單元中確定待編碼單元中第m控制點對應的已編碼單元;第m控制點對應的已編碼單元與第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;
將第m控制點對應的已編碼單元的運動矢量,確定為第m控制點的運動矢量預測值;
根據m個控制點的運動矢量預測值,生成q個運動矢量組。
可替代地,生成q個運動矢量組可包括:
從相鄰已編碼單元中確定待編碼單元中第m控制點對應的已編碼單元;第m控制點對應的已編碼單元與第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;
將第m控制點對應的已編碼單元的運動矢量,確定為第m控制點的第一運動矢量預測值;
根據m個控制點的第一運動矢量預測值,生成k個第一運動矢量組;
將相鄰已編碼單元中第j個已編碼單元的運動矢量,確定為第m個控制點的第二運動矢量預測值;j為1,…,j中任一,j為相鄰已編碼單元的個數;j為正整數;
根據m個控制點的第二運動矢量預測值,生成l個第二運動矢量組;
將k個第一運動矢量組排列至l個第二運動矢量組之后,生成q個運動矢量組。
可選的,將q個運動矢量組添加至排序后的n個運動矢量組之后,生成候選運動矢量隊列,可包括:
確定第q個運動矢量組對應的特征值;q取遍不大于q的所有正整數;
根據q個運動矢量組對應的特征值,按照從小到大的順序,對q個運動矢量組進行排序;
將排序后的q個運動矢量組添加至排序后的n個運動矢量組之后,生成候選運動矢量隊列。
可選的,確定第q個運動矢量組對應的特征值,包括:
確定第q個運動矢量組中m個控制點中相鄰控制點的運動矢量預測值,在同一預測方向上的分量的差值;
比較差值的絕對值與預設分量閾值的大?。活A設分量閾值為待編碼單元在同一預測方向上的范圍;
若差值的絕對值小于或等于預設分量閾值,則確定第q個運動矢量組對應的特征值。
可選的,確定第q個運動矢量組對應的特征值可包括:
從該相鄰已編碼單元中確定另一控制點對應的已編碼單元;該另一控制點對應的已編碼單元與該另一控制點間的距離小于或等于預設距離;該另一控制點為待編碼單元中m個控制點外的任一控制點;
將另一控制點對應的已編碼單元的運動矢量,確定為另一控制點的運動矢量預測值;
根據另一控制點的運動矢量預測值和第q個運動矢量組中的m個控制點的運動矢量預測值,采用第三預設算法確定第q個運動矢量組對應的特征值。
可選的,待編碼單元的運動預測模式包括:平移運動預測模式或仿射運動預測模式。
本發(fā)明實施例還提供一種圖像解碼方法,包括:
根據第一預設規(guī)則從待解碼單元的相鄰已解碼單元中確定出n個已解碼單元;其中,述n個已解碼單元與待解碼單元的運動預測模式相同;n為正整數;
根據第n已解碼單元的運動矢量采用第一預設算法確定生成第n運動矢量組;n取遍不大于n的所有正整數;
對待解碼單元對應的碼流進行解碼,獲得每個像素單元的預測殘差值和最優(yōu)運動矢量組的索引標識;
根據最優(yōu)運動矢量組的索引標識確定n個運動矢量組中的最優(yōu)運動矢量組;
根據最優(yōu)運動矢量組采用第二預設算法確定待解碼單元中每個像素單元的預測像素值;
根據每個像素單元的預測像素值和每個像素單元的預測殘差值的和確定每個像素單元的重建像素值。
可選的,根據第n已解碼單元的運動矢量按照第一預設算法生成第n運動矢量組,可包括:
根據第n已解碼單元的運動矢量、第n已解碼單元的像素坐標和m個控制點的像素坐標,采用第一預設算法確定出待解碼單元的m個控制點的運動矢量預測值;
根據m個控制點的運動矢量預測值,生成第n運動矢量組;m為根據待解碼單元的運動預測模式確定的正整數。
可選的,m個控制點包括:待解碼單元的左上頂點和右上頂點;
根據第n已解碼單元的運動矢量、該第n已解碼單元的像素坐標和m個控制點的像素坐標,采用第一預設算法確定出待解碼單元的m個控制點的運動矢量預測值,包括:
根據第n已解碼單元的左上頂點的運動矢量(vx2,vy2)、第n已解碼單元的右上頂點的運動矢量(vx3,vy3)、第n已解碼單元的左下頂點的運動矢量(vx4,vy4)、第n已解碼單元的左上頂點的像素坐標(x2,y2)、第n已解碼單元的右上頂點的像素坐標(x3,y3)、第n已解碼單元的左下頂點的像素坐標(x4,y4)和待解碼單元的左上頂點的像素坐標(x0,y0),采用如下公式(1)確定出待解碼單元的左上頂點的運動矢量預測值(vx0,vy0);
根據第n已解碼單元的左上頂點的運動矢量(vx2,vy2)、第n已解碼單元的右上頂點的運動矢量(vx3,vy3)、第n已解碼單元的左上頂點的像素坐標(x2,y2)、第n已解碼單元的右上頂點的像素坐標(x3,y3)、待解碼單元的左上頂點的運動矢量預測值(vx0,vy0)、待解碼單元的左上頂點的像素坐標(x0,y0)及待解碼單元的左上頂點的像素坐標(x1,y1),采用如下公式(2)確定出待解碼單元的右上頂點的運動矢量預測值(vx1,vy1);
可選的,根據最優(yōu)運動矢量組的索引標識確定n個運動矢量組中的最優(yōu)運動矢量組,可包括:
按照預設排序規(guī)則對n個運動矢量組進行排序,生成候選運動矢量隊列;
若n大于或等于預設值,確定候選運動矢量隊列中前預設個數的運動矢量組;
根據最優(yōu)運動矢量組的索引標識確定前預設個數的運動矢量組中的最優(yōu)運動矢量組。
可選的,預設排序規(guī)則包括:n個已解碼單元的從大到小的順序。
可選的,根據最優(yōu)運動矢量組的索引標識確定n個運動矢量組中的最優(yōu)運動矢量組,可包括:
按照預設排序規(guī)則對n個運動矢量組進行排序;
若n小于預設值,生成q個運動矢量組,使得n與q之和大于或等于所述預設值,q為正整數;
將q個運動矢量組排列至n個運動矢量組之后,生成候選運動矢量隊列;
確定候選運動矢量隊列中前預設個數的運動矢量組;
根據最優(yōu)運動矢量組的索引標識確定前預設個數的運動矢量組中的最優(yōu)運動矢量組。
可選的,生成q個運動矢量組包括:
從相鄰已解碼單元中確定待解碼單元中第m控制點對應的已解碼單元;第m控制點對應的已解碼單元與第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;
將第m控制點對應的已解碼單元的運動矢量,確定為第m控制點的運動矢量預測值;
根據m個控制點的運動矢量預測值,生成q個運動矢量組。
可替代的,生成q個運動矢量組包括:
從相鄰已解碼單元中確定待解碼單元中第m控制點對應的已解碼單元;第m控制點對應的已解碼單元與第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;
將第m控制點對應的已解碼單元的運動矢量,確定為第m控制點的第一運動矢量預測值;
根據m個控制點的第一運動矢量預測值,生成k個第一運動矢量組;
將相鄰已解碼單元中第j個已解碼單元的運動矢量,確定為第m個控制點的第二運動矢量預測值;j為1,…,j中任一,j為相鄰已解碼單元的個數;j為正整數;
根據m個控制點的第二運動矢量預測值,生成l個第二運動矢量組;
將k個第一運動矢量組排列至l個第二運動矢量組之后,生成q個運動矢量組。
可選的,將q個運動矢量組添加至排序后的n個運動矢量組之后,生成候選運動矢量隊列,包括:
確定第q個運動矢量組對應的特征值;q取遍不大于q的所有正整數;
根據q個運動矢量組對應的特征值,按照從小到大的順序,對q個運動矢量組進行排序;
將排序后的q個運動矢量組添加至排序后的n個運動矢量組之后,生成候選運動矢量隊列。
可選的,確定第q個運動矢量組對應的特征值,包括:
確定第q個運動矢量組中m個控制點中相鄰控制點的運動矢量預測值,在同一預測方向上的分量的差值;
比較差值的絕對值與預設分量閾值的大?。活A設分量閾值為待解碼單元在同一預測方向上的范圍;
若差值的絕對值小于或等于預設分量閾值,則確定第q個運動矢量組對應的特征值。
可選的,確定第q個運動矢量組對應的特征值包括:
從相鄰已解碼單元中確定另一控制點對應的已解碼單元;另一控制點對應的已解碼單元與另一控制點間的距離小于或等于預設距離;另一控制點為待解碼單元中m個控制點外的任一控制點;
將另一控制點對應的已解碼單元的運動矢量,確定為另一控制點的運動矢量預測值;
根據另一控制點的運動矢量預測值和第q個運動矢量組中的m個控制點的運動矢量預測值,采用第三預設算法確定第q個運動矢量組對應的特征值。
可選的,待解碼單元的運動預測模式包括平移運動預測模式或仿射運動預測模式。
本發(fā)明實施例還提供一種圖像編碼裝置,包括:
確定模塊,用于按照第一預設規(guī)則從待編碼單元的相鄰已編碼單元中確定出n個已編碼單元;其中,n個已編碼單元與待編碼單元的運動預測模式相同;n為正整數;
計算模塊,用于根據確定模塊確定的第n已編碼單元的運動矢量采用第一預設算法生成第n運動矢量組;n取遍不大于n的所有正整數;
確定模塊,還用于按照第二預設規(guī)則在計算模塊得到的n個運動矢量組中確定出一個運動矢量組為最優(yōu)運動矢量組;
計算模塊,還用于根據確定模塊確定的最優(yōu)運動矢量組采用第二預設算法確定待編碼單元中每個像素單元的預測像素值,根據每個像素單元的原始像素值與每個像素單元的預測像素值的差值確定每個像素單元的預測殘差值;
編碼模塊,用于對每個像素單元的預測殘差值和最優(yōu)運動矢量組的索引標識進行編碼獲得待編碼單元對應的碼流;最優(yōu)運動矢量組的索引標識用于指示解碼裝置確定每個像素單元的預測像素值。
可選的,計算模塊,具體用于根據確定模塊確定的第n已編碼單元的運動矢量、第n已編碼單元的像素坐標和m個控制點的像素坐標,采用第一預設算法確定出待編碼單元的m個控制點的運動矢量預測值;根據該m個控制點的運動矢量預測值,生成該第n運動矢量組;m為根據該待編碼單元的運動預測模式確定的正整數。
可選的,m個控制點包括:待編碼單元的左上頂點和右上頂點;
計算模塊,具有用于根據確定模塊確定的第n已編碼單元的左上頂點的運動矢量(vx2,vy2)、第n已編碼單元的右上頂點的運動矢量(vx3,vy3)、第n已編碼單元的左下頂點的運動矢量(vx4,vy4)、第n已編碼單元的左上頂點的像素坐標(x2,y2)、第n已編碼單元的右上頂點的像素坐標(x3,y3)、第n已編碼單元的左下頂點的像素坐標(x4,y4)和待編碼單元的左上頂點的像素坐標(x0,y0),采用如下公式(1)確定出待編碼單元的左上頂點的運動矢量預測值(vx0,vy0);
計算模塊,還用于根據確定模塊確定的第n已編碼單元的左上頂點的運動矢量(vx2,vy2)、第n已編碼單元的右上頂點的運動矢量(vx3,vy3)、第n已編碼單元的左上頂點的像素坐標(x2,y2)、第n已編碼單元的右上頂點的像素坐標(x3,y3)、待編碼單元的左上頂點的運動矢量預測值(vx0,vy0)、待編碼單元的左上頂點的像素坐標(x0,y0)及待編碼單元的左上頂點的像素坐標(x1,y1),采用如下公式(2)確定出待編碼單元的右上頂點的運動矢量預測值(vx1,vy1);
可選的,確定模塊,具體用于按照預設排序規(guī)則對n個運動矢量組進行排序,生成候選運動矢量隊列,若n大于或等于預設值,確定候選運動矢量隊列中前預設個數的運動矢量組,確定前預設個數的運動矢量組中各運動矢量組與待編碼單元的匹配誤差,確定匹配誤差最小的一個運動矢量組為最優(yōu)運動矢量組。
可選的,預設排序規(guī)則包括:n個已編碼單元從大到小的順序。
可選的,確定模塊,還用于按照預設排序規(guī)則對n個運動矢量組進行排序;若n小于預設值,生成q個運動矢量組,使得n與q之和大于或等于預設值,q為正整數;將q個運動矢量組排列至n個運動矢量組之后,生成候選運動矢量隊列;確定候選運動矢量隊列中前預設個數的運動矢量組;確定前預設個數的運動矢量組中各運動矢量組與待編碼單元的匹配誤差;確定匹配誤差最小的一個運動矢量組為最優(yōu)運動矢量組。
可選的,確定模塊,還用于從相鄰已編碼單元中確定待編碼單元中第m控制點對應的已編碼單元;第m控制點對應的已編碼單元與第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;將第m控制點對應的已編碼單元的運動矢量,確定為第m控制點的運動矢量預測值;根據m個控制點的運動矢量預測值,生成q個運動矢量組。
可選的,確定模塊,還用于從相鄰已編碼單元中確定待編碼單元中第m控制點對應的已編碼單元;第m控制點對應的已編碼單元與第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;將第m控制點對應的已編碼單元的運動矢量,確定為第m控制點的第一運動矢量預測值;根據m個控制點的第一運動矢量預測值,生成k個第一運動矢量組;將相鄰已編碼單元中第j個已編碼單元的運動矢量,確定為第m個控制點的第二運動矢量預測值;j為1,…,j中任一,j為相鄰已編碼單元的個數,j為正整數;根據m個控制點的第二運動矢量預測值,生成l個第二運動矢量組;將k個第一運動矢量組排列至l個第二運動矢量組之后,生成q個運動矢量組。
可選的,確定模塊,還用于確定第q個運動矢量組對應的特征值;q取遍不大于q的所有正整數;根據q個運動矢量組對應的特征值,按照從小到大的順序,對q個運動矢量組進行排序;將排序后的q個運動矢量組添加至排序后的n個運動矢量組之后,生成候選運動矢量隊列。
可選的,確定模塊,還用于確定第q個運動矢量組中m個控制點中相鄰控制點的運動矢量預測值,在同一預測方向上的分量的差值;比較差值的絕對值與預設分量閾值的大小;預設分量閾值為待編碼單元在所述同一預測方向上的范圍;若差值的絕對值小于或等于預設分量閾值,則確定第q個運動矢量組對應的特征值。
可選的,確定模塊,還用于從相鄰已編碼單元中確定另一控制點對應的已編碼單元;另一控制點對應的已編碼單元與另一控制點間的距離小于或等于預設距離;另一控制點為待編碼單元中m個控制點外的任一控制點;將另一控制點對應的已編碼單元的運動矢量,確定為另一控制點的運動矢量預測值;根據另一控制點的運動矢量預測值和第q個運動矢量組中的m個控制點的運動矢量預測值,采用第三預設算法確定第q個運動矢量組對應的特征值。
可選的,待編碼單元的運動預測模式包括平移運動預測模式或仿射運動預測模式。
本發(fā)明實施例還提供一種圖像解碼裝置,包括:
確定模塊,用于根據第一預設規(guī)則從待解碼單元的相鄰已解碼單元中確定出n個已解碼單元;其中,n個已解碼單元與待解碼單元的運動預測模式相同;n為正整數;
計算模塊,用于根據確定模塊確定的第n已解碼單元的運動矢量采用第一預設算法確定生成第n運動矢量組;n取遍不大于n的所有正整數;
解碼模塊,用于對待解碼單元對應的碼流進行解碼,獲得每個像素單元的預測殘差值和最優(yōu)運動矢量組的索引標識;
確定模塊,還用于根據解碼模塊確定的最優(yōu)運動矢量組的索引標識確定n個運動矢量組中的最優(yōu)運動矢量組;
計算模塊,還用于根據確定模塊確定的最優(yōu)運動矢量組采用第二預設算法確定待解碼單元中每個像素單元的預測像素值,根據每個像素單元的預測像素值和每個像素單元的預測殘差值的和確定每個像素單元的重建像素值。
可選的,計算模塊,具有用于根據確定模塊確定的第n已解碼單元的運動矢量、第n已解碼單元的像素坐標和m個控制點的像素坐標,采用第一預設算法確定出待解碼單元的m個控制點的運動矢量預測值;根據m個控制點的運動矢量預測值,生成第n運動矢量組;m為根據待解碼單元的運動預測模式確定的正整數。
可選的,m個控制點包括待解碼單元的左上頂點和右上頂點;
計算模塊,具體用于根據確定模塊確定的第n已解碼單元的左上頂點的運動矢量(vx2,vy2)、第n已解碼單元的右上頂點的運動矢量(vx3,vy3)、第n已解碼單元的左下頂點的運動矢量(vx4,vy4)、第n已解碼單元的左上頂點的像素坐標(x2,y2)、第n已解碼單元的右上頂點的像素坐標(x3,y3)、第n已解碼單元的左下頂點的像素坐標(x4,y4)和待解碼單元的左上頂點的像素坐標(x0,y0),采用如下公式(1)確定出待解碼單元的左上頂點的運動矢量預測值(vx0,vy0);
計算模塊,具體還用于根據確定模塊確定的第n已解碼單元的左上頂點的運動矢量(vx2,vy2)、第n已解碼單元的右上頂點的運動矢量(vx3,vy3)、第n已解碼單元的左上頂點的像素坐標(x2,y2)、第n已解碼單元的右上頂點的像素坐標(x3,y3)、待解碼單元的左上頂點的運動矢量預測值(vx0,vy0)、待解碼單元的左上頂點的像素坐標(x0,y0)及待解碼單元的左上頂點的像素坐標(x1,y1),采用如下公式(2)確定出待解碼單元的右上頂點的運動矢量預測值(vx1,vy1);
可選的,確定模塊,還用于按照預設排序規(guī)則對n個運動矢量組進行排序,生成候選運動矢量隊列;若n大于或等于預設值,確定候選運動矢量隊列中前預設個數的運動矢量組;根據最優(yōu)運動矢量組的索引標識確定前預設個數的運動矢量組中的該最優(yōu)運動矢量組。
可選的,預設排序規(guī)則包括:n個已解碼單元的從大到小的順序。
可選的,確定模塊,還用于按照預設排序規(guī)則對n個運動矢量組進行排序;若n小于預設值,生成q個運動矢量組,使得n與q之和大于或等于預設值,q為正整數;將q個運動矢量組排列至n個運動矢量組之后,生成候選運動矢量隊列;確定候選運動矢量隊列中前預設個數的運動矢量組;根據最優(yōu)運動矢量組的索引標識確定前預設個數的運動矢量組中的最優(yōu)運動矢量組。
可選的,確定模塊,還用于從相鄰已解碼單元中確定待解碼單元中第m控制點對應的已解碼單元;第m控制點對應的已解碼單元與第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;將第m控制點對應的已解碼單元的運動矢量,確定為第m控制點的運動矢量預測值;根據m個控制點的運動矢量預測值,生成q個運動矢量組。
可選的,確定模塊,還用于從相鄰已解碼單元中確定待解碼單元中第m控制點對應的已解碼單元;第m控制點對應的已解碼單元與第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;將第m控制點對應的已解碼單元的運動矢量,確定為第m控制點的第一運動矢量預測值;根據m個控制點的第一運動矢量預測值,生成k個第一運動矢量組;將相鄰已解碼單元中第j個已解碼單元的運動矢量,確定為第m個控制點的第二運動矢量預測值;j為1,…,j中任一,j為相鄰已解碼單元的個數;j為正整數;根據m個控制點的第二運動矢量預測值,生成l個第二運動矢量組;將k個第一運動矢量組排列至l個第二運動矢量組之后,生成q個運動矢量組。
可選的,確定模塊,還用于確定第q個運動矢量組對應的特征值;q取遍不大于q的所有正整數;根據q個運動矢量組對應的特征值,按照從小到大的順序,對q個運動矢量組進行排序;將排序后的q個運動矢量組添加至排序后的n個運動矢量組之后,生成候選運動矢量隊列。
可選的,確定模塊,還用于確定第q個運動矢量組中m個控制點中相鄰控制點的運動矢量預測值,在同一預測方向上的分量的差值;比較差值的絕對值與預設分量閾值的大小;預設分量閾值為待解碼單元在同一預測方向上的范圍;若差值的絕對值小于或等于預設分量閾值,則確定第q個運動矢量組對應的特征值。
可選的,確定模塊,還用于從相鄰已解碼單元中確定另一控制點對應的已解碼單元;另一控制點對應的已解碼單元與另一控制點間的距離小于或等于預設距離;另一控制點為待解碼單元中m個控制點外的任一控制點;將另一控制點對應的已解碼單元的運動矢量,確定為另一控制點的運動矢量預測值;根據另一控制點的運動矢量預測值和第q個運動矢量組中的m個控制點的運動矢量預測值,采用第三預設算法確定第q個運動矢量組對應的特征值。
可選的,待解碼單元的運動預測模式包括平移運動預測模式或仿射運動預測模式。
本發(fā)明實施例還提供一種圖像編碼裝置,包括:處理器、存儲器、通信接口和總線;其中,處理器與存儲器、通信接口通過總線連接;
存儲器用于存儲指令;
處理器用于執(zhí)行指令,當處理器執(zhí)行存儲器存儲的指令時,使得處理器執(zhí)行上述任一圖像編碼方法。
本發(fā)明實施例還提供一種圖像解碼裝置,包括:處理器、存儲器、通信接口和總線;其中,處理器與存儲器、通信接口通過總線連接;
存儲器用于存儲指令;
處理器用于執(zhí)行指令,當處理器執(zhí)行存儲器存儲的指令時,使得處理器執(zhí)行上述任一的圖像解碼方法。
本發(fā)明實施例圖像編解碼方法及裝置,可根據第一預設規(guī)則從待編碼單元的相鄰已編碼單元中確定出n個已編碼單元,該n個已編碼單元與該待編碼單元的運動預測模式相同,n為正整數,根據第n已編碼單元的運動矢量采用第一預設算法生成第n運動矢量組,n取遍不大于n的所有正整數;按照第二預設規(guī)則在得到的n個運動矢量組中確定出一個運動矢量組為最優(yōu)運動矢量組;根據該最優(yōu)運動矢量組采用第二預設算法確定該待編碼單元中每個像素單元的預測像素值,根據該每個像素單元的原始像素值與該每個像素單元的預測像素值的差值確定該每個像素單元的預測殘差值,對該每個像素單元的預測殘差值和該最優(yōu)運動矢量組的索引標識進行編碼獲得該待編碼單元對應的碼流,該最優(yōu)運動矢量組的索引標識用于指示解碼裝置確定該每個像素單元的預測像素值。由于該n個已編碼單元與該待編碼單元的運動預測模式相同,則該n個已編碼單元與該待編碼單元的運動相關性較高,而該最優(yōu)運動矢量組是從根據該n個已編碼單元的運動矢量確定的n個運動矢量組中確定的,那么根據該最優(yōu)運動矢量組確定該待編碼單元中每個像素單元的預測像素值則更準確,編碼準確度更高。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖做一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例一提供的圖像編碼方法的流程圖;
圖2為本發(fā)明實施例一的圖像編碼方法中待編碼單元與相鄰已編碼單元的結構示意圖;
圖3為本發(fā)明實施例二提供的一種圖編碼方法的流程圖;
圖4為本發(fā)明實施例三提供的一種圖像解碼方法的流程圖;
圖5為本發(fā)明實施例四提供的一種圖像編碼裝置的結構示意圖;
圖6為本發(fā)明實施例五提供的一種圖像解碼裝置的結構示意圖;
圖7為本發(fā)明實施例六提供的圖像編碼裝置的結構示意圖;
圖8為本發(fā)明實施例七提供的圖像解碼裝置的結構示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明提供的圖像編碼方法及裝置、圖像解碼方法及裝置,可應用于衛(wèi)星及陸上電視廣播系統(tǒng)、視頻會議、安防監(jiān)控、醫(yī)療示教、課堂錄播、庭審系統(tǒng)等場景中,通過采用幀間預測模式對視頻圖像的待處理單元進行運動預測,從而根據該運動預測結果對該視頻圖像進行編解碼。其中,該圖像編碼方法及裝置,可通過運動預測獲得該視頻圖像中待編碼單元中各像素單元的預測像素值,并對該各像素單元的預測像素值與該各像素單元的原始像素值的差值進行編碼獲得該待編碼單元對應的碼流,以通過對該待編碼單元對應的碼流進行存儲或傳輸實現(xiàn)該待編碼單元對應的圖像的存儲或傳輸。對應的,該圖像解碼方法及裝置,可通過運動預測獲得該視頻圖像中待解碼單元中各像素單元的預測像素值,通過對該待解碼單元對應的碼流進行解碼,獲得該待解碼單元的各像素單元的預測像素值與該各像素單元的原始像素值的差值,繼而根據該差值與該預測像素值獲得該各像素單元的重建像素值,從而可根據該各像素單元的重建像素值獲得該待解碼單元對應的圖像。該待解碼單元對應的碼流例如可以為該圖像解碼裝置接收到的圖像編碼裝置傳輸的,也可以為該圖像解碼裝置從存儲設備中獲取到的,該存儲設備中的碼流可以為該圖像解碼裝置存儲在該存儲設備。
本發(fā)明實施例一提供一種圖像編碼方法。該圖像編碼方法可由圖像編碼裝置執(zhí)行,該圖像編碼裝置例如可以通過軟件和/或硬件的形式集成在具有圖像處理功能的電子設備中,該電子設備例如可以為智能終端、個人計算機、消費電子產品的或視頻服務器等。圖1為本發(fā)明實施例一提供的圖像編碼方法的流程圖。如圖1所示,該方法可包括:
s101、按照第一預設規(guī)則從待編碼單元的相鄰已編碼單元中確定出n個已編碼單元;其中,n個已編碼單元與該待編碼單元的運動預測模式相同。
具體地,該待編碼單元可以為高效視頻編碼(highefficiencyvideocoding,簡稱hevc)標準及后續(xù)編碼標準中的編碼單元(codingunit,簡稱cu)。在該hevc標準中,最大的編碼單元可以為編碼樹單元(codingtreeunit,簡稱ctu),每個ctu逐級劃分可獲得更小的cu。該cu的大小可包括四個級別,如64×64、32×32、16×16、8×8四個級別。其中,64×64級別的cu包括:64×64個像素點;32×32級別的cu包括:32×32個像素點;16×16級別的cu包括:16×16個像素點;8×8級別的cu包括:8×8個像素點。該待編碼單元可以為64×64、32×32、16×16、8×8四個級別中任一級別對應的編碼單元。
視頻圖像中一個幀圖像內的不同編碼單元之間相互獨立,該不同編碼單元的可能相同,也可能不同。也就是說,在每個幀圖像中,該圖像編碼裝置可以是以每個編碼單元為單位進行編碼,那么對該不同編碼單元進行編碼使用的運動預測模式可能相同,也可能不同。該圖像編碼裝置可采用編碼單元的運動預測模式對該編碼單元中的各像素單元進行運動預測,以確定該各像素單元的預測像素值,繼而實現(xiàn)編碼。該運動預測模式可用以確定編碼單元中控制點的運動矢量,繼而確定編碼單元中各像素單元的像素預測值。該像素單元例如可以包括:像素點或像素分塊,其中,像素分塊可包括多個像素點。
該待編碼單元的相鄰已編碼單元可以為與該待編碼單元的各邊界相鄰的位置的已編碼單元。
如上所述的s101中按照第一預設規(guī)則從待編碼單元的相鄰已編碼單元中確定出n個已編碼單元,可以是包括:采用預設的遍歷順序,對該待編碼單元的相鄰已編碼單元進行遍歷,從而確定該相鄰已編碼單元中,確定運動預測模式與該待編碼單元相同的n個已編碼單元。其中,該對該相鄰已編碼單元進行遍歷,可以是判斷該相鄰已編碼單元的運動預測模式與該待編碼單元的運動預測模式是否相同。對于已編碼單元來說,運動預測模式是確定的,則該相鄰已編碼單元的運動預測模式可以為該相鄰已編碼單元進行編碼時所采用的運動預測模式。該待編碼單元的運動預測模式可以預測的運動預測模式。
如上所述s101中按照第一預設規(guī)則從待編碼單元的相鄰已編碼單元中確定出n個已編碼單元之后,該方法還可包括:
確定該運動預測模式對應的指示信息。
若該運動預測模式包括仿射運動預測模式,可以確定該仿射運動預測模式對應的指示信息,如語法元素仿射-合并-標簽(affine-merge-flag),并將該affine-merge-flag配置為1。
若該運動預測模式包括仿射運動預測模式,但該相鄰已編碼單元中沒有與該待編碼單元的運動預測模式相同的已編碼單元,則可該affine-merge-flag配置為0。
舉例來說,若該待編碼單元的運動預測模式可以為仿射運動預測模式,則圖像編碼裝置例如可以是采用預設的遍歷順序,對該待編碼單元的相鄰已編碼單元進行遍歷,確定該相鄰已編碼單元中,確定運動預測模式為仿射運動預測模式的n個已編碼單元。該仿射運動預測模式也可稱為仿射變換運動預測模式。該預設的遍歷順序可以為該待編碼單元的所有相鄰已編碼單元的遍歷順序。該n個已編碼單元中每個已編碼單元例如可以為一個4×4的單元。
圖2為本發(fā)明實施例一的圖像編碼方法中待編碼單元與相鄰已編碼單元的結構示意圖。如圖2所示,該待編碼單元的相鄰已編碼單元例如可包括:已編碼單元a、已編碼單元b、已編碼單元c、已編碼單元d及已編碼單元e。若該待編碼單元的運動預測模式為仿射運動預測模式,則該待編碼單元的控制點可以為多個,如2個。該2個控制點例如可以為該待編碼單元中左上頂點和該待編碼單元中右上頂點。該待編碼單元中左上頂點可表示為像素單元0,該待編碼單元中右上頂點可表示為像素單元1。
該圖像編碼裝置可以是在第一預測方向上,依次對已編碼單元a、已編碼單元b進行遍歷,找到該第一預測方向上的第一個運動預測模式為仿射運動預測模式的已編碼單元,如已編碼單元b;在第二預測方向上,依次對已編碼單元c、已編碼單元d及已編碼單元e進行遍歷,找到第一個運動預測模式為仿射運動預測模式的已編碼單元,如已編碼單元d。
可替換的,該圖像編碼裝置可以是依次根據已編碼單元a、已編碼單元b、已編碼單元c、已編碼單元d及已編碼單元e進行遍歷,找到第一個運動預測模式為仿射運動預測模式的已編碼單元,如已編碼單元b。
s102、根據第n已編碼單元的運動矢量采用第一預設算法生成第n運動矢量組,n取遍不大于n的所有正整數。
可選的,s102中根據第n已編碼單元的運動矢量采用第一預設算法生成第n運動矢量組可以包括:
根據該第n已編碼單元的運動矢量、該第n已編碼單元的像素坐標,以及該待編碼單元的m個控制點的像素坐標,采用該第一預設算法確定出該m個控制點的運動矢量預測值;m為根據該待編碼單元的運動預測模式確定的正整數;
根據該m個控制點的運動矢量預測值,生成該第n運動矢量組。
具體地,該m個控制點可包括位于該待編碼單元的頂點位置的像素單元。若該待編碼單元的運動預測模式為仿射運動預測模式,則該m可以為多個,該m個控制點可以包括該待編碼單元中的m個頂點。
舉例來說,若該待編碼單元的運動預測模式為仿射運動預測模式,m可以為2,該m個控制點例如可以包括該待編碼單元中左上頂點和該待編碼單元中右上頂點。該待編碼單元中左上頂點可以為圖2中的像素單元0,該待編碼單元中右上頂點可以為圖2中的像素單元1。若該s101中確定的n個已編碼單元中第n已編碼單元例如可以為圖2中的已編碼單元b。以下,以已編碼單元b為例進行說明,該圖2中該已編碼單元b中的至少兩個像素單元可以為3個,可分別為該已編碼單元b中左上頂點、該已編碼單元b中右上頂點、該已編碼單元b中左下頂點。其中,該已編碼單元b中左上頂點可以為像素單元2、該已編碼單元b中右上頂點可表示為像素單元3,該已編碼單元b中左下頂點可表示為像素單元4。
如上所述根據該第n已編碼單元的運動矢量、該第n已編碼單元的像素坐標和該m個控制點的像素坐標,采用該第一預設算法確定出該待編碼單元的m個控制點的運動矢量預測值,可以包括;
根據該第n已編碼單元的左上頂點的運動矢量(vx2,vy2)、該第n已編碼單元的右上頂點的運動矢量(vx3,vy3)、該第n已編碼單元的左下頂點的運動矢量(vx4,vy4)、該第n已編碼單元的左上頂點的像素坐標(x2,y2)、該第n已編碼單元的右上頂點的像素坐標(x3,y3)、該第n已編碼單元的左下頂點的像素坐標(x4,y4)和該待編碼單元的左上頂點的像素坐標(x0,y0),采用如下公式(1)確定出該待編碼單元的左上頂點的運動矢量預測值(vx0,vy0)。
根據該第n已編碼單元的左上頂點的運動矢量(vx2,vy2)、該第n已編碼單元的右上頂點的運動矢量(vx3,vy3)、該第n已編碼單元的左上頂點的像素坐標(x2,y2)、該第n已編碼單元的右上頂點的像素坐標(x3,y3)、該待編碼單元的左上頂點的運動矢量預測值(vx0,vy0)、該待編碼單元的左上頂點的像素坐標(x0,y0)及該待編碼單元的左上頂點的像素坐標(x1,y1),采用如下公式(2)確定出該待編碼單元的右上頂點的運動矢量預測值(vx1,vy1)。
s103、按照第二預設規(guī)則在得到的n個運動矢量組中確定出一個運動矢量組為最優(yōu)運動矢量組。
可選的,如上s103中按照第二預設規(guī)則在得到的n個運動矢量組中確定出一個運動矢量組為最優(yōu)運動矢量組,可包括:
按照預設排序規(guī)則對該n個運動矢量組進行排序,生成候選運動矢量隊列;
若n大于或等于預設值,確定該候選運動矢量隊列中前預設個數的運動矢量組;
確定該前預設個數的運動矢量組中各運動矢量組與該待編碼單元的匹配誤差;
確定該匹配誤差最小的一個運動矢量組為該最優(yōu)運動矢量組。
具體地,該預設排序規(guī)則可包括:該n個已編碼單元的從大到小的順序。
該n個已編碼單元中每個已編碼單元的大小例如可以為該每個已編碼單元的水平寬度與垂直高度的乘積。該n個已編碼單元中每個已編碼單元的大小例如可以是根據如下公式(3)確定。
si=wi×hi公式(3)
其中,si為該每個已編碼單元的大小,wi為該每個已編碼單元的水平寬帶,hi為該每個已編碼單元的垂直高度,i為該每個已編碼單元的標識。
舉例來說,若該n為2。該n個已編碼單元例如可以為圖2所示的已編碼單元b和已編碼單元d。
已編碼單元b的大小可以為sb,sb為wb與hb的乘積;wb為該已編碼單元b的水平寬帶,hb為該已編碼單元b的垂直高度。已編碼單元d的大小可以為sd,sd為wd與hd的乘積;wd為該已編碼單元d的水平寬帶,hd為該已編碼單元d的垂直高度。若該已編碼單元b大于該已編碼單元d,則該遍歷順序例如可表示為b>d。
該候選運動矢量隊列中,根據該已編碼單元b生成的運動矢量組對應的索引標識例如可以為1,根據該已編碼單元d生成的運動矢量組對應的索引標識例如可以為2。
舉例來說,若n為10,也就是說,該候選運動矢量隊列包括10個運動矢量組,該候選運動矢量隊列中前預設個數的運動矢量組例如可以為該10個運動矢量組中的前5個運動矢量組。
可選的,從該候選運動矢量隊列中前預設個數的運動矢量組中選擇該最優(yōu)匹配運動矢量組,可以是:確定該前預設個數的運動矢量組中每個運動矢量組與該待編碼單元的匹配誤差;將與該待編碼單元的匹配誤差最小的一個運動矢量組確定為該最優(yōu)匹配運動矢量組。
其中,確定該前預設個數的運動矢量組中每個運動矢量組與該待編碼單元的匹配誤差,可以是:根據該每個運動矢量組確定該每個運動矢量組對應的該待編碼單元中每個像素單元的預測像素值;
根據該每個運動矢量組對應的該每個像素單元的預測像素值,與,該每個像素單元的原始像素值,的平方誤差和(sumofsquareddifferences,簡稱ssd)或者絕對誤差和(sumofabsolutedifferences,簡稱sad),確定該每個運動矢量組對應的率失真代價(ratedistortioncost,簡稱rdcost);
根據該每個運動矢量組對應的率失真代價確定該每個運動矢量組與該待編碼單元的匹配誤差。
具體地,上述步驟中根據該每個運動矢量組確定該每個運動矢量組對應的該待編碼單元中每個像素單元的預測像素值,可以包括:根據該每個運動矢量組確定該每個像素單元的運動矢量預測值,繼而根據該每個像素單元的運動矢量預測值,確定該每個運動矢量組對應的率失真代價。
舉例來說,以sad為例,圖像編碼裝置例如可以是根據該每個運動矢量組對應的該每個像素單元的預測像素值,與,該每個像素單元的原始像素值,的sad、與該待編碼單元對應的碼率,采用如下公式(4)確定該每個運動矢量組對應的率失真代價。
j=sad+λr公式(4)
其中,j為該每個運動矢量組對應的率失真代價;sad為該每個運動矢量組對應的該每個像素單元的預測像素值,與,該每個像素單元的原始像素值,的sad;r為該待編碼單元對應的碼率;λ為拉格朗日乘子,λ為預設常數。
s104、根據該最優(yōu)運動矢量組采用第二預設算法確定該待編碼單元中每個像素單元的預測像素值。
可選的,該s104中根據該最優(yōu)運動矢量組采用第二預設算法確定該待編碼單元中每個像素單元的預測像素值可以包括:
根據該最優(yōu)運動矢量組中,m個控制點的運動矢量預測值,以及,該待編碼單元中每個像素單元的像素坐標采用該第二預設算法確定該每個像素單元的運動矢量預測值;
在預設參考幀中根據該每個像素單元的運動矢量預測值確定該每個像素單元的預測像素值。
舉例來說,若該待編碼單元的運動預測模式為仿射運動預測模式,如圖2所示,該待編碼單元中控制點例如可以為2個,分別為該待編碼單元中左上頂點和該待編碼單元中右上頂點。
該圖像編碼裝置例如可以是根據該最優(yōu)運動矢量組中,2個控制點的運動矢量預測值,以及,該待編碼單元中每個像素單元的像素坐標,采用如下公式(5)確定該每個像素單元的運動矢量預測值。
其中,(vx,vy)為該每個像素單元的運動矢量預測值,vx為該每個像素單元的水平運動矢量預測值,vy為該每個像素單元的垂直運動矢量預測值。(x,y)為該每個像素單元的像素坐標,x為該每個像素單元的水平像素坐標,y為該每個像素單元的垂直像素坐標。w為該待編碼單元的水平寬度。
s105、根據該每個像素單元的原始像素值與該每個像素單元的預測像素值的差值確定該每個像素單元的預測殘差值。
s106、對該每個像素單元的預測殘差值和該最優(yōu)運動矢量組的索引標識進行編碼獲得該待編碼單元對應的碼流;該最優(yōu)運動矢量組的索引標識用于指示解碼裝置確定該每個像素單元的預測像素值。
具體地,該s106中可以是對該每個像素單元的預測殘差值和該最優(yōu)運動矢量組的索引標識依次進行變換(transform)、量化(quantization)后再進行編碼,獲得該待編碼單元對應的碼流。
其中,該變換可以為卡洛南-洛伊變換(karhunen-loèvetransform,簡稱klt)、離散傅立葉變換和離散余弦變換(discretecosinetransform,簡稱dct)等變換中任一。該編碼可以為熵(entropy)編碼。
可選的,該s106中可以是對該每個像素單元的預測殘差值、該最優(yōu)運動矢量組的索引標識及該預設參考幀的索引標識進行編碼獲得該待編碼單元對應的碼流。
可選的,該s106中可以是對該每個像素單元的預測殘差值、該最優(yōu)運動矢量組的索引標識、該預設參考幀的索引標識、及該待編碼單元的運動預測模式對應的指示信息進行編碼獲得該待編碼單元對應的碼流。
由于該n個已編碼單元為該待編碼單元的相鄰已編碼單元中運動預測模式相同的已編碼單元,則該n個已編碼單元與該待編碼單元的運動相關性較高。由于,該n個運動矢量組是根據該n個已編碼單元的運動矢量確定的,那么根據該n個運動矢量組中的最優(yōu)運動矢量組確定的該待編碼單元中每個像素單元的運動矢量預測值則更準確,從而使得編碼精度更準確。
并且,該候選運動該最優(yōu)運動矢量組可以是從候選運動矢量隊列中前預設個數的運動矢量組中確定的,而該候選運動矢量隊列是根據排序后的n個運動矢量組所生成的,那么該最優(yōu)運動矢量組在該候選運動矢量隊列中的索引標識較小,使得對該最優(yōu)運動矢量組的索引標識進行編碼的比特數較少,從而提高編碼效率。
本發(fā)明實施例一提供的圖像編碼方法,可按照第一預設規(guī)則從待編碼單元的相鄰已編碼單元中確定n個已編碼單元,n個已編碼單元與待編碼單元的運動預測模式相同,根據第n已編碼單元的運動矢量采用第一預設算法生成第n運動矢量組,n取遍不大于n的所有正整數,按照第二預設規(guī)則在得到的n個運動矢量組中確定一個運動矢量組為最優(yōu)運動矢量組,確定該最優(yōu)運動矢量組采用第二預設算法確定該待編碼單元中每個像素單元的預測像素值,根據該每個像素單元的原始像素值與該每個像素單元的預測像素值的差值確定該每個像素單元的預測殘差值,對該每個像素單元的預測殘差值和該最優(yōu)匹配運動矢量組的索引標識進行編碼獲得該待編碼單元對應的碼流。由于該n個已編碼單元與該待編碼單元的運動預測模式相同,則該n個已編碼單元與該待編碼單元的運動相關性較高,而該最優(yōu)運動矢量組從根據該n個已編碼單元的運動矢量確定的n個運動矢量組中確定的,那么根據該最優(yōu)運動矢量組確定該待編碼單元中每個像素單元的預測像素值則更準確,從而使得圖像編碼的準確度更高。
本發(fā)明實施例二還提供一種圖像編碼方法。圖3為本發(fā)明實施例二提供的一種圖編碼方法的流程圖。如圖3所示,該方法在上述實施例中s103中所述按照第二預設規(guī)則在得到的n個運動矢量組中確定出一個運動矢量組為最優(yōu)運動矢量組,可包括:
s301、預設的排序規(guī)則對該n個運動矢量組進行排序。
該預設排序規(guī)則例如可以為該n個已編碼單元的大小順序。
s302、若n小于預設值,生成q個運動矢量組,使得n與q之和大于或等于該預設值,q為正整數。
若n小于預設值,為保證候選運動矢量組中運動矢量組的個數,從而使得選擇的最優(yōu)運動矢量組的準確度,還需生成q個運動矢量組。
可選的,該s302中生成q個運動矢量組可包括:
從該相鄰已編碼單元中確定該待編碼單元中第m控制點對應的已編碼單元;第m控制點對應的已編碼單元與第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;
將該第m控制點對應的已編碼單元的運動矢量,確定為該第m控制點的運動矢量預測值;
根據該m個控制點的運動矢量預測值,生成該q個運動矢量組。
舉例來說,如上圖2所示,若該相鄰已編碼單元包括:已編碼單元a、已編碼單元b、已編碼單元c、已編碼單元d及已編碼單元e。若該待編碼單元中控制點的個數為2。該相鄰已編碼單元中,該待編碼單元的左上頂點對應的已編碼單元例如可以包括已編碼單元c;該相鄰已編碼單元中,該待編碼單元的右上頂點對應的已編碼單元例如可以包括:已編碼單元d、已編碼單元e。
若該待編碼單元的左上頂點對應的已編碼單元例如可以包括已編碼單元c,則該左上頂點的一個運動矢量預測值可以為v0c。v0c可以為根據已編碼單元c的運動矢量確定的該左上頂點的運動矢量預測值。
若該待編碼單元的右上頂點對應的已編碼單元例如可以包括已編碼單元d和已編碼單元e,則該右上頂點的一個運動矢量預測值可以為v1d,該右上頂點的另一個運動矢量預測值可以為v1e。v1d可以為根據已編碼單元d的運動矢量確定的該右上頂點的運動矢量預測值;v1e可以為根據已編碼單元e的運動矢量確定的該右上頂點的運動矢量預測值。
該q個運動矢量組可包括:(v0c,v1d)和(v0c,v1e)兩個運動矢量組。q例如可以為2。
可替代地,該s302中生成q個運動矢量組可包括:
從該相鄰已編碼單元中確定該待編碼單元中第m控制點對應的已編碼單元;該第m控制點對應的已編碼單元與該第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;
將該第m控制點對應的已編碼單元的運動矢量,確定為該第m控制點的第一運動矢量預測值;
根據該m個控制點的第一運動矢量預測值,生成k個第一運動矢量組;
將該相鄰已編碼單元中第j個已編碼單元的運動矢量,確定為該第m個控制點的第二運動矢量預測值;j為1,…,j中任一,j為該相鄰已編碼單元的個數;j為正整數;
根據該m個控制點的第二運動矢量預測值,生成l個第二運動矢量組;
將該k個第一運動矢量組排列至該l個第二運動矢量組之后,生成該q個運動矢量組。
具體地,該q個運動矢量組可以是分多次生成的,如先生成k個第一運動矢量組,再生成l個第二運動矢量組。
s303、將該q個運動矢量組排列至該n個運動矢量組之后,生成候選運動矢量隊列。
s304、確定該候選運動矢量隊列中前預設個數的運動矢量組。
該s304中確定該候選運動矢量隊列中前預設個數的運動矢量組的實現(xiàn)過程與上述實施例一中類似,在此不再贅述。
s305、確定該前預設個數的運動矢量組中各運動矢量組與該待編碼單元的匹配誤差。
該s305中各運動矢量組與該待編碼單元的匹配誤差的具體實現(xiàn)過程與上述實施例一中類似,在此不再贅述。
s306、確定該匹配誤差最小的一個運動矢量組為該最優(yōu)運動矢量組。
可選的,如上述s303中將該q個運動矢量組添加至該排序后的該n個運動矢量組之后,生成候選運動矢量隊列,可以包括:
確定第q個運動矢量組對應的特征值;q取遍不大于q的所有正整數;
根據該q個運動矢量組對應的特征值,按照從小到大的順序,對該q個運動矢量組進行排序;
將該排序后的該q個運動矢量組添加至該排序后的該n個運動矢量組之后,生成該候選運動矢量隊列。
可選的,如上所述確定第q個運動矢量組對應的特征值,可以包括:
確定該第q個運動矢量組中該m個控制點中相鄰控制點的運動矢量預測值,在同一預測方向上的分量的差值;
比較該差值的絕對值與預設分量閾值的大小;該預設分量閾值為該待編碼單元在該同一預測方向上的范圍;
若該差值的絕對值小于或等于該預設分量,則確定該第q個運動矢量組對應的特征值。
具體地,該預設分量閾值可以是根據該待編碼單元在水平預測方向上的水平寬度確定的;該預設分量閾值還可以是根據該待編碼單元在垂直預測方向上的垂直高度確定的。
舉例來說,若該待編碼單元的m個控制點包括:如圖2所示的該待編碼單元的左上頂點的像素單元和右上頂點。該q個運動矢量組可包括:(v0c,v1d)和(v0c,v1e)兩個運動矢量組,其中,v0c為該待編碼單元中左上頂點的運動矢量預測值,v1d和v1e均為該待編碼單元中右上頂點的運動矢量預測值。
該實施例中例如可以是根據如下公式(6),比較該m個控制點中相鄰控制點的運動矢量預測值在同一預測方向上的分量的差值,與,預設分量閾值的大小。
其中,vx0i為左上頂點的運動矢量預測值在水平預測方向上的分量;vy0i為左上頂點的運動矢量預測值在垂直預測方向上的分量;vx1j為右上頂點的運動矢量預測值在水平預測方向上的分量;vy1j為右上頂點的運動矢量預測值在垂直預測方向上的分量。其中,i可以為c,j可以為d和e中任一。w為該待編碼單元的水平寬度,h為該待編碼單元的垂直高度。
若i為c,j為d和e,vx0i與vx1j的差值的絕對值均小于或等于
可選的,如上所述的確定第q個運動矢量組對應的特征值可以包括:
從該相鄰已編碼單元中確定另一控制點對應的已編碼單元;該另一控制點對應的已編碼單元與該另一控制點間的距離小于或等于預設距離;該另一控制點為該待編碼單元中該m個控制點外的任一控制點;
將該另一控制點對應的已編碼單元的運動矢量確定為該另一控制點的運動矢量預測值;
根據該另一控制點的運動矢量預測值,和,該第q個運動矢量組中的該m個控制點的運動矢量預測值,采用第三預設算法確定該第q個運動矢量組對應的特征值。
舉例來說,若該待編碼單元中該m個控制點可以包括該待編碼單元的左上頂點和右上頂點,該另一個控制點可以為該待編碼單元的左下頂點,如圖2中的該待編碼單元中的像素單元5。
該另一控制點對應的已編碼單元可以包括:已編碼單元a和已編碼單元b,因而可將該已編碼單元a的運動矢量確定為該另一控制點的運動矢量預測值為v5a,將該已編碼單元b的運動矢量確定為該另一控制點的運動矢量預測值為v5b。
該實施例例如可以是根據該另一控制點的運動矢量預測值,和,第q個運動矢量組中的該m個控制點的運動矢量預測值,采用如下公式(7)確定該第q個運動矢量組對應的特征值。
d(v)=abs((vx1j-vx0i)×h-(vy5k-vx0i)×w)+abs((vy1j-vy0i)×h+(vx5k-vx0i)×w)公式(7)
其中,d(v)為該第q個運動矢量組對應的特征值。abs為絕對值函數;vx5k為該另一控制點,如左下頂點的運動矢量預測值在水平預測方向上的分量;vy5k為該另一控制點,如左下頂點的運動矢量預測值在垂直預測方向上的分量。其中,k可以為a和b中任一。
可選的,該待編碼單元的運動預測模式可包括:平移運動預測模式或仿射運動預測模式。
若該待編碼單元的運動預測模式包括平移運動預測模式,該控制點的個數,即m可以為1;若該待編碼單元的運動預測模式包括仿射運動預測模式,該控制點的個數,即m可以為多個。
本發(fā)明實施例二提供多種確定候選運動矢量隊列的實現(xiàn)過程,可更好地保證根據該候選運動矢量隊列中選擇的最優(yōu)運動矢量組確定該待編碼單元中每個像素單元的預測像素值則更準確,從而使得編碼精度更準確,還可使得對該最優(yōu)運動矢量組的索引標識進行編碼的比特數較少,從而提高編碼效率。
本發(fā)明實施例三提供一種圖像解碼方法,該圖像解碼方法為上述圖像編碼方法對應的解碼方法。該圖像解碼方法可由圖像解碼裝置執(zhí)行,該圖像解碼裝置例如可以通過軟件和/或硬件的形式集成在具有圖像處理功能的電子設備中,該電子設備例如可以為智能終端、個人計算機、消費電子產品的或視頻服務器等。圖4為本發(fā)明實施例三提供的一種圖像解碼方法的流程圖。如圖4所示,該方法可包括:
s401、根據第一預設規(guī)則從待解碼單元的相鄰已解碼單元中確定出n個已解碼單元;其中,n個已解碼單元與所述待解碼單元的運動預測模式相同。
該s401的具體實現(xiàn)過程與上述實施例中s101類似,在此不再贅述。
如上所述s401中根據該第一預設規(guī)則從待解碼單元的相鄰已解碼單元中確定出n個已解碼單元之前,該方法還可包括:
確定該待編碼單元的運動預測模式。
具體地,如上確定該待編碼單元的運動預測模式可以包括:對該待解碼單元對應的語法元素進行解析,獲得該待編碼單元的運動預測模式。若該解析后的語法元素affine-merge-flag為1,則該待編碼單元的運動預測模式為仿射運動預測模式;若該解析后的語法元素affine-merge-flag為0,則該待編碼單元的運動預測模式為平移運動預測模式。
s402、根據第n個已解碼單元的運動矢量采用第一預設算法生成第n運動矢量組;n取遍不大于n的所有正整數。
該s402的具體實現(xiàn)過程與上述實施例中s102類似,在此不再贅述。
s403、對該待解碼單元對應的碼流進行解碼,獲得該每個像素單元的預測殘差值和最優(yōu)運動矢量組的索引標識。
具體地,該s403中可以是對該待編碼單元對應的碼流進行解碼,并對解碼后的信息依次進行反量化(quantization)、反變換(transform),繼而獲得該每個像素單元的預測殘差值,和,該最優(yōu)匹配運動矢量組的索引標識。其中,該反變換可以為上述實施例中s106中變換對應的逆變換,該反量化可以為上述實施例中s106中量化對應的反量化,該解碼可以為上述s106中編碼對應的解碼,如熵編碼對應的解碼。
s404、根據該最優(yōu)運動矢量組的索引標識確定n個運行矢量組中的該最優(yōu)運動矢量組。
該最優(yōu)運動矢量組的索引標識可以為該最優(yōu)運動矢量組在該n個運動矢量組中的索引號。
s405、根據該最優(yōu)運動矢量組采用第二預設算法確定該待解碼單元中每個像素單元的預測像素值。
該s405中確定該待解碼單元中每個像素單元的預測像素值的過程可以與上述實施例中104中類似,在此不再贅述。
s406、根據該每個像素單元的預測像素值和該每個像素單元的預測殘差值之和確定該每個像素單元的重建像素值。
可選的,如上所述s402中根據第n已解碼單元的運動矢量采用第一預設算法生成第n運動矢量組可包括:
根據該第n已解碼單元的運動矢量、該第n已解碼單元的像素坐標和該m個控制點的像素坐標,采用該第一預設算法確定出該待解碼單元的m個控制點的運動矢量預測值;
根據該m個控制點的運動矢量預測值,生成該第n運動矢量組;m為根據該待解碼單元的運動預測模式確定的正整數。
可選的,該m個控制點包括:該待解碼單元的左上頂點和右上頂點。
如上所述的根據該第n已解碼單元的運動矢量、該第n已解碼單元的像素坐標和該m個控制點的像素坐標,采用該第一預設算法確定出該待解碼單元的m個控制點的運動矢量預測值,可以包括:
根據該第n已解碼單元的左上頂點的運動矢量(vx2,vy2)、該第n已解碼單元的右上頂點的運動矢量(vx3,vy3)、該第n已解碼單元的左下頂點的運動矢量(vx4,vy4)、該第n已解碼單元的左上頂點的像素坐標(x2,y2)、該第n已解碼單元的右上頂點的像素坐標(x3,y3)、該第n已解碼單元的左下頂點的像素坐標(x4,y4)和該待解碼單元的左上頂點的像素坐標(x0,y0),采用如下公式(1)確定出該待解碼單元的左上頂點的運動矢量預測值(vx0,vy0);
根據該第n已解碼單元的左上頂點的運動矢量(vx2,vy2)、該第n已解碼單元的右上頂點的運動矢量(vx3,vy3)、該第n已解碼單元的左上頂點的像素坐標(x2,y2)、該第n已解碼單元的右上頂點的像素坐標(x3,y3)、該待解碼單元的左上頂點的運動矢量預測值(vx0,vy0)、該待解碼單元的左上頂點的像素坐標(x0,y0)及該待解碼單元的左上頂點的像素坐標(x1,y1),采用如下公式(2)確定出該待解碼單元的右上頂點的運動矢量預測值(vx1,vy1);
可選的,如上所述s404中根據該最優(yōu)運動矢量組的索引標識確定n個運動矢量組中的該最優(yōu)運動矢量組,可以包括:
按照預設排序規(guī)則對該n個運動矢量組進行排序,生成候選運動矢量隊列;
若n大于或等于預設值,確定該候選運動矢量隊列中前預設個數的運動矢量組;
根據該最優(yōu)運動矢量組的索引標識確定該前預設個數的運動矢量組中的該最優(yōu)運動矢量組。
可選的,該預設排序規(guī)則包括:n個已解碼單元的從大到小的順序。
可替代地,如上所述的s404中根據該最優(yōu)運動矢量組的索引標識確定n個運動矢量組中的該最優(yōu)運動矢量組,可以包括:
按照預設排序規(guī)則對該n個運動矢量組進行排序;
若n小于預設值,生成q個運動矢量組,使得n與q之和大于或等于該預設值,q為正整數;
將該q個運動矢量組排列至該n個運動矢量組之后,生成候選運動矢量隊列;
確定該候選運動矢量隊列中前預設個數的運動矢量組;
根據該最優(yōu)運動矢量組的索引標識確定該前預設個數的運動矢量組中的該最優(yōu)運動矢量組。
可選的,如上所述的生成q個運動矢量組可以包括:
從該相鄰已解碼單元中確定該待解碼單元中第m控制點對應的已解碼單元;該第m控制點對應的已解碼單元與該第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;
將該第m控制點對應的已解碼單元的運動矢量,確定為該第m控制點的運動矢量預測值;
根據該m個控制點的運動矢量預測值,生成該q個運動矢量組。
可選的,如上所述的生成q個運動矢量組可以包括:
從該相鄰已解碼單元中確定該待解碼單元中第m控制點對應的已解碼單元;該第m控制點對應的已解碼單元與該第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;
將該第m控制點對應的已解碼單元的運動矢量,確定為該第m控制點的第一運動矢量預測值;
根據該m個控制點的第一運動矢量預測值,生成k個第一運動矢量組;
將該相鄰已解碼單元中第j個已解碼單元的運動矢量,確定為該第m個控制點的第二運動矢量預測值;j為1,…,j中任一,j為該相鄰已解碼單元的個數;j為正整數;
根據該m個控制點的第二運動矢量預測值,生成l個第二運動矢量組;
將該k個第一運動矢量組排列至該l個第二運動矢量組之后,生成該q個運動矢量組。
可選的,將該q個運動矢量組添加至該排序后的該n個運動矢量組之后,生成候選運動矢量隊列,可以包括:
確定第q個運動矢量組對應的特征值;q取遍不大于q的所有正整數;
根據該q個運動矢量組對應的特征值,按照從小到大的順序,對該q個運動矢量組進行排序;
將該排序后的該q個運動矢量組添加至該排序后的該n個運動矢量組之后,生成該候選運動矢量隊列。
可選的,確定第q個運動矢量組對應的特征值,包括:
確定該第q個運動矢量組中該m個控制點中相鄰控制點的運動矢量預測值,在同一預測方向上的分量的差值;
比較該差值的絕對值與預設分量閾值的大小;該預設分量閾值為該待解碼單元在該同一預測方向上的范圍;
若該差值的絕對值小于或等于該預設分量閾值,則確定該第q個運動矢量組對應的特征值。
可選的,上述確定第q個運動矢量組對應的特征值可以包括:
從該相鄰已解碼單元中確定另一控制點對應的已解碼單元;該另一控制點對應的已解碼單元與該另一控制點間的距離小于或等于預設距離;該另一控制點為該待解碼單元中該m個控制點外的任一控制點;
將該另一控制點對應的已解碼單元的運動矢量,確定為該另一控制點的運動矢量預測值;
根據該另一控制點的運動矢量預測值和該第q個運動矢量組中的該m個控制點的運動矢量預測值,采用第三預設算法確定該第q個運動矢量組對應的特征值。
可選的,該待解碼單元的運動預測模式包括平移運動預測模式或仿射運動預測模式。若該待解碼單元的運動預測模式包括平移運動預測模式,該控制點的個數為1;若該待解碼單元的運動預測模式包括仿射運動預測模式,該控制點的個數為多個。
本發(fā)明實施例三提供的圖像解碼方法為上述實施例一至二中所述的圖像編碼方法對應的解碼方法,其有益效果與上述實施例類似,在此不再贅述。
本發(fā)明實施例四提供一種圖像編碼裝置。圖5為本發(fā)明實施例四提供的一種圖像編碼裝置的結構示意圖。如圖5所示,該圖像編碼裝置500包括:確定模塊501、計算模塊502和編碼模塊503。
其中,確定模塊501,用于按照第一預設規(guī)則從待編碼單元的相鄰已編碼單元中確定出n個已編碼單元;其中,該n個已編碼單元與該待編碼單元的運動預測模式相同;n為正整數。
計算模塊502,用于根據確定模塊501確定的第n已編碼單元的運動矢量采用第一預設算法生成第n運動矢量組;n取遍不大于n的所有正整數。
確定模塊501,還用于按照第二預設規(guī)則在計算模塊502得到的n個運動矢量組中確定出一個運動矢量組為最優(yōu)運動矢量組。
計算模塊502,還用于根據該確定模塊確定的該最優(yōu)運動矢量組采用第二預設算法確定該待編碼單元中每個像素單元的預測像素值,根據該每個像素單元的原始像素值與該每個像素單元的預測像素值的差值確定該每個像素單元的預測殘差值。
編碼模塊503,用于對該每個像素單元的預測殘差值和該最優(yōu)運動矢量組的索引標識進行編碼獲得該待編碼單元對應的碼流;該最優(yōu)運動矢量組的索引標識用于指示解碼裝置確定該每個像素單元的預測像素值。
可選的,計算模塊502,具體用于根據確定模塊501確定的第n已編碼單元的運動矢量、該第n已編碼單元的像素坐標和該待解碼單元的m個控制點的像素坐標,采用該第一預設算法確定出該m個控制點的運動矢量預測值;根據該m個控制點的運動矢量預測值,生成該第n運動矢量組;m為根據該待編碼單元的運動預測模式確定的正整數。
可選的,m個控制點包括:該待編碼單元的左上頂點和右上頂點;
計算模塊502,具有用于根據確定模塊501確定的該第n已編碼單元的左上頂點的運動矢量(vx2,vy2)、該第n已編碼單元的右上頂點的運動矢量(vx3,vy3)、該第n已編碼單元的左下頂點的運動矢量(vx4,vy4)、該第n已編碼單元的左上頂點的像素坐標(x2,y2)、該第n已編碼單元的右上頂點的像素坐標(x3,y3)、該第n已編碼單元的左下頂點的像素坐標(x4,y4)和該待編碼單元的左上頂點的像素坐標(x0,y0),采用如下公式(1)確定出該待編碼單元的左上頂點的運動矢量預測值(vx0,vy0);
計算模塊502,還用于根據確定模塊501確定的該第n已編碼單元的左上頂點的運動矢量(vx2,vy2)、該第n已編碼單元的右上頂點的運動矢量(vx3,vy3)、該第n已編碼單元的左上頂點的像素坐標(x2,y2)、該第n已編碼單元的右上頂點的像素坐標(x3,y3)、該待編碼單元的左上頂點的運動矢量預測值(vx0,vy0)、該待編碼單元的左上頂點的像素坐標(x0,y0)及該待編碼單元的左上頂點的像素坐標(x1,y1),采用如下公式(2)確定出該待編碼單元的右上頂點的運動矢量預測值(vx1,vy1);
可選的,確定模塊501,具體用于按照預設排序規(guī)則對該n個運動矢量組進行排序,生成候選運動矢量隊列,若n大于或等于預設值,確定該候選運動矢量隊列中前預設個數的運動矢量組,確定該前預設個數的運動矢量組中各運動矢量組與該待編碼單元的匹配誤差,確定該匹配誤差最小的一個運動矢量組為該最優(yōu)運動矢量組。
可選的,該預設排序規(guī)則包括:該n個已編碼單元從大到小的順序。
可選的,確定模塊501,還用于按照預設排序規(guī)則對該n個運動矢量組進行排序;若n小于預設值,生成q個運動矢量組,使得n與q之和大于或等于該預設值,q為正整數;將該q個運動矢量組排列至該n個運動矢量組之后,生成候選運動矢量隊列;確定該候選運動矢量隊列中前預設個數的運動矢量組;確定該前預設個數的運動矢量組中各運動矢量組與該待編碼單元的匹配誤差;確定該匹配誤差最小的一個運動矢量組為該最優(yōu)運動矢量組。
可選的,確定模塊501,還用于從該相鄰已編碼單元中確定該待編碼單元中第m控制點對應的已編碼單元;該第m控制點對應的已編碼單元與該第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;將該第m控制點對應的已編碼單元的運動矢量,確定為該第m控制點的運動矢量預測值;根據該m個控制點的運動矢量預測值,生成該q個運動矢量組。
可選的,確定模塊501,還用于從該相鄰已編碼單元中確定該編碼單元中第m控制點對應的已編碼單元;該第m控制點對應的已編碼單元與該第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;將該第m控制點對應的已編碼單元的運動矢量,確定為該第m控制點的第一運動矢量預測值;根據該m個控制點的第一運動矢量預測值,生成k個第一運動矢量組;將該相鄰已編碼單元中第j個已編碼單元的運動矢量,確定為該第m個控制點的第二運動矢量預測值;j為1,…,j中任一,j為該相鄰已編碼單元的個數,j為正整數;根據該m個控制點的第二運動矢量預測值,生成l個第二運動矢量組;將該k個第一運動矢量組排列至該l個第二運動矢量組之后,生成該q個運動矢量組。
可選的,確定模塊501,還用于確定第q個運動矢量組對應的特征值;q取遍不大于q的所有正整數;根據該進行排序;將該排序后的該q個運動矢量組添加至該排序后的該n個運動矢量組之后,生成該候選運動矢量隊列。
可選的,確定模塊501,還用于確定該第q個運動矢量組中該m個控制點中相鄰控制點的運動矢量預測值,在同一預測方向上的分量的差值;比較該差值的絕對值與預設分量閾值的大??;該預設分量閾值為該待編碼單元在該同一預測方向上的范圍;若該差值的絕對值小于或等于該預設分量閾值,則確定該第q個運動矢量組對應的特征值。
可選的,確定模塊501,還用于從該相鄰已編碼單元中確定另一控制點對應的已編碼單元;該另一控制點對應的已編碼單元與該另一控制點間的距離小于或等于預設距離;該另一控制點為該待編碼單元中該m個控制點外的任一控制點;將該另一控制點對應的已編碼單元的運動矢量,確定為該另一控制點的運動矢量預測值;根據該另一控制點的運動矢量預測值和該第q個運動矢量組中的該m個控制點的運動矢量預測值,采用第三預設算法確定該第q個運動矢量組對應的特征值。
可選的,待編碼單元的運動預測模式包括平移運動預測模式或仿射運動預測模式。
本發(fā)明實施例四提供的圖像編碼裝置,可用于執(zhí)行上述實施例一或中任一所述的圖像編碼方法,具體實現(xiàn)過程及有益效果與上述實施例類似,在此不再贅述。
本發(fā)明實施例五還提供一種圖像解碼裝置。圖6為本發(fā)明實施例五提供的一種圖像解碼裝置的結構示意圖。如圖6所示,圖像解碼裝置600可包括:確定模塊601、計算模塊602和解碼模塊603。
確定模塊601,用于根據第一預設規(guī)則從待解碼單元的相鄰已解碼單元中確定出n個已解碼單元;其中,該n個已解碼單元與該待解碼單元的運動預測模式相同;n為正整數;
計算模塊602,用于根據確定模塊602確定的第n已解碼單元的運動矢量采用第一預設算法確定生成第n運動矢量組;n取遍不大于n的所有正整數;
解碼模塊603,用于對該待解碼單元對應的碼流進行解碼,獲得該每個像素單元的預測殘差值和最優(yōu)運動矢量組的索引標識
確定模塊601,還用于根據解碼模塊603確定的該最優(yōu)運動矢量組的索引標識確定n個運動矢量組中的該最優(yōu)運動矢量組;
計算模塊602,還用于根據確定模塊601確定的該最優(yōu)運動矢量組采用第二預設算法確定該待解碼單元中每個像素單元的預測像素值,根據該每個像素單元的預測像素值和該每個像素單元的預測殘差值的和確定該每個像素單元的重建像素值。
可選的,計算模塊602,具有用于根據確定模塊601確定的該第n已解碼單元的運動矢量、該第n已解碼單元的像素坐標和該待解碼單元的m個控制點的像素坐標,采用該第一預設算法確定出該m個控制點的運動矢量預測值;根據該m個控制點的運動矢量預測值,生成該第n運動矢量組;m為根據該待解碼單元的運動預測模式確定的正整數。
可選的,該m個控制點包括:該待解碼單元的左上頂點和右上頂點;
計算模塊602,具體用于根據確定模塊601確定的該第n已解碼單元的左上頂點的運動矢量(vx2,vy2)、該第n已解碼單元的右上頂點的運動矢量(vx3,vy3)、該第n已解碼單元的左下頂點的運動矢量(vx4,vy4)、該第n已解碼單元的左上頂點的像素坐標(x2,y2)、該第n已解碼單元的右上頂點的像素坐標(x3,y3)、該第n已解碼單元的左下頂點的像素坐標(x4,y4)和所述待解碼單元的左上頂點的像素坐標(x0,y0),采用如下公式(1)確定出該待解碼單元的左上頂點的運動矢量預測值(vx0,vy0);
計算模塊602,具體還用于根據確定模塊601確定的該第n已解碼單元的左上頂點的運動矢量(vx2,vy2)、該第n已解碼單元的右上頂點的運動矢量(vx3,vy3)、該第n已解碼單元的左上頂點的像素坐標(x2,y2)、該第n已解碼單元的右上頂點的像素坐標(x3,y3)、該待解碼單元的左上頂點的運動矢量預測值(vx0,vy0)、該待解碼單元的左上頂點的像素坐標(x0,y0)及該待解碼單元的左上頂點的像素坐標(x1,y1),采用如下公式(2)確定出該待解碼單元的右上頂點的運動矢量預測值(vx1,vy1);
可選的,確定模塊601,還用于按照預設排序規(guī)則對n個運動矢量組進行排序,生成候選運動矢量隊列;若n大于或等于預設值,確定該候選運動矢量隊列中前預設個數的運動矢量組;根據該最優(yōu)運動矢量組的索引標識確定該前預設個數的運動矢量組中的該最優(yōu)運動矢量組。
可選的,該預設排序規(guī)則包括:該n個已解碼單元的從大到小的順序。
可選的,確定模塊601,還用于按照預設排序規(guī)則對該n個運動矢量組進行排序;若n小于預設值,生成q個運動矢量組,使得n與q之和大于或等于該預設值,q為正整數;將該q個運動矢量組排列至該n個運動矢量組之后,生成候選運動矢量隊列;確定該候選運動矢量隊列中前預設個數的運動矢量組;根據該最優(yōu)運動矢量組的索引標識確定該前預設個數的運動矢量組中的該最優(yōu)運動矢量組。
可選的,確定模塊601,還用于從該相鄰已解碼單元中確定該待解碼單元中第m控制點對應的已解碼單元;該第m控制點對應的已解碼單元與該第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;將該第m控制點對應的已解碼單元的運動矢量,確定為該第m控制點的運動矢量預測值;根據該m個控制點的運動矢量預測值,生成該q個運動矢量組。
可選的,該確定模塊601,還用于從所述相該鄰已解碼單元中確定該待解碼單元中第m控制點對應的已解碼單元;該第m控制點對應的已解碼單元與該第m控制點間的距離小于或等于預設距離;m取遍不大于m的所有正整數;將該第m控制點對應的已解碼單元的運動矢量,確定為該第m控制點的第一運動矢量預測值;根據該m個控制點的第一運動矢量預測值,生成k個第一運動矢量組;將該相鄰已解碼單元中第j個已解碼單元的運動矢量,確定為該第m個控制點的第二運動矢量預測值;j為1,…,j中任一,j為該相鄰已解碼單元的個數;j為正整數;根據該m個控制點的第二運動矢量預測值,生成l個第二運動矢量組;將該k個第一運動矢量組排列至該l個第二運動矢量組之后,生成該q個運動矢量組。
可選的,確定模塊601,還用于確定第q個運動矢量組對應的特征值;q取遍不大于q的所有正整數;根據該q個運動矢量組對應的特征值,按照從小到大的順序,對該q個運動矢量組進行排序;將該排序后的該q個運動矢量組添加至該排序后的該n個運動矢量組之后,生成該候選運動矢量隊列。
可選的,確定模塊601,還用于確定該第q個運動矢量組中該m個控制點中相鄰控制點的運動矢量預測值,在同一預測方向上的分量的差值;比較該差值的絕對值與預設分量閾值的大?。辉擃A設分量閾值為該待解碼單元在該同一預測方向上的范圍;若該差值的絕對值小于或等于該預設分量閾值,則確定該第q個運動矢量組對應的特征值。
可選的,確定模塊601,還用于從該相鄰已解碼單元中確定另一控制點對應的已解碼單元;該另一控制點對應的已解碼單元與該另一控制點間的距離小于或等于預設距離;該另一控制點為該待解碼單元中該m個控制點外的任一控制點;將該另一控制點對應的已解碼單元的運動矢量,確定為該另一控制點的運動矢量預測值;根據該另一控制點的運動矢量預測值和該第q個運動矢量組中的該m個控制點的運動矢量預測值,采用第三預設算法確定該第q個運動矢量組對應的特征值。
可選的,該待解碼單元的運動預測模式包括平移運動預測模式或仿射運動預測模式。
本發(fā)明實施例五提供的圖像解碼裝置,可執(zhí)行上述實施例三提供的圖像解碼方法,具體實現(xiàn)過程及有益效果與上述實施例類似,在此不再贅述。
本發(fā)明實施例六提供圖像編碼裝置。圖7為本發(fā)明實施例六提供的圖像編碼裝置的結構示意圖。如圖7所示,圖像編碼裝置700包括:處理器701、存儲器702、通信接口703和總線704;其中,處理器701與存儲器702、通信接口703通過總線704連接
存儲器702用于存儲指令。
處理器701用于執(zhí)行指令,當處理器701執(zhí)行存儲器702存儲的指令時,使得處理器701執(zhí)行上述實施例一或二中任一所述的圖像編碼方法。
本發(fā)明實施例六提供的圖像編碼裝置,可執(zhí)行上述實施例一或二提供的圖像編碼方法,具體實現(xiàn)過程及有益效果與上述實施例類似,在此不再贅述。
本發(fā)明實施例七提供圖像解碼裝置。圖8為本發(fā)明實施例七提供的圖像解碼裝置的結構示意圖。如圖8所示,圖像解碼裝置800可包括:處理器801、存儲器802、通信接口803和總線804;其中,處理器801與存儲器802、通信接口803通過總線804連接。
存儲器802用于存儲指令;
處理器801用于執(zhí)行指令,當處理器801執(zhí)行存儲器802存儲的指令時,使得處理器801執(zhí)行上述實施例三所述的圖像解碼方法。
本發(fā)明實施例七提供的圖像解碼裝置,可執(zhí)行上述實施例三提供的圖像解碼方法,具體實現(xiàn)過程及有益效果與上述實施例類似,在此不再贅述。
本領域普通技術人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質。
最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的范圍。