一種基于旋轉(zhuǎn)抖動(dòng)矩陣處理的圖像處理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,尤其涉及一種基于旋轉(zhuǎn)抖動(dòng)矩陣處理的圖像處理 方法。
【背景技術(shù)】
[0002] 隨著科技的發(fā)展,目前已進(jìn)入信息爆炸的狀態(tài),尤其是視頻類(lèi)圖像數(shù)據(jù),由于其傳 遞表達(dá)信息的直觀,應(yīng)用范圍越來(lái)越廣,隨之而來(lái)的問(wèn)題就是如何用較少的資源開(kāi)銷(xiāo)保存 較完整的視頻圖像信息。該問(wèn)題主要表現(xiàn)在兩個(gè)方面:①對(duì)于目前大多數(shù)的8bit圖像數(shù)據(jù), 如何用較小的資源開(kāi)銷(xiāo)如5bit等保存完整的視頻圖像信息;②目前出現(xiàn)了高bit信息量的 圖像數(shù)據(jù),如l〇bit圖像數(shù)據(jù),如何用現(xiàn)有8bit資源保存較完整的視頻圖像信息。
[0003] 數(shù)字半色調(diào)技術(shù)(Digital Halftoning Technology)是基于人眼視覺(jué)特性和圖像 呈色特性,利用數(shù)學(xué)、計(jì)算機(jī)等工具,在二值(或多色二值)呈色設(shè)備上實(shí)現(xiàn)圖像的最優(yōu)再現(xiàn) 的一門(mén)技術(shù)。當(dāng)在一定距離下觀察時(shí),人眼將圖像中空間上接近的部分視為一個(gè)整體。利用 此特性,人眼觀察到的半色調(diào)圖像局部平均灰度近似于原始圖像的局部平均灰度值,從而 整體上形成連續(xù)色調(diào)的效果。
[0004] 抖動(dòng)算法是目前應(yīng)用較廣的數(shù)字半色調(diào)技術(shù)。傳統(tǒng)方法中在用6bit帶寬表示8bit 數(shù)據(jù)時(shí),直接將8bit數(shù)據(jù)量化為6bit,因此存在很大的信息丟失,導(dǎo)致視頻圖像的質(zhì)量下 降。抖動(dòng)算法的原理就是將高位的顯示信息通過(guò)抖動(dòng)矩陣計(jì)算分配到相鄰的空間中,使得 圖像質(zhì)量得到明顯改善,提高了顯示的灰度級(jí)數(shù)。現(xiàn)有抖動(dòng)算法有以下兩種:
[0005] ①固定抖動(dòng)矩陣處理算法:其是傳統(tǒng)的抖動(dòng)算法,在圖像顯示過(guò)程中,特別是對(duì)于 靜止圖像的顯示,會(huì)出現(xiàn)明顯的塊狀效應(yīng),這是因?yàn)閭鹘y(tǒng)的抖動(dòng)算法處理時(shí)對(duì)每一圖像幀 都采用相同的抖動(dòng)矩陣;
[0006] ②旋轉(zhuǎn)抖動(dòng)矩陣處理算法:其主要是為了消除固定抖動(dòng)矩陣處理算法造成的塊狀 效應(yīng),其原理是對(duì)若干個(gè)相鄰的圖像幀采用不同的抖動(dòng)矩陣,經(jīng)過(guò)旋轉(zhuǎn)抖動(dòng)矩陣處理后鄰 近位置上的灰度效果仍然保持不變,且避免了同一抖動(dòng)圖案的疊加,從而可以消除方塊效 應(yīng)。
[0007] 以下針對(duì)旋轉(zhuǎn)抖動(dòng)矩陣算法的實(shí)現(xiàn)闡述現(xiàn)有技術(shù)。
[0008] 設(shè)當(dāng)前處理圖像幀為framecurrent,旋轉(zhuǎn)抖動(dòng)矩陣處理算法即是在用較少數(shù)據(jù)帶寬 表示較高數(shù)據(jù)帶寬后,將產(chǎn)生的像素值小數(shù)部分與周期性旋轉(zhuǎn)抖動(dòng)矩陣進(jìn)行比較(設(shè)旋轉(zhuǎn) 抖動(dòng)矩陣個(gè)數(shù)為N,也即周期為N),并將比較結(jié)果累計(jì)至當(dāng)前處理圖像幀frame current降灰階 處理后的對(duì)應(yīng)像素點(diǎn)位置的像素值整數(shù)部分;旋轉(zhuǎn)抖動(dòng)矩陣處理方法的具體實(shí)現(xiàn)步驟如 下:
[0009] 首先,獲取旋轉(zhuǎn)抖動(dòng)矩陣:旋轉(zhuǎn)抖動(dòng)矩陣是由一個(gè)基本抖動(dòng)矩陣按照逆時(shí)針或順 時(shí)針旋轉(zhuǎn)而來(lái),而基本抖動(dòng)矩陣則例如是由Limb矩陣經(jīng)過(guò)矩陣運(yùn)算得到的:
[0010]
[0011] (b)、
,其中Un表不nXn的全一矩陣,從而 可以得到
[0012] (c)、獲取旋轉(zhuǎn)抖動(dòng)矩陣:以2 X 2基本抖動(dòng)矩陣為例,則基本抖動(dòng)矩陣按照逆時(shí)針 旋轉(zhuǎn),可以獲得周期性旋轉(zhuǎn)抖動(dòng)矩陣?yán)缫韵滤膫€(gè)矩陣:
;通過(guò)周期 性地使用2 X 2旋轉(zhuǎn)抖動(dòng)矩陣,可以實(shí)現(xiàn)用6bit的數(shù)據(jù)帶寬表示8bit的數(shù)據(jù),也即使用2 X 2 旋轉(zhuǎn)抖動(dòng)矩陣處理方法,即可以實(shí)現(xiàn)用比原來(lái)少2bit的數(shù)據(jù)帶寬較完整地表示原始數(shù)據(jù)信 息。若選擇抖動(dòng)矩陣選擇4X4的抖動(dòng)矩陣,可以實(shí)現(xiàn)用4bit的數(shù)據(jù)帶寬表示8bit的數(shù)據(jù)。 [00 13] 然后,處理當(dāng)前圖像幀framecurrent:設(shè)原始視頻是8bit(256級(jí))數(shù)據(jù)源,現(xiàn)要用 6bit(64級(jí))的數(shù)據(jù)帶寬表示該視頻,算法的具體實(shí)現(xiàn)包括以下步驟:
[0014] (1)、將原始視頻的每一圖像幀用64級(jí)(即6bit)進(jìn)行降灰階處理,則降灰階處理后 的圖像幀中各個(gè)像素點(diǎn)位置的像素值包含兩部分:整數(shù)部分(Int)和小數(shù)部分(Dec)。比如 原始像素值122(256級(jí))用64級(jí)降灰階處理后的值Value = 64X 122/256 = 30.5 = Int+Dec, 其中Int表示整數(shù)部分,Dec表示小數(shù)部分(若Value〈l,則Int = 0);設(shè)整數(shù)部分和小數(shù)部分 分別為:
[0015]
[0016] (2)、當(dāng)前處理圖像幀framecurrent降灰階處理后的各個(gè)像素點(diǎn)位置的像素值小數(shù) 部分與周期性旋轉(zhuǎn)抖動(dòng)矩陣比較,其中圖像幀中的各個(gè)像素點(diǎn)位置的像素值也是以旋轉(zhuǎn)抖 動(dòng)矩陣的周期為周期來(lái)與對(duì)應(yīng)的旋轉(zhuǎn)抖動(dòng)矩陣進(jìn)行比較,具體為:
[0017] 確定與當(dāng)前處理圖像幀framecurrent進(jìn)行比較處理的旋轉(zhuǎn)抖動(dòng)矩陣:即i =rem (current/4)+l,rem表示求余,current為當(dāng)前處理圖像幀的序號(hào)(例如第一個(gè)圖像幀對(duì)應(yīng) current = 0),i表示與當(dāng)前處理圖像幀framecurrent對(duì)應(yīng)的旋轉(zhuǎn)抖動(dòng)矩陣的序號(hào);
[0018] 計(jì)算當(dāng)前處理圖像幀framecurrent降灰階處理后每一個(gè)像素點(diǎn)位置處的比較結(jié)果, 以與Mat (對(duì)應(yīng)i = 1)比較為例:將步驟(1)降灰階處理后的像素值小數(shù)部分以2 X 2為單元, 每一個(gè)2X2單元與Mat!*對(duì)應(yīng)位置的值比較;若像素值小數(shù)部分大于Mat!中對(duì)應(yīng)位置的值, 則對(duì)應(yīng)像素點(diǎn)位置的整數(shù)部分加1,反之則不加1(也即整數(shù)部分不變),從而得到每一個(gè)像 素點(diǎn)位置的像素目標(biāo)值,其中i的取值范圍為1~N。
[0019] 在這里由于使用6bit的數(shù)據(jù)帶寬表示8bit的數(shù)據(jù)源,因此產(chǎn)生的小數(shù)部分只有0, 0.25,0.5,0.75。小數(shù)部分與旋轉(zhuǎn)抖動(dòng)矩陣比較過(guò)程,實(shí)際上是通過(guò)在鄰近的四個(gè)圖像幀中 整體實(shí)現(xiàn)小數(shù)部分。比如實(shí)現(xiàn)小數(shù)部分0.5,則是在鄰近的四個(gè)圖像幀中,其中有兩個(gè)圖像 幀對(duì)應(yīng)像素點(diǎn)位置的像素值整數(shù)部分加1,另外兩個(gè)圖像幀對(duì)應(yīng)像素點(diǎn)位置的像素值整數(shù) 部分沒(méi)有加1,從而實(shí)現(xiàn)0.5。
[0020] 由上可知,旋轉(zhuǎn)抖動(dòng)矩陣算法實(shí)現(xiàn)的本質(zhì)就是將在用低bit數(shù)據(jù)帶寬表示高bit數(shù) 據(jù)時(shí)的小數(shù)部分在其鄰近的多個(gè)圖像幀內(nèi)統(tǒng)計(jì),而人眼觀察到的圖像局部平均灰度近似于 原始圖像的局部平均灰度值,同時(shí)人眼具有懶惰性,從而整體上形成連續(xù)色調(diào)的效果。
[0021] 之后,對(duì)原始視頻中的其他圖像幀都按照上述方法處理;若處理的是一幅靜止圖 像,則相當(dāng)于一個(gè)視頻中的所有圖像幀都是一樣的。
[0022] 然而,現(xiàn)有技術(shù)存在一些不足,也即使用現(xiàn)有的旋轉(zhuǎn)抖動(dòng)矩陣時(shí),比如2X2的旋轉(zhuǎn) 抖動(dòng)矩陣,可以實(shí)現(xiàn)用比原來(lái)少2bit的數(shù)據(jù)帶寬表示原始數(shù)據(jù)信息,但若用比原來(lái)少3bit 或少更多bit表示原始數(shù)據(jù)信息時(shí),實(shí)現(xiàn)精度降低,存在一些信息的丟失。例如同樣采用2X 2的旋轉(zhuǎn)抖動(dòng)矩陣,若要用5bit(32級(jí))的數(shù)據(jù)帶寬表示原始8bit(256級(jí))的數(shù)據(jù),例如表示 8bi t的37,則Value = 32 X 37/256 = 4.625 = Int+Dec,在用2 X 2旋轉(zhuǎn)抖動(dòng)矩陣處理像素值小 數(shù)部分Dec時(shí),在鄰近的四個(gè)圖像幀中,其中有三個(gè)圖像幀的對(duì)應(yīng)像素點(diǎn)位置的像素值整數(shù) 部分加1,另外一個(gè)圖像幀的對(duì)應(yīng)像素點(diǎn)位置的像素值整數(shù)部分沒(méi)有加1,那么最終的表示 結(jié)果是〇. 75,而實(shí)際上的小數(shù)部分是0.625,也即表示結(jié)果不精確。
【發(fā)明內(nèi)容】
[0023] 因此,為克服現(xiàn)有技術(shù)中存在的缺陷和不足,本發(fā)明提出一種基于旋轉(zhuǎn)抖動(dòng)矩陣 處理的圖像處理方法。
[0024]具體地,本發(fā)明實(shí)施例提出的一種基于旋轉(zhuǎn)抖動(dòng)矩陣處理的圖像處理方法,包括 步驟:(a)對(duì)第一圖像幀進(jìn)行降灰階處理以得到第一降灰階處理后圖像幀;(b)將所述第一 降灰階處理后圖像幀的各個(gè)像素點(diǎn)位置的像素值小數(shù)部分與周期為N的N個(gè)旋轉(zhuǎn)抖動(dòng)矩陣 中的第一旋轉(zhuǎn)抖動(dòng)矩陣進(jìn)行比較處理以得到所述第一降灰階處理后圖像幀的各個(gè)像素點(diǎn) 位置的像素目標(biāo)值,其中N為正整數(shù);(c)計(jì)算所述第一降灰階處理后圖像幀的各個(gè)像素點(diǎn) 位置的像素值小數(shù)部分經(jīng)過(guò)一個(gè)周期的N個(gè)旋轉(zhuǎn)抖動(dòng)矩陣比較處理后的實(shí)現(xiàn)結(jié)果;(d)計(jì)算 所述實(shí)現(xiàn)結(jié)果與所述第一降灰階處理后圖像幀的各個(gè)像素點(diǎn)位置的像素值小數(shù)部分之間 的差值;(e)對(duì)第二圖像幀進(jìn)行降灰階處理以得到第二降灰階處理后圖像幀,其中所述第二 圖像幀為與所述第一圖像幀相鄰的下一個(gè)圖像幀;(f)將所述差值累計(jì)到所述第二降灰階 處理后圖像幀的各個(gè)像素點(diǎn)位置的像素值上以得到累計(jì)殘差后的第二降灰階處理后圖像 幀;以及(g)將所述累計(jì)殘差后的第二降灰階處理后圖像幀的各個(gè)像素點(diǎn)位置的像素值小 數(shù)部分和所述周期為N的N個(gè)旋轉(zhuǎn)抖動(dòng)矩陣中的第二旋轉(zhuǎn)抖動(dòng)矩陣進(jìn)行比較處理以得到所 述第二降灰階處理后圖像幀的各個(gè)像素點(diǎn)位置的像素目標(biāo)值。
[