本發明涉及圖像處理技術領域,特別是涉及一種圖像生成方法及裝置。
背景技術:
隨著微電子、計算機、數字電視、多媒體信息系統和三網融合的發展,人們對視頻質量提出了更高的要求。有限帶寬下的視頻傳輸、不同幀率的視頻源之間的格式轉換、提高現有節目源的幀率等,都需要采用視頻幀率轉換技術。在視頻幀率轉換系統中,為了提高視頻的流暢度,需要在原始視頻幀之間生成新的圖像幀,以提高幀率。
現有技術中,幀率轉換系統采用運動估計和運動補償(Motion Estimate and Motion Compensation,MEMC)的方法來生成新的插值幀圖像。具體而言,首先通過運動估計得到相鄰幀之間各個分塊的運動矢量,再利用原始幀和運動矢量進行運動補償,以生成新的插值幀圖像。所生成的插值幀圖像質量取決于運動估計得到的運動矢量的準確性,以及基于塊的運動補償的插值的效果。
但是,在實際的幀率轉換系統系統中,因為運動場景的復雜性,以及運動估計算法本身收斂速度的影響,估計得到的每一個塊的運動矢量并不可能都是準確的。當運動矢量估計不準確時,所生成的插值幀圖像中將會產生大量的空洞,雖然可以由后續空洞填充算法來插值填充空洞,但填充的空洞的圖像質量往往遠低于周圍由運動插值而來的圖像。因此,采用現有技術中的圖像生成方法所生成的圖像質量較差。
技術實現要素:
本發明實施例解決的技術問題是如何提高所生成的插值幀圖像的質量。
為解決上述問題,本發明實施例提供了一種圖像生成方法,所述方法包括:
分別獲取當前圖像中第n幀圖像和第n-1幀圖像,n為整數,n>1;
分別將所述第n幀圖像和第n-1幀圖像在運動估計時劃分得到的N*N個不重疊的分塊進行擴展,形成N*N個擴展分塊;
基于當前幀圖像中的所述N*N個擴展分塊分別進行前向運動補償和后向運動補償,生成位于第n幀圖像和第n-1幀圖像之間的插值幀圖像;其中,在進行所述前向運動補償時,所述n-1幀圖像為當前幀圖像,所述第n幀圖像為參考幀圖像;在進行所述后向運動補償時,所述n幀圖像為當前幀圖像,所述第n-1幀圖像為參考幀圖像。
可選地,所述分別將所述第n幀圖像和第n-1幀圖像在運動估計時劃分得到的N*N個不重疊的分塊進行擴展形成N*N個擴展分塊,包括:
分別將相鄰分塊與當前分塊的運動矢量在對應方向上的運動矢量分量進行比較,所述相鄰分塊包括位于當前分塊上、下、左和右的相鄰分塊,將位于所述當前分塊左側和上方的相鄰分塊作為第一類相鄰分塊,將位于所述當前分塊右側和下方的相鄰分塊作為第二類相鄰分塊,所述對應方向包括水平方向和垂直方向;
當確定所述第一類相鄰分塊的運動矢量在對應方向上的運動矢量分量小于當前分塊的運動矢量在對應方向上的運動矢量分量,或者所述第二類相鄰分塊的運動矢量在對應方向上的運動矢量分量大于當前分塊的運動矢量在對應方向上的運動矢量分量時,計算運動補償之后的所述相鄰分塊與當前分塊在對應方向上的距離;
將計算得到的運動補償之后的所述相鄰分塊與當前分塊在對應方向上的距離的一半與當前分塊的寬度的一半進行比較,取二者中較小者作為對應方向上的擴展寬度,對當前分塊進行擴展得到對應的擴展分塊。
可選地,所述基于當前幀圖像中的所述N*N個擴展分塊分別進行前向運動補償和后向運動補償,生成位于第n幀圖像和第n-1幀圖像之間的插值幀圖像,包括:
計算當前幀圖像中的N*N個擴展分塊中像素的運動補償誤差和運動矢量可信度,所述運動矢量可信度用于衡量像素運動估計的準確性;
根據當前幀圖像中的N*N的擴展分塊中像素的運動補償誤差和運動矢量 可信度,計算當前幀的擴展分塊中像素的權重值和加權像素值;
獲取像素在每一次有運動矢量穿過時的權重值和加權像素值;
將所述像素在每一次有運動矢量穿過時的權重值和加權像素值分別進行相加,得到所述像素的權重值累加值和加權像素值累加值;
將所述像素的加權像素值累加值除以權重值累加值得到的商,作為所述插值幀圖像中對應像素的像素值。
可選地,所述計算當前幀圖像中的N*N個擴展分塊中像素的運動補償誤差,包括:
采用公式e(i)=|fc(i)-fr(i+D(X))|進行計算,其中,e(i)表示像素i的運動補償誤差,fc(i)表示當前幀中的像素i的像素值,D(X)表示所述擴展分塊對應的當前分塊的運動矢量,fr(i+D(X)))表示當前幀的像素i在參考幀中對應像素的像素值。
可選地,所述計算當前幀圖像中的N*N個擴展分塊中像素的運動矢量可信度,包括:
采用公式c(i)=|D(X)-Dop(Y)|進行計算,其中,c(i)表示像素i的運動矢量可信度,D(X)表示所述擴展分塊對應的當前分塊的運動矢量,Y表示當前幀中的像素i在參考圖像中對應的像素所在的分塊,Dop(Y)表示分塊Y在極性相反的運動矢量場中的運動矢量。
可選地,所述根據當前幀圖像中的N*N的擴展分塊中像素的運動補償誤差和運動矢量可信度,計算當前幀的擴展分塊中像素的權重值,包括:
w(i)=F(αe(i)+(1-α)c(i))τ,其中,w(i)表示當前幀的擴展分塊中像素i的權重值,α表示用于調整運動補償誤差和運動矢量可信度的權重比例系數,F(.)表示單調減函數,τ表示所述插值幀圖像在時間上距離所述第n-1幀圖像的歸一化距離,且0<τ<1。
本發明實施例還提供了一種圖像生成裝置,所述裝置包括:
獲取單元,適于分別獲取當前圖像中第n幀圖像和第n-1幀圖像,n為整數,n>1;
擴展單元,適于分別將所述第n幀圖像和第n-1幀圖像在運動估計時劃分得到的N*N個不重疊的分塊進行擴展,形成N*N個擴展分塊;
生成單元,適于基于當前幀圖像中的所述N*N個擴展分塊分別進行前向運動補償和后向運動補償,生成位于第n幀圖像和第n-1幀圖像之間的插值幀圖像;其中,在進行所述前向運動補償時,所述n-1幀圖像為當前幀圖像,所述第n幀圖像為參考幀圖像;在進行所述后向運動補償時,所述n幀圖像為當前幀圖像,所述第n-1幀圖像為參考幀圖像。
可選地,所述擴展單元適于分別將相鄰分塊與當前分塊的運動矢量在對應方向上的運動矢量分量進行比較,所述相鄰分塊包括位于當前分塊上、下、左和右的相鄰分塊,將位于所述當前分塊左側和上方的相鄰分塊作為第一類相鄰分塊,將位于所述當前分塊右側和下方的相鄰分塊作為第二類相鄰分塊,所述對應方向包括水平方向和垂直方向;當確定所述第一類相鄰分塊的運動矢量在對應方向上的運動矢量分量小于當前分塊的運動矢量在對應方向上的運動矢量分量,或者所述第二類相鄰分塊的運動矢量在對應方向上的運動矢量分量大于當前分塊的運動矢量在對應方向上的運動矢量分量時,計算運動補償之后的所述相鄰分塊與當前分塊在對應方向上的距離;將計算得到的運動補償之后的所述相鄰分塊與當前分塊在對應方向上的距離的一半與當前分塊的寬度的一半進行比較,取二者中較小者作為對應方向上的擴展寬度,對當前分塊進行擴展得到對應的擴展分塊。
可選地,所述生成單元適于計算當前幀圖像中的N*N個擴展分塊中像素的運動補償誤差和運動矢量可信度,所述運動矢量可信度用于衡量像素運動估計的準確性;根據當前幀圖像中的N*N的擴展分塊中像素的運動補償誤差和運動矢量可信度,計算當前幀的擴展分塊中像素的權重值和加權像素值;獲取像素在每一次有運動矢量穿過時的權重值和加權像素值;將所述像素在每一次有運動矢量穿過時的權重值和加權像素值分別進行相加,得到所述像素的權重值累加值和加權像素值累加值;將所述像素的加權像素值累加值除以權重值累加值得到的商,作為所述插值幀圖像中對應像素的像素值。
與現有技術相比,本發明的技術方案具有以下的優點:
上述的方案,通過在前向運動補償和后向運動補償時,對當前幀的N對當前幀圖像中的N*N個不重疊的分塊分別進行擴展得到對應的N*N個擴展分塊,由于擴展分塊大于對應的分塊,減少沒有運動矢量穿過的像素的數量,進而可以減少有由于運動估計不準確導致的空洞的產生,因此,可以提升所生成的插值幀圖像的質量。
進一步地,在進行擴展分塊中的像素的權重值的計算時,加入運動矢量可信度的信息,可以在相鄰的第n幀圖像和第n-1幀圖像之間出現物體遮掩,造成物體遮掩區域的運動估計的不準確,可以進一步提升所生成的插值幀圖像的質量。
附圖說明
圖1是本發明實施例中的一種圖像生成方法的流程圖;
圖2是本發明實施例中的另一種圖像生成方法的流程圖;
圖3是為在生成插值幀圖像時形成空洞的示意圖;
圖4是本發明實施例中的對當前幀中的N*N不重疊的分塊進行擴展的流程示意圖;
圖5是本發明實施例中的當前分塊與相鄰分塊的位置關系示意圖;
圖6是本發明實施例中的當前幀的N*N個擴展分塊的各個像素進行前向運動補償,得到擴展分塊中各個像素的權重和加權像素值的流程圖;
圖7是本發明實施例中的圖像生成裝置的結構示意圖。
具體實施方式
現有技術中,幀率轉換系統采用運動估計和運動補償(Motion Estimate and Motion Compensation,MEMC)的方法來生成新的插值幀圖像。具體而言,首先通過運動估計得到相鄰幀之間各個分塊的運動矢量,再利用原始幀和運動矢量進行運動補償,以生成新的插值幀圖像。所生成的插值幀圖像質量取決于運動估計得到的運動矢量的準確性,以及基于塊的運動補償的插值的效果。
將當前幀劃分成大小為N×N的不重疊的塊。在運動估計后,分別以第n-1幀圖像為當前幀圖像,第n幀圖像作為參考幀圖像,計算得到前向運動矢量場,且分別以第n-1幀圖像為當前幀圖像,第n幀圖像作為參考幀圖像后向運動矢量場。運動矢量場中每一個運動矢量表示當前幀中對應的塊在參考幀中的位置偏移。
為了產生新的插值幀圖像,對第n-1幀的每一塊,設其坐標為X,取其運動矢量Df(X),各個分塊中各個像素,按照像素為單位的坐標表示為i,對應像素值為f(i)。
則在時間τ上生成的新圖像中,當前分塊X中各個像素相對于原始幀中各點的偏移為τDf(X),即在前向插值圖像中,當前分塊的各個像素i的像素值可以表示為:
ff(i+τDf(X))=τfn-1(i)+(1-τ)fn(i+Df(X)) (1)
對第n幀的每一分塊,設其坐標為X,取其運動矢量Db(X),各個分塊塊中各個像素,坐標表示為i。則在時間τ上生成的新圖像中,塊X中各個像素相對于原始幀中各像素的偏移為為(1-τ)Db(X)。即在后向插值圖像中,當前分塊的各個像素i的像素值可以表示為:
fb(i+(1-τ)Db(X))=τfn-1(i+Db(X))+(1-τ)fn(i) (2)
其中,在產生前向插值圖像ff和后向插值圖像fb的過程中,當沒有運動矢量穿過像素,則該像素在插值幀圖像中將為空洞。
但是,在實際的幀率轉換系統系統中,因為運動場景的復雜性,以及運動估計算法本身收斂速度的影響,估計得到的每一個塊的運動矢量并不可能都是準確的。當運動矢量估計不準確時,所生成的插值幀圖像中將會產生大量的空洞。雖然可以由后續空洞填充算法來插值填充空洞,但填充的空洞往往質量遠低于周圍由運動插值而來的圖像。因此,采用現有技術中的圖像生成方法所生成的插值幀圖像存在著圖像質量差的問題。
為解決現有技術中存在的上述問題,本發明實施例采用的技術方案通過在前向運動補償和后向運動補償時,對當前幀的N對當前幀圖像中的N*N個不重疊的分塊分別進行擴展得到對應的N*N個擴展分塊,可以減少有由于運 動估計不準確導致的空洞的產生,進而可以提升所生成的插值幀圖像的質量。
為使本發明的上述目的、特征和優點能夠更為明顯易懂,下面結合附圖對本發明的具體實施例做詳細的說明。
圖1示出了本發明實施例中的一種圖像生成方法的流程圖。如圖1所示的圖像生成方法,可以包括:
步驟S101:獲取當前圖像中第n幀圖像和第n-1幀圖像。
在具體實施中,當前圖像為原始視頻圖像,相鄰兩幀圖像分別為第n幀圖像和第n-1幀圖像,其中,n大于1的整數。
步驟S102:將所述第n幀圖像和第n-1幀圖像在運動估計時劃分得到的N*N個不重疊的分塊進行擴展形成N*N個擴展分塊。
在具體實施中,可以根據實際的需要分別將第n幀圖像和第n-1幀圖像劃分成為N*N個不重疊的分塊,其中,N為大于1的自然數,其具體數值可以根據實際的需要進行設置。
步驟S103:基于當前幀圖像中的所述N*N個擴展分塊分別進行前向運動補償和后向運動補償,生成位于第n幀圖像和第n-1幀圖像之間的插值幀圖像。
在具體實施中,在進行所述前向運動補償時,所述n-1幀圖像為當前幀圖像,所述第n幀圖像為參考幀圖像,在進行所述后向運動補償時,所述n幀圖像為當前幀圖像,所述第n-1幀圖像為參考幀圖像;
在具體實施中,由于當前幀擴展的N*N個擴展分塊分別大于n-1幀圖像和n幀圖像的N*N個不重疊的分塊中相應的分塊,可以減少由于運動估計不準確而出現沒有運動矢量穿過的像素的數量,因此,可以減少空洞的產生,提升所生成的插值幀圖像的質量。
下面將結合圖2對本發明實施例中的圖像生成方法做進一步詳細的介紹。
請參見圖2所示,在具體實施中,本發明實施例中的圖像生成方法,可以包括如下的步驟:
步驟S201:獲取當前圖像中第n幀圖像和第n-1幀圖像。
在具體實施中,所獲取的當前圖像的第n幀圖像和第n-1幀圖像,包括第n-1幀和第n幀的圖像數據fn-1和fn,由運動估計產生的第n-1幀的前向運動矢量場Df和第n幀的后向運動矢量場Db,以及產生的插值幀圖像在時間上距離第n-1幀的歸一化距離τ,以及所述插值幀圖像在時間上距離第n幀的歸一化距離t=1-τ,其中,0<τ<1。
步驟S202:獲取當前圖像中所述第n幀圖像和第n-1幀圖像在進行運動估計時分別劃分得到的N*N個不重疊的分塊。
在具體實施中,在進行運動估計時,可以根據實際的需要分別將第n幀圖像和第n-1幀圖像劃分成為N*N個不重疊的分塊,其中,N為大于1的自然數,其具體數值可以根據實際的需要進行設置。本步驟中獲取的第n幀圖像和第n-1幀圖像的N*N個不重疊的分塊,為運動估計時劃分得到的N*N個不重疊的分塊。
步驟S203:將第n-1幀圖像作為當前幀圖像,將當前幀圖像中的N*N個不重疊的分塊擴展形成N*N個擴展分塊,并基于N*N個擴展分塊進行前向運動補償,得到各個擴展分塊中像素的權重值和加權像素值。
在具體實施中,在進行前向運動補償時,以第n-1幀圖像fn-1為當前幀fc,第n幀圖像fn為參考幀fr,第n-1幀的前向運動矢量場Df為運動矢量場D,距離當前幀圖像的距離t=τ。
請參見圖3所示,理想情況下,在局部區域屬于同一物體的分塊應該有相同的運動矢量。然而,在前向運動估計的過程中,相鄰分塊301和302在屬于同一物體時,二者之間仍然可能存在不同的運動矢量,如分塊301具有零運動矢量,分塊302具有向右的運動矢量。如果仍然按照運動估計時劃分得到的N*N個不重疊的分塊中的塊的大小來進行運動補償時,會在插值幀圖像中形成空洞303。
為了減少空洞的產生,可以將當前幀中的N*N不重疊的分塊分別采用相鄰分塊進行擴展形成N*N擴展分塊。在對分塊進行擴展時,同時在當前分塊的上,下,左,右四個方向上進行,當前分塊在四個方向上擴展寬度與當前分塊的運動矢量四個方向鄰近分塊,即相鄰分塊的運動矢量相關,具體請參 見圖4所示。
請參見圖4所示,在本發明一實施例中,可以采用如下的方式對當前幀中的N*N不重疊的分塊進行擴展:
步驟S401:分別將第一類相鄰分塊和第二類相鄰分塊與當前分塊的運動矢量在對應方向上的運動矢量分量進行比較。
在具體實施中,所述相鄰分塊包括位于當前分塊上、下、左和右的相鄰分塊。其中,為了描述的簡便,可以將位于當前分塊上方和左側的相鄰分塊作為第一類相鄰分塊,將位于當前分塊下方和右側的相鄰分塊作為第二類相鄰分塊。
在具體實施中,所述對應方向包括水平方向和垂直方向,在進行相應方向上的擴展時,所述相鄰分塊即為對應方向的相鄰分塊。
例如,請參見圖5所示,X表示當前分塊,L、R、T、B分別表示位于當前分塊X的左、右、上、下的相鄰分塊,分別記為左側分塊L、右側分塊R,上方分塊T和下方分塊B。以左邊擴展為例,所述將左側分塊L與當前分塊X的運動矢量在對應方向上的運動矢量分量進行比較,即當前分塊X的運動矢量在水平方向x的運動矢量分量D(X).x(含符號)與相鄰分塊L的運動矢量在水平方向x的運動矢量分量D(L).x進行比較。
步驟S402:當前分塊在對應方向上不進行擴展。
在具體實施中,當位于第一類相鄰分塊或者第二類相鄰分塊的運動矢量在對應方向的運動矢量分量等于當前分塊的運動矢量在對應方向上的運動矢量分量,說明所述相鄰分塊與當前分塊在對應方向上的運動一致,在運動補償之后,在插值幀圖像中二者的相對位置仍然保持不變,在運動補償之后將不會出現空洞,因此,不需要當前分塊在對應方向上進行擴展。
當第一類相鄰分塊的運動矢量在對應方向的運動矢量分量大于當前分塊的運動矢量在對應方向上的運動矢量分量,或者當第二類相鄰分塊的運動矢量在對應方向的運動矢量分量小于當前分塊的運動矢量在對應方向上的運動矢量分量時,在運動補償之后,在插值幀圖像中二者之間將出現部分區域的重疊,在運動補償之后也將不會出現空洞,因此,也不需要當前分塊在對應 方向上進行擴展。
步驟S403:計算當前分塊與相鄰分塊在運動補償之后的距離。
在具體實施中,當第一類相鄰分塊的運動矢量在對應方向的運動矢量分量小于當前分塊的運動矢量在對應方向上的運動矢量分量,或者當第二類相鄰分塊的運動矢量在對應方向的運動矢量分量大于當前分塊的運動矢量在對應方向上的運動矢量分量時,在運動補償之后,當前分塊與對應的相鄰分塊二者之間在插值幀圖像中將會存在一定的距離,即出現空洞。因此,此時需要將當前分塊在對應方向上進行擴展。
同樣以左邊擴展為例,首先可以采用如下的公式計算當前分塊X與左側分塊L在運動補償之后的距離,即空洞的寬度為:
D=τ(D(X).x-D(L).x) (3)
其中,D表示所述空洞的寬度。
步驟S404:將計算得到的當前分塊與相鄰分塊在運動補償之后的距離的一半與當前分塊的寬度的一半進行比較,取二者中較小者作為當前分塊在對應方向上的擴展寬度。
在具體實施中,以左邊擴展為例,當以X為當前分塊需要進行左邊擴展時,那么,在以左側分塊L為當前分塊,X為右側分塊時,左側分塊L同樣需要進行右邊擴展。因此,當前分塊X在進行擴展時的擴展寬度選擇為運動補償后左側分塊L與當前分塊X之間的距離的一半作為當前分塊X的左側擴展寬度。
一般來說,相鄰塊之間運動矢量的差值不會很大。而差距較大時,也意味著相鄰塊原本就屬于不同的物體,此時過大的擴展寬度帶來的效果提升也相當有限。因此,為了降低計算的復雜度,可以對當前分塊進行擴展時的擴展寬度進行相應的限制。
例如,同樣以左側擴展為例,可以將對應方向上的擴展寬度限制在小于分塊的寬度的一半之內,即當前分塊X在左側的擴展寬度ext_l滿足:
最終,對當前分塊X進行上、下、左、右四個方向的擴展后得到對應的擴展分塊B的大小為:
(ext_l+N+ext_r)×(ext_t+N+ext_b) (5)
其中,ext_r、ext_t、ext_b分別表示右側、上方和下方的擴展寬度。
在具體實施中,當采用上述的步驟S401至S403將當前幀的N*N個不重疊的分塊擴展形成N*N個擴展分塊之后,可以基于N*N個擴展分塊B進前向運動補償,具體請參見圖6所示。
請參見圖6所示,在具體實施中,可以采用如下的步驟對當前幀的N*N個擴展分塊的各個像素進行前向運動補償,得到擴展分塊中各個像素的權重和加權像素值:
步驟S601:分別計算N*N個擴展分塊中各個像素的運動補償誤差。
在具體實施中,當前幀圖像中的擴展分塊B中的像素的運動補償誤差為,當前幀圖像中的擴展分塊B中的像素,與參考幀圖像中找到對應偏移為D(X)的像素,以兩者像素值差的絕對值作為該點的運動補償誤差,即:
e(i)=|fc(i)-fr(i+D(X))| (6)
其中,e(i)表示擴展分塊B中像素i的運動補償誤差,fc(i)表示當前幀中的像素i的像素值,fr(i+D(X))表示參考幀圖像中像素i的像素值。
這里需要指出的是,擴展分塊B的大小一般來說是要大于原始的當前塊X的,即擴展分塊B中包括當前分塊X的像素和相鄰分塊擴展當前分塊X的像素。在采用上述的公式(6)計算各個像素的運動補償誤差時,擴展分塊B中所有像素的運動矢量均為當前分塊X的運動矢量D(X)。
步驟S602:分別計算N*N個擴展分塊中各個像素的運動矢量可信度。
在具體實施中,當相鄰兩幀圖像中出現有物體遮掩的情況時,由于圖像信息的缺失,會造成在遮掩區域附近運動估計的不準確。為了避免這種不準 確的運動矢量在運動估計階段造成的瑕疵,可以采用運動矢量可信度對估計得到的運動矢量的準確性進行評估。
在具體實施中,當前幀圖像的N*N個擴展分塊B中各個像素的運動矢量可信度可以采用如下的公式計算得到:
c(i)=|D(X)-Dop(Y)| (7)
其中,c(i)表示擴展分塊B中像素i的運動矢量可信度,D(X)表示所述擴展分塊對應的當前分塊的運動矢量,Y表示當前幀中的像素i在參考圖像中對應的像素所在的分塊,Dop(Y)表示分塊Y在極性相反的運動矢量場中的運動矢量。
在具體實施中,在得到分塊Y在極性相反的運動矢量場中的運動矢量Dop(Y)時,首先找到當前幀圖像中的像素i在參考圖像中對應的像素,即i+D(X),再通過公式Y=(i+D(X))/N可以計算出其在參考圖像中所屬的塊Y,得到分塊Y之后,并可以得到極性相反的運動矢量場中的運動矢量Dop(Y)。
步驟S603:根據像素的運動補償誤差和運動矢量可信度,計算所述插值幀中相應像素的權重值和加權像素值。
在具體實施中,可以采用如下的公式計算得到插值幀圖像中相應像素的權重值:
w(i)=F(αe(i)+(1-α)c(i))τ (8)
其中,w(i)表示當前幀的擴展分塊中像素i的權重值,α表示用于調整運動補償誤差和運動矢量可信度的權重比例系數,F(.)表示單調減函數。
這里需要指出的是,α用來調整運動補償誤差和運動矢量可信度的權重比例,其數值可以根據實際的需要進行設置。F(.)是一個單調減函數,輸入越大,輸出的權重越小;輸入越小,輸出的權重越大。
在得到當前幀中的擴展分塊B中的各個像素的權重值之后,將像素的像素值與權重值進行乘法運算,便可以得到對應像素的加權像素值。
步驟S204:將第n幀圖像作為當前幀圖像,將當前幀圖像中的N*N個不重疊的分塊擴展形成N*N個擴展分塊,并基于N*N個擴展分塊進行后向運動補償,得到各個擴展分塊中像素的權重值和加權像素值。
在具體實施中,步驟S204的執行過程請參見步驟S203中的介紹進行執行,在此不再贅述。
這里需要指出的是,與步驟S203不同的是,步驟S204在執行圖4和圖6所示的步驟時,以第n幀圖像fn為當前幀fc,第n-1幀圖像fn-1為參考幀fr,第n幀的后向運動矢量場Db為運動矢量場D,距離當前幀的歸一化距離t=1-τ。
步驟S205:根據執行所述前向運動補償和后向運動補償得到的像素和權重值和加權像素值,得到插值幀圖像在對應像素的像素值。
在具體實施中,在分別執行前向運動補償和后向運動補償得到當前幀圖像中N*N個擴展分塊B的像素的權重值和加權像素值之后,可以將相應像素的權重值和加權像素值進行累加,即將同一像素在前向運動補償和后向運動補償過程中每一次有運動矢量穿過時的權重值和加權像素值進行相加,以得到插值幀圖像中對應像素的權重值累加值和加權像素值累加值。
這里需要指出的是,對于當前幀中擴展分塊B中的像素,在前向運動補償和后向運動補償時,將分別有當前分塊的運動矢量穿過;而當像素擴展到相鄰分塊時,在前向運動補償和后向運動補償時,還會有相鄰分塊的運動矢量穿過。
在具體實施中,在得到插值幀圖像中對應像素的權重值累加值和加權像素值累加值之后,可以采用如下的公式計算得到插值幀圖像中對應像素的像素值:
fi(i)=p_sum/w_sum (9)
其中,fi(i)表示插值幀圖像中像素i的像素值,p_sum表示像素i的加權像素值累加值,w_sum表示像素i的權重值累加值。
下面將對上述的方法對應的裝置做進一步詳細的介紹。
如圖7所示的圖像生成裝置700,可以包括獲取單元701、擴展單元702和生成單元703,其中:
獲取單元701,適于分別獲取當前圖像中第n幀圖像和第n-1幀圖像,n為整數,n>1;
擴展單元702,適于分別將所述第n幀圖像和第n-1幀圖像在運動估計時劃分得到的N*N個不重疊的分塊進行擴展,形成N*N個擴展分塊;
在具體實施中,所述擴展單元702適于分別將相鄰分塊與當前分塊的運動矢量在對應方向上的運動矢量分量進行比較,所述相鄰分塊包括位于當前分塊上、下、左和右的相鄰分塊,將位于所述當前分塊左側和上方的相鄰分塊作為第一類相鄰分塊,將位于所述當前分塊右側和下方的相鄰分塊作為第二類相鄰分塊,所述對應方向包括水平方向和垂直方向;當確定所述第一類相鄰分塊的運動矢量在對應方向上的運動矢量分量小于當前分塊的運動矢量在對應方向上的運動矢量分量,或者所述第二類相鄰分塊的運動矢量在對應方向上的運動矢量分量大于當前分塊的運動矢量在對應方向上的運動矢量分量時,計算運動補償之后的所述相鄰分塊與當前分塊在對應方向上的距離;將計算得到的運動補償之后的所述相鄰分塊與當前分塊在對應方向上的距離的一半與當前分塊的寬度的一半進行比較,取二者中較小者作為對應方向上的擴展寬度,對當前分塊進行擴展得到對應的擴展分塊。
生成單元703,適于基于當前幀圖像中的所述N*N個擴展分塊分別進行前向運動補償和后向運動補償,生成位于第n幀圖像和第n-1幀圖像之間的插值幀圖像;其中,在進行所述前向運動補償時,所述n-1幀圖像為當前幀圖像,所述第n幀圖像為參考幀圖像;在進行所述后向運動補償時,所述n幀圖像為當前幀圖像,所述第n-1幀圖像為參考幀圖像。
在具體實施中,所述生成單元703適于計算當前幀圖像中的N*N個擴展分塊中像素的運動補償誤差和運動矢量可信度,所述運動矢量可信度用于衡量像素運動估計的準確性;根據當前幀圖像中的N*N的擴展分塊中像素的運動補償誤差和運動矢量可信度,計算當前幀的擴展分塊中像素的權重值和加 權像素值;獲取像素在每一次有運動矢量穿過時的權重值和加權像素值;將所述像素在每一次有運動矢量穿過時的權重值和加權像素值分別進行相加,得到所述像素的權重值累加值和加權像素值累加值;將所述像素的加權像素值累加值除以權重值累加值得到的商,作為所述插值幀圖像中對應像素的像素值。
在具體實施中,所述生成單元703適于采用如下的公式計算當前幀圖像中的N*N個擴展分塊中像素的運動補償誤差,包括:
e(i)=|fc(i)-fr(i+D(X))|,其中,e(i)表示像素i的運動補償誤差,fc(i)表示當前幀中的像素i的像素值,D(X)表示所述擴展分塊對應的當前分塊的運動矢量,fr(i+D(X)))表示當前幀的像素i在參考幀中對應像素的像素值。
在具體實施中,所述生成單元703適于采用如下的公式計算當前幀圖像中的N*N個擴展分塊中像素的運動矢量可信度:
c(i)=|D(X)-Dop(Y)|,其中,c(i)表示像素i的運動矢量可信度,D(X)表示所述擴展分塊對應的當前分塊的運動矢量,Y表示當前幀中的像素i在參考圖像中對應的像素所在的分塊,Dop(Y)表示分塊Y在極性相反的運動矢量場中的運動矢量。
在具體實施中,所述生成單元703適于采用如下的公式根據當前幀圖像中的N*N的擴展分塊中像素的運動補償誤差和運動矢量可信度,計算當前幀的擴展分塊中像素的權重值:
w(i)=F(αe(i)+(1-α)c(i))τ,其中,w(i)表示當前幀的擴展分塊中像素i的權重值,α表示用于調整運動補償誤差和運動矢量可信度的權重比例系數,F(.)表示單調減函數,τ表示所述插值幀圖像在時間上距離所述第n-1幀圖像的歸一化距離,且0<τ<1。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于計算機可讀存儲介質中,存儲介質可以包括:ROM、RAM、磁盤或光盤等。
以上對本發明實施例的方法及系統做了詳細的介紹,本發明并不限于此。任何本領域技術人員,在不脫離本發明的精神和范圍內,均可作各種更動與修改,因此本發明的保護范圍應當以權利要求所限定的范圍為準。