專(zhuān)利名稱(chēng):按位處理實(shí)現(xiàn)最佳化數(shù)據(jù)損失編碼的壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)壓縮方法,特別是一種對(duì)動(dòng)畫(huà)、圖像進(jìn)行預(yù)處理,以實(shí)現(xiàn)最佳化數(shù)據(jù)損失(DATALOSS)編碼的數(shù)據(jù)壓縮方法。
動(dòng)畫(huà)與電影一樣,是連續(xù)播放的一組圖片,每一幅畫(huà)面稱(chēng)為一幀(FRAME)。電影的畫(huà)面速度為24幀/秒,而電視的畫(huà)面速度為30幀/秒,也就是說(shuō)一秒鐘的動(dòng)作是由三十張圖片所組成的。對(duì)計(jì)算機(jī)來(lái)說(shuō),理想的情況也是與電視一樣,每秒鐘連續(xù)將30幅圖像顯示到屏幕上。但是由于計(jì)算機(jī)存儲(chǔ)器儲(chǔ)存的限制(一幀如果是640×480大小的話,就有300K的點(diǎn),可以想像顯示一秒鐘的畫(huà)面需要多少存儲(chǔ)器存儲(chǔ)的容量),而且計(jì)算機(jī)處理速度的限制(一秒鐘要將若干的300K數(shù)據(jù)顯示到屏幕上),往往達(dá)不到電影或電視的速度。因此計(jì)算機(jī)的速度與儲(chǔ)存量一直是計(jì)算機(jī)圖形的關(guān)鍵問(wèn)題。
在現(xiàn)有的動(dòng)畫(huà)、圖像數(shù)據(jù)壓縮方法中大致分為兩類(lèi),一類(lèi)是解碼速度高,而壓縮率低的方法,另一類(lèi)是壓縮率高,但解碼速度慢的方法。因?yàn)楝F(xiàn)有的動(dòng)畫(huà)、圖像數(shù)據(jù)壓縮方法的解碼過(guò)程基本上是其編碼的逆過(guò)程,解碼速度快的,其編碼簡(jiǎn)單,壓縮效率低;而編碼復(fù)雜則解碼復(fù)雜,雖效率高但解碼慢。前者如PCX檔格式(圖像)、GIF檔格式(圖像),F(xiàn)LT、FLC檔格式(動(dòng)畫(huà)),其編碼、解碼算法非常簡(jiǎn)單,雖解碼速度很快,但數(shù)據(jù)壓縮率低,每幀圖像的數(shù)據(jù)量很大,而使得數(shù)據(jù)讀取速率很慢,播放效果不理想,即使其中壓縮率較高的如GIF檔格式,也遠(yuǎn)不足以在CD上流暢播放。后者如JPEG、MPEG壓縮方法,雖數(shù)據(jù)壓縮率很高,但編碼、解碼算法過(guò)于復(fù)雜,解碼速度很慢,需要硬件的配合才可以流暢播放。
本發(fā)明針對(duì)上述已知?jiǎng)赢?huà)、圖像數(shù)據(jù)壓縮方法的缺點(diǎn),研究出一種按位處理實(shí)現(xiàn)最佳化數(shù)據(jù)損失編碼的壓縮方法,在圖像質(zhì)量可以允許范圍內(nèi)使壓縮率大大提高,并使解碼速度更快。
本發(fā)明的目的是提供一種可提高圖像數(shù)據(jù)壓縮率,并達(dá)到較高速度的動(dòng)畫(huà)播放效果的方法。
本發(fā)明的按位處理實(shí)現(xiàn)最佳化數(shù)據(jù)損失編碼的壓縮方法,包含步驟為按設(shè)定的閥值(VALVE用于控制壓縮率,即圖像數(shù)據(jù)損失率)對(duì)每隔一行的數(shù)據(jù)進(jìn)行數(shù)據(jù)損失預(yù)處理,使該行的圖像數(shù)據(jù)中重復(fù)像素串增多、單個(gè)像素串增長(zhǎng);以位為單位進(jìn)行數(shù)據(jù)壓縮,對(duì)于重復(fù)像素串字節(jié),置其重復(fù)次數(shù),即索引(INDEX)位(BIT)6為1,位(BIT)0-5為像素重復(fù)次數(shù),而對(duì)非重復(fù)像素點(diǎn),置其INDEX位6為0,位0-5為該像素值。
在本發(fā)明的按位處理實(shí)現(xiàn)最佳化數(shù)據(jù)損失編碼的壓縮方法中,所說(shuō)對(duì)每幀圖像的行數(shù)據(jù)進(jìn)行數(shù)據(jù)損失預(yù)處理,包括如下步驟(a)設(shè)定優(yōu)化閥值;(b)隔行讀入一行圖像數(shù)據(jù);(c)判斷該行中是否有重復(fù)字節(jié)(BYTE),若有,則定位到下一個(gè)重復(fù)字節(jié)末;否則至步驟(e)判斷是否已整行結(jié)束(d)判斷下一字節(jié)的對(duì)色彩描述格式(YUV)值與此重復(fù)字節(jié)的對(duì)色彩描述格式值的差是否小于設(shè)定閥值;若是,則將該字節(jié)置為重復(fù)字節(jié)值,若否,則重回步驟(c)判斷該行中是否有重復(fù)字節(jié);(e)判斷是否已整行結(jié)束,若是,則至步驟(f)取得下一個(gè)重復(fù)字節(jié)串的重復(fù)次數(shù)(INDEX),否則重回步驟(c)判斷該行中是否有重復(fù)字節(jié);以及所說(shuō)以位為單位進(jìn)行數(shù)據(jù)壓縮,包括如下步驟(f)取得下一個(gè)重復(fù)字節(jié)串的重復(fù)次數(shù)(INDEX);(g)判斷該INDEX是否大于1,若不大于1,則將該7位(BIT)寫(xiě)入到數(shù)據(jù)文件;若大于1,則將位6置為1,并將位0-5記入該INDEX次數(shù),然后將該6位(BIT)寫(xiě)入到數(shù)據(jù)文件;(h)判斷是否已整行結(jié)束,若不是,則回至步驟(f)取得下一個(gè)重復(fù)字節(jié)串的重復(fù)次數(shù)(INDEX);(i)判斷是否整幀圖像結(jié)束(所馀行數(shù)<2),若不是,則回至步驟(b)隔行讀入一行圖像數(shù)據(jù);(j)結(jié)束。
在本發(fā)明的方法中,所說(shuō)的隔行讀入一行圖像數(shù)據(jù)可為隔一行讀入一行圖像數(shù)據(jù),也可為隔復(fù)數(shù)行讀入一行圖像數(shù)據(jù)。
下面將參照附圖詳細(xì)說(shuō)明本發(fā)明的較佳實(shí)施例。
附圖中,
圖1為用本發(fā)明的壓縮方法處理原來(lái)以FLIC擋儲(chǔ)存的路徑動(dòng)畫(huà)文件,再以XPX檔進(jìn)行儲(chǔ)存、播放的過(guò)程方塊圖;圖2是顯示XPX檔文件結(jié)構(gòu);圖3A及圖3B為用本發(fā)明的壓縮方法以XPX檔編碼一幀圖像實(shí)施例的流程圖;圖4為用本發(fā)明的壓縮方法以XPX檔解碼一幀圖像其中一行實(shí)施例的流程圖。
本發(fā)明的動(dòng)畫(huà)、圖像數(shù)據(jù)壓縮方法中,是先以設(shè)定的閥值對(duì)每行圖像數(shù)據(jù)進(jìn)行數(shù)據(jù)損失處理同時(shí)進(jìn)行隔行掃描,在圖像質(zhì)量可允許范圍內(nèi)使后續(xù)的壓縮率大大提高,而此過(guò)程為預(yù)處理過(guò)程,即只在編碼過(guò)程中體現(xiàn),而在解碼過(guò)程中解碼速度與此無(wú)關(guān)或使解碼速度更快。
本發(fā)明的有關(guān)動(dòng)畫(huà)、圖像數(shù)據(jù)壓縮方法,可先以原來(lái)的以FLIC檔儲(chǔ)存的路徑動(dòng)畫(huà)文件,它是以3D Studio形成的,進(jìn)行每幀圖像的數(shù)據(jù)損失預(yù)處理而后進(jìn)行壓縮處理,再以XPX檔儲(chǔ)存、播放該動(dòng)畫(huà)文件。其實(shí)施的流程圖如圖1所示,首先,在步驟S1,采用3D Studio形成的FLIC檔動(dòng)畫(huà)檔文件;而在步驟S2,對(duì)每幀圖像進(jìn)行數(shù)據(jù)損失處理,以使其更適合于本發(fā)明的壓縮方法,而得到較高的壓縮率;然后在步驟S3,對(duì)經(jīng)預(yù)處理的圖像進(jìn)行壓縮處理,并以XPX檔格式將其存于硬盤(pán)、光盤(pán)等媒體中;最后在步驟S4,將以XPX檔儲(chǔ)存的路徑動(dòng)畫(huà)文件解碼、播放。使用本發(fā)明的動(dòng)畫(huà)、圖像數(shù)據(jù)壓縮方法,對(duì)于原始存檔格式(FLIC)的數(shù)量很大的,經(jīng)按本發(fā)明的壓縮方法處理后,可得到僅為原來(lái)30%左右的數(shù)據(jù)量。
XPX檔文件結(jié)構(gòu),如圖2所示,其中關(guān)于文件頭結(jié)構(gòu)和幀頭結(jié)構(gòu),定義如下。
文件頭結(jié)構(gòu)偏移 長(zhǎng)度 含義0 8字節(jié) XPX檔標(biāo)記及版本信息8 1字XPX檔幀數(shù)101字每幀圖像寬度121字每幀圖像高度1418字節(jié) 保留字節(jié)幀頭結(jié)構(gòu)
偏移長(zhǎng)度含義0 1字該幀數(shù)據(jù)長(zhǎng)度(含幀頭長(zhǎng))4 768字節(jié)該幀調(diào)色盤(pán)信息772 8字節(jié) 保留字節(jié)本發(fā)明在實(shí)際的編碼過(guò)程中,在保留同值編碼、解碼的高速的基礎(chǔ)上按位處理方式來(lái)實(shí)現(xiàn),以提高其壓縮率,且同時(shí)避免了冗馀數(shù)據(jù)(負(fù)壓縮,譬如一幅圖畫(huà)中,一個(gè)紅色的點(diǎn),應(yīng)只用1個(gè)字節(jié)來(lái)表示即可,若用了2個(gè)字節(jié)來(lái)表示,即比原來(lái)多用了1個(gè)字節(jié),由對(duì)局部易造成負(fù)壓縮)的出現(xiàn),故以此方式壓縮后數(shù)據(jù)壓縮率非常高。本壓縮方法其算法的復(fù)雜度只影響編碼過(guò)程的處理速度,而與解碼處理過(guò)程無(wú)關(guān),其處理原則是使圖像數(shù)據(jù)更利于后續(xù)的按位處理的同值編碼處理,且可以通過(guò)調(diào)整處理閥值來(lái)控制圖像數(shù)據(jù)壓縮的損失率,調(diào)節(jié)圖像數(shù)據(jù)的壓縮率。
本發(fā)明的按位處理實(shí)現(xiàn)最佳化數(shù)據(jù)損失編碼的壓縮方法的實(shí)施例如圖3A及圖3B流程圖所示,其中圖3A為數(shù)據(jù)損失預(yù)處理過(guò)程的流程圖,圖3B為按位為單位進(jìn)行處理的流程圖。在該實(shí)施例中,以7位編碼處理為例來(lái)作說(shuō)明,因?yàn)?位是本方法中認(rèn)為最有效的編碼單位,當(dāng)然,本發(fā)明中所使用的字節(jié)的位數(shù)并不限定要用7位。在該實(shí)施例的方法中包括如下步驟(1)對(duì)每幀圖像的行數(shù)據(jù)進(jìn)行數(shù)據(jù)損失預(yù)處理,其包括在步驟S11,設(shè)定優(yōu)化閥值(可調(diào)整選用);在步驟S12,隔行讀入一行圖像數(shù)據(jù);在步驟S13,判斷該行中是否有重復(fù)字節(jié),若有,則定位到下一個(gè)重復(fù)字節(jié)末;否則至步驟S15判斷是否已整行結(jié)束;在步驟S14,判斷下一字節(jié)的對(duì)色彩描述格式Y(jié)UV(本方法是采用Y(量度)=3,4或5;U.V(色度)=8或10)值與此重復(fù)字節(jié)的對(duì)色彩描述格式值的差是否小于設(shè)定閥值,若是,則將該字節(jié)置為重復(fù)字節(jié)值,若否,則重回步驟S13判斷該行中是否有重復(fù)字節(jié);在步驟S15,判斷是否已整行結(jié)束,若是,則至步驟S16取得下一個(gè)重復(fù)字節(jié)串的重復(fù)次數(shù)(INDEX),否則重回步驟S13判斷該行中是否有重復(fù)字節(jié);以及(2)以位為單位進(jìn)行數(shù)據(jù)壓縮,其包括在步驟S16,取得下一個(gè)重復(fù)位組串的重復(fù)次數(shù)(INDEX);
在步驟S17,判斷該INDEX是否大于1,若不大于1,則將該7位寫(xiě)入到數(shù)據(jù)文件;若大于1,則將位6置為1,并將位0-5記入該INDEX次數(shù),然后將該6位寫(xiě)入到數(shù)據(jù)文件;在步驟S18,判斷是否已整行結(jié)束,若不是,則回至步驟S16取得下一個(gè)重復(fù)字節(jié)串的重復(fù)次數(shù)(INDEX);在步驟S19,判斷是否整幀圖像結(jié)束(所馀行數(shù)<2),若不是,則回至步驟S12,隔行讀入一行圖像數(shù)據(jù);在步驟S20,結(jié)束。
如上述本發(fā)明按位處理實(shí)現(xiàn)最佳化數(shù)據(jù)損失編碼壓縮方法的實(shí)施例,在編碼過(guò)程中的預(yù)處理過(guò)程只會(huì)使因重復(fù)像點(diǎn)串的增多、增長(zhǎng)而造成解碼處理簡(jiǎn)單,速度因此更快,這是因?yàn)轭伾嘟频模灾貜?fù)像點(diǎn)串進(jìn)行處理,而完全不近似的顏色,則按7位+6位=13位進(jìn)行處理;而解碼過(guò)程中,與前述編碼過(guò)程中的預(yù)處理過(guò)程無(wú)關(guān),其僅為編碼過(guò)程的逆過(guò)程。
由此較本實(shí)施例與公知的以字節(jié)或字(WORD)方式處理的壓縮方法可知,例如,假設(shè)背景是3個(gè)紅點(diǎn)和4個(gè)綠點(diǎn),由公知是以3R4G表示編碼(同值編碼),在存儲(chǔ)器的占用空間是3字節(jié)+4字節(jié)=7字節(jié)(即56位),而用本發(fā)明的按位方式處理的方法,經(jīng)預(yù)處理以3R4G表示其編碼(同值編碼),則為7位+6位+7位+6位=26位,則所占存儲(chǔ)器的空間可大大地減少。再加上在預(yù)處理中若為數(shù)據(jù)損失預(yù)處理,則更可節(jié)省存儲(chǔ)器空間。
圖4流程圖顯示用本發(fā)明的壓縮方法進(jìn)行XPX檔編碼一幀圖像后,以XPX檔解碼一幀圖像其中一行的實(shí)施例。圖中,在步驟S41首先讀入7位數(shù)據(jù);接著在步驟S42判斷位6是否為1,若不為1,則寫(xiě)入該位0-5的6個(gè)位數(shù)據(jù),若為1,則INDEX=該6個(gè)位數(shù)據(jù)值和3FH,并將下6個(gè)位值重復(fù)INDEX次;接著至步驟S43判斷整行解碼完否,若未整行解碼完,則回到步驟S41再讀入7個(gè)位數(shù)據(jù)繼續(xù)進(jìn)行解碼,若已整行解碼完,則結(jié)束該行解碼,再進(jìn)行下行解碼。當(dāng)然,每行解碼完后其數(shù)據(jù)要在書(shū)面上掃描二行。
下列表(一)中列示出某場(chǎng)景的其中一個(gè)21幀動(dòng)畫(huà)檔壓縮前數(shù)據(jù)量及壓縮成公知的PCX檔、FLIC檔,及用本發(fā)明壓縮方法成XPX檔的數(shù)據(jù)量的比較表表(一)
數(shù)據(jù)量(字節(jié)) 壓縮比壓縮前4,838,400 ------PCX檔 1,405,296 29.04%FLIC檔1,944,342 40.19%XPX檔 650,13813.44%由表(一)中可知,用本發(fā)明壓縮方法壓縮成XPX檔的數(shù)據(jù)量,為壓縮成FLIC檔數(shù)據(jù)量的33.43%。及壓縮成XPX檔數(shù)據(jù)量的46.26%。
本壓縮方法以類(lèi)同值編碼方法編碼,算法簡(jiǎn)單,易于實(shí)現(xiàn),解碼速度很快,而在數(shù)據(jù)壓縮中以位為處理單位,故壓縮率很高,壓縮后的數(shù)據(jù)檔很小。數(shù)據(jù)讀取時(shí)間很短,故綜合播放速度較快。無(wú)幀間繼承處理,故不會(huì)因動(dòng)畫(huà)中幀間繼承性小而影響動(dòng)畫(huà)的播放速度,尤其適合于軟件形成的幀間圖像數(shù)據(jù)繼承性小的幀圖像較復(fù)雜動(dòng)畫(huà)的播放。
以3DS3形成的高分辨圖像(640×360×64的假3D場(chǎng)景動(dòng)畫(huà)數(shù)據(jù)文件),每幀的平均數(shù)據(jù)量也在20KB以下,即使每幀的圖像數(shù)據(jù)完全不同,以本壓縮方法完成的編碼在PENTIUM 586/75、4倍數(shù)CD上,每秒可以播放10幀以上。因此本發(fā)明的壓縮編碼、解碼方法在一定范圍內(nèi)可使數(shù)據(jù)壓縮率高,解碼速度快,非常適于軟件解碼,即使在光盤(pán)上也可達(dá)到流暢播放的滿意效果。
雖然本發(fā)明已通過(guò)實(shí)施例加以說(shuō)明,但理應(yīng)了解在不違背本發(fā)明的權(quán)利要求書(shū)內(nèi)所界定的廣義精神和觀點(diǎn)情況下,各種的變更方式或修改,皆應(yīng)屬于本發(fā)明的范圍。
權(quán)利要求
1.一種用于動(dòng)畫(huà)顯示的按位處理實(shí)現(xiàn)最佳化數(shù)據(jù)損失編碼的壓縮方法,包括如下步驟按設(shè)定的閥值,對(duì)隔行之一行數(shù)據(jù)進(jìn)行數(shù)據(jù)損失預(yù)處理,使該行的圖像數(shù)據(jù)中重復(fù)像素串增多、單個(gè)像素串增長(zhǎng);以位為單位進(jìn)行數(shù)據(jù)壓縮,對(duì)于重復(fù)像素串字節(jié),置其重復(fù)次數(shù)(INDEX)位6為1,位0-5為像素重復(fù)次數(shù),而對(duì)非重復(fù)像素點(diǎn),置其INDEX位6為0,位0-5為該像素值。
2.如權(quán)利要求1所說(shuō)的數(shù)據(jù)損失編碼的壓縮方法,其中,所說(shuō)的對(duì)每幀圖像的行數(shù)據(jù)進(jìn)行數(shù)據(jù)損失預(yù)處理,包括如下步驟(a)設(shè)定優(yōu)化閥值;(b)隔行讀入一行圖像數(shù)據(jù);(c)判斷該行中是否有重復(fù)字節(jié),若有,則定位到下一個(gè)重復(fù)字節(jié)末;否則至步驟(e)判斷是否已整行結(jié)束;(d)判斷下一字節(jié)的對(duì)色彩描述格式(YUV)值與此重復(fù)字節(jié)的對(duì)色彩描述格式值的差是否小于設(shè)定閥值,若是,則將該字節(jié)置為重復(fù)字節(jié)值,若否,則重回步驟(c)判斷該行中是否有重復(fù)字節(jié);(e)判斷是否已整行結(jié)束,若是,則至步驟(f)取得下一個(gè)重復(fù)字節(jié)串的重復(fù)次數(shù)(INDEX),否則重回步驟(c)判斷該行中是否有重復(fù)字節(jié);以及所說(shuō)的以位為單位進(jìn)行數(shù)據(jù)壓縮,包括如下步驟(f)取得下一個(gè)重復(fù)字節(jié)串的重復(fù)次數(shù)(INDEX);(g)判斷該INDEX是否大于1,若不大于1,則將該7位寫(xiě)入到數(shù)據(jù)文件;若大于1,則將位6置為1,并將位0-5記入該INDEX次數(shù),然后將該6位寫(xiě)入到數(shù)據(jù)文件;(h)判斷是否已整行結(jié)束;若不是則回至步驟(f)取得下一個(gè)重復(fù)字節(jié)串的重復(fù)次數(shù);(i)判斷是否整幀圖像結(jié)束,(所馀行數(shù)<2),若不是,則回至步驟(b)隔行讀入一行圖像數(shù)據(jù);(i)結(jié)束。
3.如權(quán)利要求1或2的數(shù)據(jù)損失編碼的壓縮方法,其中,解碼過(guò)程,僅為編碼過(guò)程中按位處理的同值編碼處理的逆過(guò)程,而與編碼過(guò)程中的全部預(yù)處理過(guò)程無(wú)關(guān),同時(shí)避免了冗馀壓縮。
4.如權(quán)利要求1或2的數(shù)據(jù)損失編碼的壓縮方法,其中,該字節(jié)為具有復(fù)數(shù)個(gè)位。
5.如權(quán)利要求1或2的數(shù)據(jù)損失編碼的壓縮方法,其中,該隔行讀入一行圖像數(shù)據(jù)為隔一行讀入一行圖像數(shù)據(jù)。
6.如權(quán)利要求1或2的數(shù)據(jù)損失編碼的壓縮方法,其中,該隔行讀入一行圖像數(shù)據(jù)為隔復(fù)數(shù)行讀入一行圖像數(shù)據(jù)。
7.如權(quán)利要求2的數(shù)據(jù)損失編碼的壓縮方法,其中,該步驟(a)與步驟(b)的順序可以對(duì)調(diào)。
全文摘要
一種動(dòng)畫(huà)、圖像數(shù)據(jù)壓縮方法,先設(shè)定閥值對(duì)隔行圖像數(shù)據(jù)進(jìn)行數(shù)據(jù)損失預(yù)處理,使該行的重復(fù)像素串增多、單個(gè)像素串增長(zhǎng),并進(jìn)行按位處理,在圖像質(zhì)量可以允許范圍內(nèi)使后續(xù)的壓縮率大大提高;而此等預(yù)處理過(guò)程只在編碼過(guò)程中體現(xiàn),其在解碼過(guò)程中與解碼速度無(wú)關(guān)或使解碼速度更快。
文檔編號(hào)G06T9/00GK1196543SQ9711036
公開(kāi)日1998年10月21日 申請(qǐng)日期1997年4月15日 優(yōu)先權(quán)日1997年4月15日
發(fā)明者張景嵩, 林光信, 梁玉英, 魏永杰 申請(qǐng)人:英業(yè)達(dá)股份有限公司