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