一種二維序列幀圖片拼接成大圖片的方法及其所用的裝置制造方法
【專利摘要】本發(fā)明公開了一種二維序列幀圖片拼接成大圖片的方法,包括如下步驟:(1)計算各個二維序列幀圖片的最小包圍矩形;(2)根據(jù)步驟(1)得到的全部圖片的最小包圍矩形集合,按照各個最小包圍矩形的寬度遞增排序;(3)將步驟(2)得到的以寬度遞增排序的序列幀最小包圍矩形集合中的各個最小包圍矩形按順序依次拼接到大矩形中,并記錄拼接時各個最小包圍矩形在大矩形中的偏移信息及序列幀索引;(4)按照得到的偏移信息及序列幀索引,渲染序列幀到大矩形中得到大圖片。本發(fā)明還公開了上述方法所用的裝置,包括最小包圍矩形計算模塊、排序模塊、拼接模塊、渲染模塊四個模塊。本發(fā)明優(yōu)點:降低了計算機內(nèi)存占有量,且全程自動化,效率高。
【專利說明】一種二維序列幀圖片拼接成大圖片的方法及其所用的裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及圖形處理【技術(shù)領(lǐng)域】,尤其涉及的是一種二維序列幀圖片拼接成大圖片的方法及其所用的裝置。
【背景技術(shù)】
[0002]二維圖片序列幀大量應(yīng)用于計算機渲染中,在游戲領(lǐng)域,當(dāng)播放角色跑步、戰(zhàn)斗等動作時,或者展示一個場景特效時都需要播放序列幀,這些圖片以固定的頻率快速切換,形成了動畫。這都需要大量的序列幀圖片,每張圖片尺寸都不大,并且每張圖片都會有很多透明的像素。傳統(tǒng)的做法是每張圖片在計算機中存成獨立的一個文件,而播放動畫又意味著需要的序列幀圖片非常多,故這種方式會造成大量的計算機內(nèi)存的浪費以及效率的低下,當(dāng)同時播放的序列幀動畫過多時,就會造成系統(tǒng)的卡頓。由于傳統(tǒng)的方法存在這樣的缺陷,而序列幀動畫又用的如此的頻繁,因此急需一種智能的二維序列幀圖片拼接成大圖片的方法,將有助于降低序列幀動畫的內(nèi)存開銷。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供了一種二維序列幀圖片拼接成大圖片的方法及其所用的裝置,使同屏序列幀動畫可以更多的展示,并降低計算機內(nèi)存占用量。
[0004]本發(fā)明是通過以下技術(shù)方案實現(xiàn)的:
[0005]一種二維序列幀圖片拼接成大圖片的方法,包括如下步驟:
[0006](I)計算各個二維序列幀圖片的最小包圍矩形,得到全部圖片的最小包圍矩形集合;
[0007](2)根據(jù)步驟(I)得到的全部圖片的最小包圍矩形集合,按照各個最小包圍矩形的寬度遞增排序,得到以寬度遞增排序的序列幀最小包圍矩形集合;
[0008](3)將步驟⑵得到的以寬度遞增排序的序列幀最小包圍矩形集合中的各個最小包圍矩形按順序依次拼接到大矩形中,并記錄拼接時各個最小包圍矩形在大矩形中的偏移信息及序列幀索引;
[0009](4)按照步驟(3)得到的全部的最小包圍矩形在大矩形中的偏移信息及序列幀索弓丨,渲染序列幀到大矩形中得到大圖片。
[0010]作為上述的一種二維序列幀圖片拼接成大圖片的方法的優(yōu)選實施方式,所述步驟
(I)中的計算方法具體為:每個二維圖片的寬度和高度分別對應(yīng)二維空間的X、Y兩個坐標(biāo)系,以Y方向作為行遍歷,X方向作為列遍歷,取得行列值最小的非透明像素點作為做最小包圍矩形的左上角,取得行列值最大的非透明像素點作為做最小包圍矩形的右下角,這兩個角確定的區(qū)域即為該張二維圖片的最小包圍矩形。
[0011]作為上述的一種二維序列幀圖片拼接成大圖片的方法的優(yōu)選實施方式,所述步驟
(3)中拼接過程采用二叉樹遞歸方式逐個將最小包圍矩形拼接到大矩形中。
[0012]作為上述的一種二維序列幀圖片拼接成大圖片的方法的優(yōu)選實施方式,所述步驟(4)具體過程為:根據(jù)步驟(3)得到的全部的最小包圍矩形在大矩形中的偏移信息及序列幀索引,調(diào)用渲染函數(shù)把二維圖片中最小包圍矩形描述的像素渲染到大圖片中。
[0013]本發(fā)明還提供了上述的一種二維序列幀圖片拼接成大圖片的方法所用的裝置,包括如下四個模塊:
[0014]最小包圍矩形計算模塊:用于計算各個二維序列幀圖片的最小包圍矩形,得到全部圖片的最小包圍矩形集合;
[0015]排序模塊:根據(jù)得到的全部圖片的最小包圍矩形集合,按照各個最小包圍矩形的寬度遞增排序,得到以寬度遞增排序的序列幀最小包圍矩形集合;
[0016]拼接模塊:將得到的以寬度遞增排序的序列幀最小包圍矩形集合中的各個最小包圍矩形按順序依次拼接到大矩形中,并記錄拼接時各個最小包圍矩形在大矩形中的偏移信息及序列幀索引;
[0017]渲染模塊:根據(jù)拼接模塊得到的全部的最小包圍矩形在大矩形中的偏移信息及序列幀索引,渲染序列幀到大矩形中得到大圖片。
[0018]作為上述的一種二維序列幀圖片拼接成大圖片的方法所用的裝置的優(yōu)選實施方式,所述最小包圍矩形計算模塊包括:
[0019]像素識別單元:在Y方向作為行遍歷,X方向作為列遍歷過程中,取得對應(yīng)二維圖片像素點的顏色分量值(A,R,G,B),當(dāng)A分量非零時,則為非透明像素;
[0020]邊界識別單元:負(fù)責(zé)計算出最左上角的非透明像素和最右下角的非透明像素位置,通過四次遍歷確定最小包圍矩形的頂邊界、左邊界、右邊界、底邊界;
[0021]矩形構(gòu)造單元:根據(jù)邊界識別單元計算得到的最小包圍矩形的頂邊界、左邊界、右邊界、底邊界這四個值生成最小包圍矩形的數(shù)據(jù)結(jié)構(gòu)。
[0022]作為上述的一種二維序列幀圖片拼接成大圖片的方法所用的裝置的優(yōu)選實施方式,所述拼接模塊包括:
[0023]拼接矩形單元:采用二叉樹遞歸方式逐個將最小包圍矩形拼接到大矩形中;
[0024]偏移計算單元:用于計算拼接時最小包圍矩形在大矩形中的偏移信息;
[0025]序列幀索引計算單元:用于計算拼接時最小包圍矩形在大矩形中的序列幀索引。
[0026]作為上述的一種二維序列幀圖片拼接成大圖片的方法所用的裝置的優(yōu)選實施方式,所述渲染模塊包括:
[0027]布局單元:其根據(jù)拼接模塊得到的拼接時全部最小包圍矩形在大矩形中的偏移信息,將各序列幀圖片在大圖片上的布局位置描述出來;
[0028]渲染單元:其調(diào)用渲染函數(shù)把二維圖片中最小包圍矩形描述的像素渲染到大圖片中。
[0029]本發(fā)明相比現(xiàn)有技術(shù)具有以下優(yōu)點:
[0030]本發(fā)明提供了一種二維序列幀圖片拼接成大圖片的方法及其所用的裝置,將每張二維序列幀圖片的最小包圍矩形計算出來,有效的降低了計算機內(nèi)存占有量;通過對最小包圍矩形按寬度遞增排序,有助于在接下來的拼接過程中一張大圖片能容納更多的序列幀圖片,進一步優(yōu)化計算機內(nèi)存占用量;通過二叉樹遞歸方式將按照寬度遞增排序的最小包圍矩形依次拼接到大矩形中,最終調(diào)用渲染函數(shù)把有效像素渲染到目標(biāo)大圖片中,整個過程摒棄了人工的干預(yù),全程自動化,有效地降低了人工誤操作空間以及大量的人工時間開銷,成本低、效率高。
【專利附圖】
【附圖說明】
[0031]圖1是本發(fā)明的方法流程圖。
[0032]圖2是本發(fā)明的裝置組成框架圖。
[0033]圖3是拼接模塊的結(jié)構(gòu)組成框圖。
[0034]圖4是最小包圍矩形計算模塊的結(jié)構(gòu)組成框圖。
[0035]圖5是渲染模塊的結(jié)構(gòu)組成框圖。
[0036]圖6為本發(fā)明的方法中將第一個最小包圍矩形拼接到大矩形中的結(jié)構(gòu)示意圖。
[0037]圖7為本發(fā)明的方法中將第二個最小包圍矩形拼接到大矩形中的結(jié)構(gòu)示意圖。
[0038]圖8為圖6中拼接第一個最小包圍矩形后二叉樹的分支情況示意圖。
[0039]圖9為圖7中拼接第二個最小包圍矩形后二叉樹的分支情況示意圖。
【具體實施方式】
[0040]下面對本發(fā)明的實施例作詳細(xì)說明,本實施例在以本發(fā)明技術(shù)方案為前提下進行實施,給出了詳細(xì)的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
[0041]參見圖1,本實施例提供的一種二維序列幀圖片拼接成大圖片的方法,包括如下步驟:
[0042]100、計算各個二維序列幀圖片的最小包圍矩形,得到全部圖片的最小包圍矩形集口 ο
[0043]200、根據(jù)步驟100得到的全部圖片的最小包圍矩形集合,按照各個最小包圍矩形的寬度遞增排序,得到以寬度遞增排序的序列幀最小包圍矩形集合;
[0044]300、將步驟200得到的以寬度遞增排序的序列幀最小包圍矩形集合中的各個最小包圍矩形按順序依次拼接到大矩形中,并記錄拼接時各個最小包圍矩形在大矩形中的偏移信息及序列幀索引;
[0045]400、按照步驟300得到的全部的最小包圍矩形在大矩形中的偏移信息及序列幀索引,渲染序列幀到大矩形中得到大圖片。其具體過程為:根據(jù)步驟300得到的全部的最小包圍矩形在大矩形中的偏移信息及序列幀索引,調(diào)用渲染函數(shù)把二維圖片中最小包圍矩形描述的像素渲染到大圖片中。
[0046]其中,步驟100的計算方法具體為:序列幀是多張二維圖片的集合,每個二維圖片的寬度和高度分別對應(yīng)二維空間的Χ、γ兩個坐標(biāo)系,以Y方向作為行遍歷,X方向作為列遍歷,取得行列值最小的非透明像素點作為做最小包圍矩形的左上角,取得行列值最大的非透明像素點作為做最小包圍矩形的右下角,這兩個角確定的區(qū)域即為該張二維圖片的最小包圍矩形。然后以此類推,逐一計算每張序列幀圖片,就可以得到全部圖片的最小包圍矩形隹A
口 O
[0047]步驟300中其拼接過程采用二叉樹遞歸方式逐個將最小包圍矩形拼接到大矩形中。舉例如下:
[0048]如圖6所示,要把第一個最小包圍矩形I放入大矩形中,用線A將大矩形切分為上下兩部分,A的上部分為B,A的下部分為空閑。再切分B,B的左邊放下第一個最小包圍矩形1,B的右邊為空閑,至此,成功放入第一個最小包圍矩形I ;
[0049]如圖7所示,然后再放入第二個最小包圍矩形2,同樣的二叉樹遞歸過程,首先嘗試放入A的上部分,A的上部分是B,繼續(xù)嘗試放入B的左邊,B的左邊已經(jīng)放了第一個最小包圍矩形1,所以只能再次嘗試放入B的右邊,B的右邊容納不下第二個最小包圍矩形2,繼續(xù)嘗試A的下部分,可以容納了,劃線C,切分為C的左側(cè)和C的右側(cè),嘗試插入C的左側(cè),劃線D,分為D的上側(cè)和D的下側(cè),D的上側(cè)恰好容納第二個最小包圍矩形2,至此,成功放入第二個最小包圍矩形2,D的下側(cè)為空閑,C的右側(cè)為空閑;
[0050]其中,拼接第一個最小包圍矩形I后二叉樹的分支情況如圖8所示,拼接第二個最小包圍矩形2后二叉樹的分支情況如圖9所示;
[0051]同理,接下來的第三個最小包圍矩形、第四個最小包圍矩形、第五個最小包圍矩形直到第N個最小包圍矩形都執(zhí)行這個流程,即可完成整個拼接過程;
[0052]關(guān)于切分時先橫切還是先豎切的選擇策略問題,采用的方案如下:根據(jù)大矩形中放入最小包圍矩形后剩余空閑矩形的寬度和高度做決定,如果寬度大于等于高度,則豎切;反之如果寬度小于高度,則橫切。這個選擇策略的意義在于盡量保證大矩形中剩余矩形的尺寸趨向于正方形,以便于在接下來的拼接中容納更多的最小包圍矩形。
[0053]參見圖2,本實施例還提供了上述的一種二維序列幀圖片拼接成大圖片的方法所用的裝置,包括如下四個模塊:
[0054]最小包圍矩形計算模塊10:用于計算各個二維序列幀圖片的最小包圍矩形,得到全部圖片的最小包圍矩形集合;
[0055]排序模塊20:根據(jù)得到的全部圖片的最小包圍矩形集合,按照各個最小包圍矩形的寬度遞增排序,得到以寬度遞增排序的序列幀最小包圍矩形集合;
[0056]拼接模塊30:將得到的以寬度遞增排序的序列幀最小包圍矩形集合中的各個最小包圍矩形按順序依次拼接到大矩形中,并記錄拼接時各個最小包圍矩形在大矩形中的偏移信息及序列幀索引;
[0057]渲染模塊40:根據(jù)拼接模塊30得到的全部的最小包圍矩形在大矩形中的偏移信息及序列幀索引,渲染序列幀到大矩形中得到大圖片。
[0058]參見圖4,最小包圍矩形計算模塊10包括:
[0059]像素識別單元101:在Y方向作為行遍歷,X方向作為列遍歷過程中,取得對應(yīng)二維圖片像素點的顏色分量值(A,R,G,B),當(dāng)A分量非零時,則為非透明像素;
[0060]邊界識別單元102:負(fù)責(zé)計算出最左上角的非透明像素和最右下角的非透明像素位置,通過四次遍歷確定邊界,即:
[0061]通過行從上至下遍歷,計算出最小包圍矩形的頂邊界,
[0062]通過行從下至上遍歷,計算出最小包圍矩形的底邊界,
[0063]通過列從左至右遍歷,計算出最小包圍矩形的左邊界,
[0064]通過列從右至左遍歷,計算出最小包圍矩形的右邊界;
[0065]矩形構(gòu)造單元103:根據(jù)邊界識別單元102計算得到的最小包圍矩形的頂邊界、左邊界、右邊界、底邊界這四個值生成最小包圍矩形的數(shù)據(jù)結(jié)構(gòu)。
[0066]參見圖3,拼接模塊30包括:
[0067]拼接矩形單元301:采用二叉樹遞歸方式逐個將最小包圍矩形拼接到大矩形中;
[0068]偏移計算單元302:用于計算拼接時最小包圍矩形在大矩形中的偏移信息;
[0069]序列幀索引計算單元303:用于計算拼接時最小包圍矩形在大矩形中的序列幀索引。
[0070]參見圖5,渲染模塊40包括:
[0071]布局單元401:其根據(jù)拼接模塊30得到的拼接時全部最小包圍矩形在大矩形中的偏移信息,將各序列幀圖片在大圖片上的布局位置描述出來;
[0072]渲染單元402:其調(diào)用渲染函數(shù)把二維圖片中最小包圍矩形描述的像素渲染到大圖片中。
[0073]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種二維序列幀圖片拼接成大圖片的方法,其特征在于,包括如下步驟: (1)計算各個二維序列幀圖片的最小包圍矩形,得到全部圖片的最小包圍矩形集合; (2)根據(jù)步驟(I)得到的全部圖片的最小包圍矩形集合,按照各個最小包圍矩形的寬度遞增排序,得到以寬度遞增排序的序列幀最小包圍矩形集合; (3)將步驟(2)得到的以寬度遞增排序的序列幀最小包圍矩形集合中的各個最小包圍矩形按順序依次拼接到大矩形中,并記錄拼接時各個最小包圍矩形在大矩形中的偏移信息及序列幀索引; (4)按照步驟(3)得到的全部的最小包圍矩形在大矩形中的偏移信息及序列幀索引,渲染序列幀到大矩形中得到大圖片。
2.如權(quán)利要求1所述的一種二維序列幀圖片拼接成大圖片的方法,其特征在于,所述步驟(I)中的計算方法具體為:每個二維圖片的寬度和高度分別對應(yīng)二維空間的X、Y兩個坐標(biāo)系,以Y方向作為行遍歷,X方向作為列遍歷,取得行列值最小的非透明像素點作為做最小包圍矩形的左上角,取得行列值最大的非透明像素點作為做最小包圍矩形的右下角,這兩個角確定的區(qū)域即為該張二維圖片的最小包圍矩形。
3.如權(quán)利要求1所述的一種二維序列幀圖片拼接成大圖片的方法,其特征在于,所述步驟(3)中拼接過程采用二叉樹遞歸方式逐個將最小包圍矩形拼接到大矩形中。
4.如權(quán)利要求1所述的一種二維序列幀圖片拼接成大圖片的方法,其特征在于,所述步驟(4)具體過程為:根據(jù)步驟(3)得到的全部的最小包圍矩形在大矩形中的偏移信息及序列幀索引,調(diào)用渲染函數(shù)把二維圖片中最小包圍矩形描述的像素渲染到大圖片中。
5.如權(quán)利要求1至4任一所述的一種二維序列幀圖片拼接成大圖片的方法所用的裝置,其特征在于,包括如下四個模塊: 最小包圍矩形計算模塊:用于計算各個二維序列幀圖片的最小包圍矩形,得到全部圖片的最小包圍矩形集合; 排序模塊:根據(jù)得到的全部圖片的最小包圍矩形集合,按照各個最小包圍矩形的寬度遞增排序,得到以寬度遞增排序的序列幀最小包圍矩形集合; 拼接模塊:將得到的以寬度遞增排序的序列幀最小包圍矩形集合中的各個最小包圍矩形按順序依次拼接到大矩形中,并記錄拼接時各個最小包圍矩形在大矩形中的偏移信息及序列幀索引; 渲染模塊:根據(jù)拼接模塊得到的全部的最小包圍矩形在大矩形中的偏移信息及序列幀索引,渲染序列幀到大矩形中得到大圖片。
6.如權(quán)利要求5所述的一種二維序列幀圖片拼接成大圖片的方法所用的裝置,其特征在于,所述最小包圍矩形計算模塊包括: 像素識別單元:在Y方向作為行遍歷,X方向作為列遍歷過程中,取得對應(yīng)二維圖片像素點的顏色分量值(A,R,G,B),當(dāng)A分量非零時,則為非透明像素; 邊界識別單元:負(fù)責(zé)計算出最左上角的非透明像素和最右下角的非透明像素位置,通過四次遍歷確定最小包圍矩形的頂邊界、左邊界、右邊界、底邊界; 矩形構(gòu)造單元:根據(jù)邊界識別單元計算得到的最小包圍矩形的頂邊界、左邊界、右邊界、底邊界這四個值生成最小包圍矩形的數(shù)據(jù)結(jié)構(gòu)。
7.如權(quán)利要求5所述的一種二維序列幀圖片拼接成大圖片的方法所用的裝置,其特征在于,所述拼接模塊包括: 拼接矩形單元:采用二叉樹遞歸方式逐個將最小包圍矩形拼接到大矩形中; 偏移計算單元:用于計算拼接時最小包圍矩形在大矩形中的偏移信息; 序列幀索引計算單元:用于計算拼接時最小包圍矩形在大矩形中的序列幀索引。
8.如權(quán)利要求5所述的一種二維序列幀圖片拼接成大圖片的方法所用的裝置,其特征在于,所述渲染模塊包括: 布局單元:其根據(jù)拼接模塊得到的拼接時全部最小包圍矩形在大矩形中的偏移信息,將各序列幀圖片在大圖片上的布局位置描述出來; 渲染單元:其調(diào)用渲染函數(shù)把二維圖片中最小包圍矩形描述的像素渲染到大圖片中。
【文檔編號】G06T3/40GK104318538SQ201410541625
【公開日】2015年1月28日 申請日期:2014年10月14日 優(yōu)先權(quán)日:2014年10月14日
【發(fā)明者】楊劍 申請人:安徽游藝道網(wǎng)絡(luò)科技有限公司