專利名稱:一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)字圖像半色調(diào)領(lǐng)域的網(wǎng)點(diǎn)生成方法和裝置,具體涉及一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的方法和裝置。
背景技術(shù):
數(shù)字半色調(diào)是一種將連續(xù)色調(diào)的圖像轉(zhuǎn)換成單色調(diào)圖像的技術(shù),這一技術(shù)常用于打印機(jī)、計(jì)算機(jī)顯示器及其它二值的電子顯示設(shè)備上再現(xiàn)彩色或灰度的圖像,著重解決如何使得半色調(diào)圖像達(dá)到一種連續(xù)調(diào)圖像的視覺效果。有許多實(shí)現(xiàn)方法,主要分為三類規(guī)則抖動(dòng)法、誤差擴(kuò)散法和最佳化的方法,其中誤差擴(kuò)散方法是近些年來被廣泛采用數(shù)字半色調(diào)技術(shù)。
在通常的調(diào)頻掛網(wǎng)方法中,誤差擴(kuò)散方法是最常用的方法。誤差擴(kuò)散方法是把原圖像的每個(gè)像素點(diǎn)的灰度值與閾值相比較產(chǎn)生網(wǎng)點(diǎn)的同時(shí),把像素點(diǎn)的灰度值與閾值之間的誤差擴(kuò)散到該像素點(diǎn)周圍的像素點(diǎn)上,例如對于一個(gè)256級(jí)灰度的圖像,閾值為127,有一個(gè)像素點(diǎn)的灰度值為150,經(jīng)比較可知,該像素點(diǎn)應(yīng)記為白色網(wǎng)點(diǎn)(其灰度值為255),但實(shí)際上該像點(diǎn)并不是真正的白色,與白色之間存在的灰度差為105,于是將105這個(gè)誤差按一定的方法分散到該像素點(diǎn)周圍的像素點(diǎn)上。
將誤差擴(kuò)散到周圍像素點(diǎn)的方法有很多種,其中Floyd-Steinberg誤差擴(kuò)散算法是一種最通用的誤差擴(kuò)散方法,該算法是將一個(gè)像素的誤差分配到周圍的四個(gè)點(diǎn)上。即將誤差的7/16加到當(dāng)前像素點(diǎn)右邊第一個(gè)像素點(diǎn)上,誤差的3/16加到下一行左邊第一個(gè)像點(diǎn)上,誤差的5/16加到下一行正對的像點(diǎn)上,誤差的1/16加到下一行右邊第一個(gè)像點(diǎn)上,這樣把當(dāng)前像點(diǎn)的誤差分散到周圍的像點(diǎn)上,反復(fù)進(jìn)行該過程,對圖像中的每個(gè)像點(diǎn)進(jìn)行同樣的半色調(diào)化和灰度值的修正即可。
為了進(jìn)一步提高誤差擴(kuò)散方法處理圖像的質(zhì)量,又出現(xiàn)了一些改進(jìn)的算法,如Jarvis算法。附圖1A是基于Jarvis算法的誤差擴(kuò)散原理示意圖,當(dāng)前像素X的誤差分配到附圖1A所示的12個(gè)相鄰像素上去。這12個(gè)位置上的某些位置的誤差分配比例是相同的,因此只需要4個(gè)不同的誤差分配比例,其中可取D1=1/48,D2=3/48,D3=5/48,D4=7/48的比例來分配當(dāng)前像素X的誤差。這樣通過增加誤差擴(kuò)散范圍,使得輸出的半色調(diào)圖像效果更好。
雖然基于Jarvis誤差擴(kuò)散方法的圖像半色調(diào)處理能取得更好的效果,卻因?yàn)檎`差擴(kuò)散涉及到更多行更多像素點(diǎn),導(dǎo)致存儲(chǔ)量增大和速度更慢,難以達(dá)到日益發(fā)展的高速打印機(jī)和復(fù)印機(jī)的實(shí)時(shí)性要求,應(yīng)用范圍受到限制。
并且,上述算法在誤差擴(kuò)散時(shí),若總是單方向的掃描處理源圖像,例如從左到右一個(gè)掃描行一個(gè)掃描行的處理每個(gè)像素點(diǎn),則會(huì)形成一個(gè)掃描行的誤差簡單的加至下一行,從而引起誤差的堆積,表現(xiàn)在輸出圖形上是圖像有一種驅(qū)趕的趨勢。所以在掃描時(shí),往往采用‘S’形的掃描方式,即奇數(shù)行從左到右掃描如圖1A所示,偶數(shù)行從右到左掃描,如圖1B所示,依次類推,直至最后一行。
在申請?zhí)枮镃N200510063255.3的中國專利申請中公開了一種能夠高速產(chǎn)生調(diào)頻網(wǎng)點(diǎn)的方法(
公開日2005年9月14日),該方法降低了存儲(chǔ)器的操作次數(shù),但是只能對圖像進(jìn)行逐個(gè)像素的處理,即每次只能處理一個(gè)像素,生成一位網(wǎng)點(diǎn),卻不能同時(shí)對多個(gè)像素處理并同時(shí)產(chǎn)生多個(gè)網(wǎng)點(diǎn)。
在美國專利申請“Multi-dimensional error diffusion technique“中(專利號(hào)US5271070)公開一種誤差擴(kuò)散的并行處理方法,圖像自上而下,從左到右進(jìn)行處理,根據(jù)Floyd-Steinberg算法可知,當(dāng)前某個(gè)像素點(diǎn)可與該像素點(diǎn)下一行左邊的第二個(gè)像素點(diǎn)并行處理,還可以與下二行左邊的第四個(gè)像素點(diǎn)并行處理,依次類推,實(shí)現(xiàn)多個(gè)像素點(diǎn)的并行處理。例如當(dāng)前行第五個(gè)像素點(diǎn)可與第二行的第三個(gè)像素點(diǎn)及第三行第一個(gè)像素點(diǎn)并行處理。該方法雖然能同時(shí)處理多個(gè)像素點(diǎn),但還需要對存儲(chǔ)器進(jìn)行多次讀寫操作,且對源圖像不能采用“S”形的圖像掃描處理,因此影響網(wǎng)點(diǎn)的生成速度,不利于解決誤差堆積帶來的驅(qū)趕效應(yīng)。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)存在的缺陷,本發(fā)明的目的是提供一種能夠同時(shí)產(chǎn)生多位基于誤差擴(kuò)散方法的調(diào)頻網(wǎng)點(diǎn)的方法和裝置,采用該方法和裝置能夠同時(shí)處理同一行N(N≥2)個(gè)相鄰像素點(diǎn),產(chǎn)生N位網(wǎng)點(diǎn),并且對誤差行存儲(chǔ)器只需進(jìn)行一次讀和一次寫的操作,就能完成多個(gè)誤差累積值在誤差行存儲(chǔ)器中的更新,大大提高調(diào)頻網(wǎng)點(diǎn)的產(chǎn)生速度,降低了存儲(chǔ)器的存取操作。
為達(dá)到以上目的,本發(fā)明采用的技術(shù)方案是一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的方法,包括以下步驟a)初始化誤差行存儲(chǔ)器的值為0,所述誤差行存儲(chǔ)器的值是指像素點(diǎn)的最終誤差累積值以及像素點(diǎn)的中間誤差累積值;b)初始化誤差分配/累積寄存器堆的值為0,所述誤差分配寄存器堆的值是指像素點(diǎn)對其周圍點(diǎn)的誤差分配值,所述誤差累積寄存器堆用于暫存從誤差行存儲(chǔ)器中讀出的像素點(diǎn)的中間誤差累積值;c)獲取第一行中F組中的第一組N個(gè)相鄰源像素的灰度值,并根據(jù)誤差行存儲(chǔ)器和誤差分配/累積寄存器堆的值,通過N個(gè)網(wǎng)點(diǎn)生成電路產(chǎn)生N位網(wǎng)點(diǎn),N≥2,所述F≥1;d)更新誤差行存儲(chǔ)器和誤差分配/累積寄存器堆中的值;e)獲取該行中下一組N個(gè)相鄰源像素的灰度值,重復(fù)步驟c、d、e,直到該行的所有像素點(diǎn)處理完畢;f)獲取下一行的第一組N個(gè)相鄰源像素的灰度值,重復(fù)步驟c、d、e、f,直到圖像上的所有像素點(diǎn)處理結(jié)束。
進(jìn)一步,步驟a中,對誤差行存儲(chǔ)器進(jìn)行初始化時(shí)還包括以下步驟1)以N個(gè)相鄰位置為單位進(jìn)行誤差行數(shù)據(jù)的組織,同行N個(gè)位置先順序存儲(chǔ),不同行的相同列N個(gè)位置再相鄰存儲(chǔ);2)確定誤差行總線寬度為N*W*(H-1),其中,N為當(dāng)前同時(shí)處理的像素個(gè)數(shù),W為誤差行存儲(chǔ)器一個(gè)位置的數(shù)據(jù)寬度,H為一個(gè)像素的誤差所能夠擴(kuò)散到的行數(shù)(包括當(dāng)前處理像素所在的行)。
更進(jìn)一步,步驟b中,所述的誤差分配寄存器堆的值是指對當(dāng)前處理的N個(gè)相鄰像素及對產(chǎn)生的下一行N個(gè)相鄰像素的最終誤差累積值都有誤差分配的當(dāng)前處理像素之前處理的所有像素的全部誤差分配值。
所述的誤差累積寄存器堆的值是指從誤差行存儲(chǔ)器中讀出的當(dāng)前處理的N個(gè)相鄰像素正對的下面一行N個(gè)相鄰位置上的中間誤差累積值。
更進(jìn)一步,步驟c中,依據(jù)當(dāng)前N個(gè)像素的灰度值及誤差行存儲(chǔ)器和誤差分配/累積寄存器堆的值產(chǎn)生N位網(wǎng)點(diǎn)時(shí)所采用的方法包括如下步驟步驟1,首先同時(shí)獲取當(dāng)前N個(gè)相鄰源像素的灰度值,并從誤差行存儲(chǔ)器中讀取該N個(gè)相鄰像素對應(yīng)的最終誤差累積值;步驟2,
根據(jù)該組N個(gè)相鄰源像素中第1個(gè)要處理像素點(diǎn)的灰度值、步驟1中從誤差行存儲(chǔ)器中讀取的屬于該點(diǎn)的最終誤差累積值和從誤差分配寄存器堆中讀取相應(yīng)位置的誤差分配值,計(jì)算出該點(diǎn)的最終灰度值以及該點(diǎn)對周圍點(diǎn)的誤差分配值;步驟3,然后依次根據(jù)相鄰的下一個(gè)要處理像素點(diǎn)的灰度值,步驟1中從誤差行存儲(chǔ)器中讀取屬于該點(diǎn)的最終誤差累積值及從誤差分配寄存器堆中讀取相應(yīng)位置的誤差分配值,再加上該組N個(gè)相鄰源像素中前面的像素對該點(diǎn)所產(chǎn)生的誤差分配值,計(jì)算出該點(diǎn)的最終灰度值以及該點(diǎn)對周圍點(diǎn)的誤差分配值;步驟4,重復(fù)步驟3,直到該組N個(gè)相鄰源像素都處理完畢;上述各個(gè)步驟處理過程中,當(dāng)計(jì)算出該點(diǎn)對周圍點(diǎn)的誤差分配值后,該點(diǎn)對當(dāng)前處理的N個(gè)相鄰源像素中的后面其他像素點(diǎn)產(chǎn)生的誤差分配值直接傳送給所需要的網(wǎng)點(diǎn)生成電路,而其他誤差分配值則寄存到誤差分配寄存器堆中;更進(jìn)一步,步驟1中,N組網(wǎng)點(diǎn)生成電路同時(shí)獲取第i行的N個(gè)相鄰源像素的灰度值,并從誤差行存儲(chǔ)器中一次讀出第i行當(dāng)前N個(gè)相鄰源像素對應(yīng)位置的最終誤差累積值,及第i+1行正對位置的中間誤差累積值,并將中間誤差累積值緩存到誤差累積寄存器堆中;對于當(dāng)前處理的N個(gè)相鄰源像素中的第1個(gè)像素Pi,j,j表示列數(shù),從誤差分配寄存器堆得出同一行的以前所有像素處理所產(chǎn)生的誤差分配到此像素的誤差值之和S1;第1組網(wǎng)點(diǎn)生成電路將當(dāng)前處理像素中的第1個(gè)像素Pi,j對應(yīng)位置上的最終誤差累積值L01加上S1再和步驟1獲取的第1個(gè)源像素灰度值相加得出第1個(gè)最終像素灰度值,將該值和閥值比較產(chǎn)生第1個(gè)最終網(wǎng)點(diǎn),并計(jì)算該點(diǎn)對周圍點(diǎn)的誤差分配值;步驟2中,對于當(dāng)前處理像素中的第2個(gè)像素Pi,j+1,從誤差分配寄存器堆中直接得出同一行的以前非當(dāng)前處理的所有像素所產(chǎn)生的誤差分配到此像素的誤差分配值之和,再加上當(dāng)前處理像素中第1個(gè)像素Pi,j處理所產(chǎn)生的分配到此像素的誤差分配值,得出總和S2;第2組網(wǎng)點(diǎn)生成電路將當(dāng)前處理像素中第2個(gè)像素Pi,j+1對應(yīng)位置上的最終誤差累積值L02加上S2再和第2個(gè)源像素灰度值相加得出第2個(gè)最終像素灰度值,將該值和閥值比較產(chǎn)生最終網(wǎng)點(diǎn)2,并計(jì)算該點(diǎn)對周圍點(diǎn)的誤差分配值;步驟3中,以此類推,對于當(dāng)前處理像素中的第M個(gè)像素Pi,j+M-1,2<M≤N,依據(jù)誤差擴(kuò)散算法中處理一個(gè)像素產(chǎn)生的誤差最多向同行幾個(gè)相鄰像素進(jìn)行誤差擴(kuò)散,確定誤差分配寄存器堆中是否存在由第M個(gè)像素同行前面的非當(dāng)前處理像素分配給第M個(gè)像素的誤差分配值,若存在,則從誤差分配寄存器堆中直接得出分配到第M個(gè)像素的誤差分配值之和S’M,再將第M個(gè)像素之前的當(dāng)前處理像素中的像素產(chǎn)生的所有誤差分配到第M個(gè)像素的誤差分配值相加之和為S”M,S’M與S”M相加得出同行第M個(gè)像素之前所有像素分配到第M個(gè)像素誤差分配值總和SM;第M組網(wǎng)點(diǎn)生成電路將當(dāng)前處理像素中第M個(gè)像素Pi,j+M-1對應(yīng)位置上的最終誤差累積值L0M加上SM再和第M個(gè)源像素灰度值相加得出第M個(gè)最終像素灰度值,將該值和閥值比較產(chǎn)生最終網(wǎng)點(diǎn)M,并計(jì)算該點(diǎn)對周圍點(diǎn)的誤差分配值。
更進(jìn)一步,步驟d中,更新誤差行存儲(chǔ)器和誤差分配/累積寄存器堆中的值采用的方法包括如下步驟1)根據(jù)當(dāng)前處理的每個(gè)像素的各自的最終像素灰度值和閥值得出當(dāng)前N個(gè)相鄰像素產(chǎn)生的誤差分配到所有相鄰像素的值D1j’,D2j,Dkj...DNj’,Dkj’是指第K(1≤K≤N)個(gè)像素產(chǎn)生的一組誤差分配值。
2)誤差分配寄存器堆中每N個(gè)相鄰像素的所有誤差分配值為一列,前一列N個(gè)相鄰像素對應(yīng)值被更新為后一列N個(gè)相鄰像素的對應(yīng)的誤差分配值,而最后一列N個(gè)像素的誤差分配值被更新為當(dāng)前N個(gè)相鄰像素產(chǎn)生的誤差分配到所有相鄰像素的值D1j’,D2j’...DNj’;3)誤差累積寄存器堆中原N個(gè)相鄰像素Pi+1,j-N-Pi+1,j-1的誤差累積值更新為當(dāng)前N個(gè)相鄰像素對應(yīng)位置下一行上N個(gè)相鄰像素Pi+1,j-Pi+1,j+N-1的中間誤差累積值;4)根據(jù)誤差分配/累積寄存器堆的內(nèi)容和當(dāng)前N個(gè)相鄰像素處理產(chǎn)生的誤差分配值,得出當(dāng)前行下面第i+1行的N個(gè)相鄰位置Pi+1,j-N-Pi+1,j-1的最終誤差累積值,和第i+2行的N個(gè)相鄰位置Pi+2,j-N-Pi+2,j-1的中間誤差累積值,并一次寫入誤差行存儲(chǔ)器中的相應(yīng)位置,其中誤差行存儲(chǔ)器某一位置的寫入數(shù)據(jù)為誤差分配寄存器堆中的擴(kuò)散到該點(diǎn)的所有誤差分配值之和加上當(dāng)前N個(gè)相鄰像素處理產(chǎn)生的擴(kuò)散到該位置的誤差分配值之和再加上該位置的誤差累積值的總和。
為了實(shí)現(xiàn)本發(fā)明的另外一個(gè)目的,本發(fā)明的技術(shù)方案是一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的裝置,該裝置(1)包括誤差行存儲(chǔ)器(2)及與其相連的誤差行存儲(chǔ)器控制電路(4),此外,該裝置還設(shè)有網(wǎng)點(diǎn)生成器(6),誤差分配/累積寄存器堆(3)及與其相連的誤差分配/累積寄存器堆控制電路(5);所述的網(wǎng)點(diǎn)生成器(6)由N組網(wǎng)點(diǎn)生成電路(10)構(gòu)成,N≥2,每組網(wǎng)點(diǎn)生成電路(10)由灰度生成電路(7)及與其相連的閾值比較電路(8)和誤差生成電路(9)構(gòu)成,每組網(wǎng)點(diǎn)生成電路(10)負(fù)責(zé)產(chǎn)生一個(gè)最終的網(wǎng)點(diǎn)及產(chǎn)生該點(diǎn)對其周圍像素點(diǎn)的誤差分配值;其中,所述的每組網(wǎng)點(diǎn)生成電路(10)中的誤差生成電路(9)與該組網(wǎng)點(diǎn)生成電路后面組網(wǎng)點(diǎn)生成電路中的灰度生成電路(7)及誤差行存儲(chǔ)器控制電路(4)和誤差分配/累積寄存器堆控制電路(5)直接相連;所述誤差行存儲(chǔ)器(2)用于存儲(chǔ)像素點(diǎn)的最終誤差累積值以及像素點(diǎn)的中間誤差累積值;所述誤差分配/累積寄存器堆(3)包括誤差分配寄存器堆和誤差累積寄存器堆,所述誤差分配寄存器堆用于暫存像素點(diǎn)對其周圍點(diǎn)的誤差分配值,所述誤差累積寄存器堆用于暫存從誤差行存儲(chǔ)器中讀出的像素點(diǎn)的中間誤差累積值。
進(jìn)一步,所述每組網(wǎng)點(diǎn)生成電路(10)中的灰度生成電路(7)的輸入端在與源像素、誤差行存儲(chǔ)器控制電路(4)、誤差分配/累積寄存器堆控制電路(5)連接的同時(shí),還連接該組網(wǎng)點(diǎn)生成電路前面組網(wǎng)點(diǎn)生成電路中的誤差生成電路,用來產(chǎn)生源像素經(jīng)過誤差擴(kuò)散后的最終灰度值;其輸出端與閾值比較電路(8)和誤差生成電路(9)連接,用來將閾值和最終灰度值比較產(chǎn)生最終網(wǎng)點(diǎn)和計(jì)算出當(dāng)前處理像素對其周圍點(diǎn)的誤差分配值。
更進(jìn)一步,誤差分配/累積寄存器堆(3)采用由觸發(fā)器組成的寄存器陣列實(shí)現(xiàn),所述的誤差分配寄存器堆保存的是對當(dāng)前處理的N個(gè)相鄰像素及對產(chǎn)生的下一行N個(gè)相鄰像素的最終誤差累積值都有誤差分配的當(dāng)前處理像素之前已處理的所有像素的全部誤差分配值;所述的誤差累積寄存器堆保存的是從誤差行存儲(chǔ)器中讀出的當(dāng)前處理的N個(gè)相鄰像素正對的下面一行相鄰N個(gè)位置上的誤差累積值,該誤差累積值為中間誤差累積值。
更進(jìn)一步,所述誤差行存儲(chǔ)器控制電路(4)由讀地址寄存器,寫地址寄存器,讀寫控制電路及寫入數(shù)據(jù)生成電路組成,其中讀地址寄存器和寫地址寄存器由當(dāng)前處理像素中第一個(gè)像素的列號(hào)來產(chǎn)生,一次讀出誤差行存儲(chǔ)器中與當(dāng)前同時(shí)處理的N個(gè)相鄰像素對應(yīng)位置及下面行正對位置的誤差累積值;寫入數(shù)據(jù)的生成電路則由加法器組成,其中加法器的輸入來自于誤差累積值、所有當(dāng)前像素處理后產(chǎn)生的誤差分配值及誤差分配寄存器堆中保存的相關(guān)誤差分配值。
更進(jìn)一步,所述誤差行存儲(chǔ)器控制電路(4)連接到誤差行存儲(chǔ)器(2)用來產(chǎn)生誤差行存儲(chǔ)器的讀寫地址、讀寫控制信號(hào)及讀寫數(shù)據(jù),誤差行存儲(chǔ)器控制電路(4)的輸入來自包括當(dāng)前處理像素中首個(gè)像素的坐標(biāo)、誤差分配/累積寄存器堆控制電路(5)及每一組網(wǎng)點(diǎn)生成電路(10)的誤差生成電路(9)。
更進(jìn)一步,所述誤差分配/累積寄存器堆控制電路(5)由n個(gè)多路器組成,其中n為誤差分配/累積寄存器堆中的寄存器個(gè)數(shù),用來產(chǎn)生誤差分配/累積寄存器堆(3)的輸入及控制信號(hào),從而完成一次處理周期內(nèi)誤差分配/累積寄存器堆(3)的一次更新及每一行開始時(shí)的初始化清零。多路器的輸入包括所有當(dāng)前處理像素產(chǎn)生的誤差分配值,所有當(dāng)前誤差累積值,當(dāng)前誤差分配/累積寄存器堆中的原值,多路器的輸出為誤差分配/累積寄存器堆中寄存器的更新值。
更進(jìn)一步,所述誤差分配/累積寄存器堆控制電路(5)輸入端與每一組網(wǎng)點(diǎn)生成電路(10)的誤差生成電路(9)、誤差行存儲(chǔ)器控制電路(4)和誤差分配/累積寄存器堆(3)相連。
本發(fā)明的效果在于在數(shù)字圖像半色調(diào)領(lǐng)域,利用基于誤差擴(kuò)散的方法產(chǎn)生調(diào)頻網(wǎng)點(diǎn)時(shí),通過本發(fā)明所述的方法和裝置采用專用硬件電路來實(shí)現(xiàn)每次同時(shí)處理多個(gè)像素,產(chǎn)生多位網(wǎng)點(diǎn),同時(shí)更新誤差行多個(gè)相鄰位置的誤差累積值,并且只需對誤差行進(jìn)行一次讀一次寫操作,大大提高了調(diào)頻網(wǎng)點(diǎn)的產(chǎn)生速度。
圖1A是基于Jarvis算法且“S”形掃描時(shí)奇數(shù)行的誤差擴(kuò)散原理示意圖;圖1B是基于Jarvis算法且“S”形掃描時(shí)偶數(shù)行的誤差擴(kuò)散原理示意圖;圖1C、圖1D是基于Jarvis算法的誤差擴(kuò)散分配示意圖;圖2是本發(fā)明所述的同時(shí)處理同行多個(gè)相鄰像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置的框圖;圖3是本發(fā)明所述裝置中一組網(wǎng)點(diǎn)生成電路的框圖;圖4A是本發(fā)明具體實(shí)施例-基于Jarvis算法,采用同時(shí)處理同行2個(gè)相鄰像素的方法處理一個(gè)圖像的流程圖;圖4B是本發(fā)明具體實(shí)施例-基于Jarvis算法且同時(shí)處理同行2個(gè)相鄰像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置的框圖;圖5A是本發(fā)明具體實(shí)施例-基于Jarvis算法且同時(shí)處理同行2個(gè)相鄰像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置中一個(gè)圖像寬度為8個(gè)像素的誤差行存儲(chǔ)器示意圖;圖5B是所處理圖像中某相鄰三行部分像素點(diǎn)的示意圖;圖6是本發(fā)明具體實(shí)施例-基于Jarvis算法且同時(shí)處理同行2個(gè)相鄰像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置中的誤差分配/累積寄存器堆示意圖;圖7是本發(fā)明裝置具體實(shí)施例-基于Jarvis算法且同時(shí)處理同行2個(gè)相鄰像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置中的灰度生成電路I的框圖;圖8是本發(fā)明裝置具體實(shí)施例-基于Jarvis算法且同時(shí)處理同行2個(gè)相鄰像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置中的灰度生成電路II的框圖;圖9是本發(fā)明具體實(shí)施例-基于Jarvis算法且同時(shí)處理同行2個(gè)相鄰像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置中的誤差分配/累積寄存器堆控制電路中多路器的框圖;圖10是本發(fā)明具體實(shí)施例-基于Jarvis算法且同時(shí)處理同行2個(gè)相鄰像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置中的誤差分配/累積寄存器堆數(shù)據(jù)更新過程示意圖;圖11是本發(fā)明具體實(shí)施例-基于Jarvis算法且同時(shí)處理同行2個(gè)相鄰像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置中的誤差行存儲(chǔ)器控制電路的框圖;圖12是本發(fā)明具體實(shí)施例-基于Jarvis算法且同時(shí)處理同行2個(gè)相鄰像素時(shí)誤差行存儲(chǔ)器的讀寫過程示意圖。
具體實(shí)施例方式
下面結(jié)合說明書附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步地描述。
首先介紹本發(fā)明的執(zhí)行誤差擴(kuò)散的裝置所用到的基本部件。
在誤差擴(kuò)散中,每個(gè)點(diǎn)對其周圍的點(diǎn)都有誤差擴(kuò)散,相應(yīng)地,對于當(dāng)前處理點(diǎn)來說,也會(huì)被周圍的點(diǎn)的誤差擴(kuò)散所影響,因此需要處理完影響到當(dāng)前像素點(diǎn)的所有點(diǎn),才能處理當(dāng)前像素點(diǎn)。
以Floyd-Steinberg算法為例,由于一個(gè)像素點(diǎn)的誤差擴(kuò)散到其周圍四個(gè)點(diǎn),因此容易得到一個(gè)規(guī)律,即,任意一個(gè)像素點(diǎn)僅被其周圍的4個(gè)點(diǎn)的誤差擴(kuò)散所影響。也就是說,假設(shè)一個(gè)圖像由n行m列個(gè)像素點(diǎn)組成,i為行數(shù),j為列數(shù)(以后均表示相同意義),則在處理完第i-1行的點(diǎn)Pi-1,j+1時(shí),第i-1行的所有像素點(diǎn)匯聚到像素點(diǎn)Pi,j上的誤差擴(kuò)散就已經(jīng)可以計(jì)算出來了。因此在第i-1行的其余的點(diǎn)還沒有全部處理完之前,需要一個(gè)存儲(chǔ)器來保存第i-1行中的點(diǎn)對像素點(diǎn)Pi,j的誤差累積值,以便在處理第i行的點(diǎn)時(shí)可以將其取出并用于計(jì)算Pi,j的網(wǎng)點(diǎn)值和它對周圍的像素的誤差擴(kuò)散。由于圖像由多行像素點(diǎn)組成,而這樣的存儲(chǔ)器通常按行來存儲(chǔ)各點(diǎn)的誤差累積值,因此,將這樣一個(gè)存儲(chǔ)器稱為誤差行存儲(chǔ)器。本實(shí)施例中,采用SRAM(靜態(tài)隨機(jī)存取存儲(chǔ)器)作為誤差行存儲(chǔ)器。
這樣,當(dāng)計(jì)算某個(gè)像素點(diǎn)的網(wǎng)點(diǎn)值和誤差擴(kuò)散時(shí),在獲取當(dāng)前像素的灰度值后,就可以利用從誤差行存儲(chǔ)器中讀出的上一行的像素點(diǎn)在該點(diǎn)的誤差累積值,再加上當(dāng)前像素的前面的點(diǎn)對該點(diǎn)的誤差擴(kuò)散,得到該點(diǎn)的最終灰度值,再和閾值比較便可生成當(dāng)前像素的網(wǎng)點(diǎn),同時(shí)可以得到其分配給周圍點(diǎn)的誤差值,本發(fā)明中,將每個(gè)像素根據(jù)誤差擴(kuò)散算法分配給相鄰像素的誤差值,也就是前面所說的誤差擴(kuò)散,稱為誤差分配值。
接著,在得到一個(gè)像素點(diǎn)對其周圍點(diǎn)的誤差分配值后,還需要將這些誤差分配值暫存一段時(shí)間以用于處理該像素的誤差擴(kuò)散所影響到的像素點(diǎn)。本發(fā)明利用寄存器組來暫存這些誤差分配值,可以稱這些寄存器組為一個(gè)寄存器堆。
基于相同的道理,由于Jarvis算法在處理當(dāng)前像素時(shí),最多會(huì)對當(dāng)前處理像素后面的2個(gè)點(diǎn)及下面兩行的10個(gè)點(diǎn)產(chǎn)生誤差擴(kuò)散,因此需要保存該行對下面兩行的誤差擴(kuò)散,換個(gè)角度,對于任意一點(diǎn)來說,其最多會(huì)受到上面兩行的10個(gè)點(diǎn)及當(dāng)前行前面的2個(gè)點(diǎn)的影響,如圖1C所示??梢岳斫猓@些影響不能一次計(jì)算出來,而是隨著每行數(shù)據(jù)的處理分批產(chǎn)生的,因此需要將各批產(chǎn)生的誤差累積值保存起來用于生成最后的灰度值。
也就是說,對于任意點(diǎn)Pij來說,首先在處理第i-2行的點(diǎn)Pi-2,j+2時(shí)就產(chǎn)生了第i-2行在該點(diǎn)的一個(gè)誤差累積值,我們將其稱為中間誤差累積值,我們需要在處理下一行(i-1)數(shù)據(jù)之前將其保存在誤差行存儲(chǔ)器中,然后在處理第i-1行的點(diǎn)Pi- 1,j+2時(shí)就產(chǎn)生了第i-1行在該點(diǎn)的一個(gè)誤差累積值,我們需要將以前已經(jīng)保存在誤差行存儲(chǔ)器中的中間誤差累積值讀出并加上第i-1行在該點(diǎn)產(chǎn)生的誤差累積值得到上兩行的一個(gè)總的誤差累積值,我們可以將其稱為最終誤差累積值。
如圖1D所示,在處理完P(guān)ij點(diǎn)*時(shí),第i-1行和第i行對第Pi+1,j-2點(diǎn)@最終誤差累積值和Pi+2,j-2點(diǎn)@’的中間誤差累積值就同時(shí)產(chǎn)生出來了。為了方便起見,我們可以將其作為一個(gè)數(shù)據(jù)包同時(shí)保存在誤差行存儲(chǔ)器中。這樣在計(jì)算點(diǎn)Pi+1,j-2(圖中為@)的最終灰度值時(shí),需要從誤差行存儲(chǔ)器中讀入點(diǎn)Pi+1,j-2的最終誤差累積值,同時(shí)Pi+2,j-2(圖中為@’)的中間誤差累積值也在同一個(gè)數(shù)據(jù)包中被從存儲(chǔ)器中讀出,但是,中間誤差累積值只有在處理完P(guān)i+2,j-2(圖中為@’)的誤差分配值后才能用于計(jì)算最終誤差累積值,因此我們需要將其在寄存器中暫存起來。
為了暫存隨著最終誤差累積值同時(shí)被讀入的中間誤差累積值,用以參加生成新的最終誤差累積值的計(jì)算,還需要設(shè)置新的寄存器堆以保存讀入的中間誤差累積值,本發(fā)明中稱其為誤差累積寄存器堆。
附圖2是本發(fā)明所述的同時(shí)處理相鄰多個(gè)像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置的框圖,該裝置(1)包括誤差行存儲(chǔ)器(2),誤差分配/累積寄存器堆(3),誤差行存儲(chǔ)器控制電路(4),誤差分配/累積寄存器堆控制電路(5),網(wǎng)點(diǎn)生成器(6),共五部分。該裝置由一個(gè)誤差行存儲(chǔ)器(2)用來保存處理過程中的誤差擴(kuò)散結(jié)果,所述的誤差擴(kuò)散結(jié)果包括某些點(diǎn)的最終誤差累積值或中間誤差累積值,由一個(gè)誤差分配/累積寄存器堆(3)用來緩沖中間誤差值,所述的中間誤差值包括誤差分配值或中間誤差累積值;與其相連的誤差行存儲(chǔ)器控制電路(4)和誤差分配/累積寄存器堆控制電路(5)負(fù)責(zé)控制誤差行存儲(chǔ)器(2)和誤差分配/累積寄存器堆(3)的輸入和輸出。該裝置能夠同時(shí)處理同行多個(gè)相鄰像素,產(chǎn)生多位網(wǎng)點(diǎn)。當(dāng)當(dāng)前處理行中先處理的像素對同行其它像素進(jìn)行誤差擴(kuò)散時(shí),總是向后處理的像素進(jìn)行,則本發(fā)明所述的方法和裝置就能夠同時(shí)處理同行多個(gè)相鄰像素,因此該裝置可以滿足誤差擴(kuò)散算法的“S”掃描處理方式,即一行從左到右的順序處理源像素而下一行從右到左的順序處理源像素。
附圖3是本發(fā)明所述裝置中網(wǎng)點(diǎn)生成電路的框圖,網(wǎng)點(diǎn)生成電路(10)由灰度生成電路(7),閾值比較電路(8),誤差生成電路(9)三部分構(gòu)成。其中,灰度生成電路(7)的輸入為源像素值,誤差行存儲(chǔ)器內(nèi)對應(yīng)該像素的最終誤差累積值,該像素同一行前面的相鄰像素對其產(chǎn)生的誤差分配值,輸出則為該像素處理后產(chǎn)生的誤差分配值和最終的網(wǎng)點(diǎn)。本發(fā)明所述裝置同時(shí)處理幾個(gè)像素,就包含這樣的幾組網(wǎng)點(diǎn)生成電路(10)。
下面,以基于Jarvis算法同時(shí)產(chǎn)生兩位網(wǎng)點(diǎn)為例說明本發(fā)明的裝置組成。
附圖4A是采用同時(shí)處理同行2個(gè)相鄰像素的本發(fā)明具體實(shí)施方法處理一個(gè)圖像的流程圖,包括如下步驟步驟1對誤差行存儲(chǔ)器進(jìn)行初始化;步驟2對設(shè)定誤差分配/累積寄存器堆進(jìn)行初始化設(shè)置;步驟3獲取一行2個(gè)相鄰源像素,并根據(jù)當(dāng)前這2個(gè)像素及誤差行存儲(chǔ)器和誤差分配/累積寄存器堆的值產(chǎn)生2位網(wǎng)點(diǎn);步驟4對誤差行存儲(chǔ)器及誤差分配/累積寄存器堆進(jìn)行更新;步驟5判斷是否一行處理結(jié)束,如否,則轉(zhuǎn)入步驟3,如是則轉(zhuǎn)入步驟6;步驟6判斷是否圖像處理結(jié)束,如否,則轉(zhuǎn)入步驟2,如是處理結(jié)束。
附圖4B是基于Jarvis算法且能夠同時(shí)處理同行2個(gè)相鄰像素的高速調(diào)頻網(wǎng)點(diǎn)生成裝置。如圖4B所示,該裝置(11)包括誤差行存儲(chǔ)器(12),誤差分配/累積寄存器堆(13),誤差行存儲(chǔ)器控制電路(14),誤差分配/累積寄存器堆控制電路(15),灰度生成電路I(16),閾值比較電路I(17),誤差生成電路I(18),灰度生成電路II(19),閾值比較電路II(20),誤差生成電路II(21)共十部分。該裝置中灰度生成電路I(16),閾值比較電路I(17),誤差生成電路I(18)構(gòu)成第一組網(wǎng)點(diǎn)生成電路(10);該裝置中灰度生成電路II(19),閾值比較電路II(20),誤差生成電路II(21)構(gòu)成第二組網(wǎng)點(diǎn)生成電路(10)。
其中,所述灰度生成電路I(16)用來產(chǎn)生源像素1的最終灰度值,它的輸入連接到源像素1、誤差行存儲(chǔ)器控制電路(14)和誤差分配/累積寄存器堆控制電路(15),它的輸出則提供給閾值比較電路I(17)和誤差生成電路I(18)。
所述灰度生成電路II(19)用來產(chǎn)生源像素2的最終灰度值,它的輸入連接到源像素2、誤差行存儲(chǔ)器控制電路(14)和誤差分配/累積寄存器堆控制電路15和誤差生成電路I(18),它的輸出則提供給閾值比較電路II(20)和誤差生成電路II(21)。
所述誤差行存儲(chǔ)器(12)是用來存儲(chǔ)最終誤差累積值和中間誤差累積值,它連接到誤差行存儲(chǔ)器控制電路(14)并由其控制。
所述誤差分配/累積寄存器堆13由硬件觸發(fā)器組成,用來緩沖中間誤差分配值,它連接到誤差分配/累積寄存器堆控制電路15并由其控制。
在上述裝置中,之所以能同時(shí)處理2個(gè)相鄰像素,產(chǎn)生2位網(wǎng)點(diǎn),是因?yàn)閮山M網(wǎng)點(diǎn)生成電路之間存在緊密的聯(lián)系,即將像素1的誤差生成電路I(18)輸出的4個(gè)誤差分配值中分配給像素2的值直接輸入給像素2的灰度生成電路II(19)而不需要將其寄存到誤差分配/累積寄存器堆(13)中,這樣就確保了像素2的最終網(wǎng)點(diǎn)及其誤差分配值的同時(shí)產(chǎn)生。
該裝置工作時(shí),對于像素1,灰度生成電路I(16)根據(jù)當(dāng)前處理像素1的源像素值和誤差行存儲(chǔ)器(12)中所存儲(chǔ)的最終誤差累積值、及誤差分配/累積寄存器堆(13)中暫存的誤差分配值得出最終的像素1的灰度值,然后通過閾值比較電路I(17)產(chǎn)生網(wǎng)點(diǎn)1,同時(shí)最終的像素灰度還通過誤差生成電路I(18)得出像素1對其周圍點(diǎn)的誤差分配值。
同理,對于像素2,灰度生成電路II(19)根據(jù)當(dāng)前處理像素2的源像素值和誤差行存儲(chǔ)器(12)中所存儲(chǔ)的最終誤差累積值、和誤差分配/累積寄存器堆(13)中暫存的誤差分配值以及誤差生成電路I(18)產(chǎn)生的像素1的誤差分配值得出最終的像素2的灰度值,然后通過閾值比較電路II(20)產(chǎn)生網(wǎng)點(diǎn)2,同時(shí)最終的像素2的灰度值還通過誤差生成電路II(21)得出像素2對其周圍點(diǎn)的誤差分配值。
附圖5A是一個(gè)圖像寬度為8個(gè)像素的誤差行存儲(chǔ)器示意圖,其中(i,j)表示第i行,第j列的像素對應(yīng)的誤差行位置。
圖5B是所處理圖像中某相鄰三行部分像素點(diǎn)的示意圖,其中,Pi,j表示第i行、第j列的像素點(diǎn)。
由Jarvis算法可知一個(gè)像素的誤差可以擴(kuò)散到該像素下面兩行的相關(guān)像素,因此,本實(shí)施例中誤差行存儲(chǔ)器設(shè)定為2行。假定當(dāng)前處理的2個(gè)相鄰像素為Pi,5和Pi,6,在同時(shí)處理同行2個(gè)相鄰像素時(shí),需要同時(shí)讀出誤差行存儲(chǔ)器中當(dāng)前2個(gè)相鄰像素Pi,5和Pi,6對應(yīng)位置的最終誤差累積值,以及下一行正對的2個(gè)相鄰位置(對應(yīng)于像素點(diǎn)Pi+1,5和Pi+1,6)的中間誤差累積值,以保證下一行的2個(gè)相鄰位置的值在當(dāng)前像素處理后的誤差行寫入時(shí)被立即更新。
為此誤差行存儲(chǔ)器的數(shù)據(jù)排列方式是以誤差行中一行2個(gè)相鄰位置及下一行正對2個(gè)相鄰位置共4個(gè)位置為一個(gè)單元,以單元為單位順序排列如圖5A所示,誤差行存儲(chǔ)器第一個(gè)單元對應(yīng)源圖像第1行的第1個(gè)像素P1,1和第2個(gè)像素P1,2的最終誤差累積值及第2行的第1個(gè)像素P2,1和第2個(gè)像素P2,2的中間誤差累積值,誤差行存儲(chǔ)器第二個(gè)單元對應(yīng)源圖像第1行的第3像素P1,3和第4個(gè)像素P1,4的最終誤差累積值及第2行的第3像素P2,3和第4個(gè)像素P2,4對應(yīng)的中間誤差累積值,以此類推,誤差行最后一個(gè)單元對應(yīng)源圖像第一行的第7個(gè)像素P1,7和第8個(gè)像素P1,8的最終誤差累積值及第2行的第7個(gè)像素P2,7和第8個(gè)像素P2,8的中間誤差累積值。
誤差行存儲(chǔ)器的總線寬度要求能夠一次讀出/寫入誤差行1個(gè)單元4個(gè)位置的數(shù)據(jù)。假定誤差行一個(gè)像素對應(yīng)位置數(shù)據(jù)寬度8位,則誤差行存儲(chǔ)器的總線寬度就應(yīng)為4*8=32位。由于當(dāng)前行已處理像素在誤差行中對應(yīng)的最終誤差累積值在產(chǎn)生最終網(wǎng)點(diǎn)后就不會(huì)再使用了,因此誤差行寫入的一個(gè)單元中,前兩個(gè)位置是當(dāng)前處理行下一行兩個(gè)相鄰像素對應(yīng)的最終誤差累積值,后兩個(gè)位置是當(dāng)前處理行下二行兩個(gè)相鄰像素對應(yīng)的中間誤差累積值,由此可知,誤差行存儲(chǔ)器的兩行可以重復(fù)使用,誤差行存儲(chǔ)器初始值設(shè)為零。
附圖6是本實(shí)施例中誤差分配/累積寄存器堆示意圖,它包含有當(dāng)前處理像素的同一行之前4個(gè)相鄰像素的所有誤差分配值及讀出的當(dāng)前處理行的下面一行的兩個(gè)中間誤差累積值。
由Jarvis算法可知,誤差行的一個(gè)位置上的誤差可能來自當(dāng)前行的最多5個(gè)相鄰像素,而誤差行中相鄰的兩個(gè)位置上的誤差可能來自當(dāng)前行的最多6個(gè)相鄰像素,該具體實(shí)施例一次處理同一行的2個(gè)相鄰像素,所以誤差分配寄存器堆需要保存同一行中當(dāng)前處理像素之前的4個(gè)相鄰像素的所有誤差分配值,它們與當(dāng)前處理的2個(gè)相鄰像素產(chǎn)生誤差分配值一起,用來更新當(dāng)前處理行下一行和下二行的誤差行存儲(chǔ)器中當(dāng)前處理像素之前的2個(gè)相鄰像素對應(yīng)位置的最終誤差累積值(對應(yīng)像素點(diǎn)Pi+1,3Pi+1,4)和中間誤差累積值(對應(yīng)像素點(diǎn)Pi+2,3Pi+2,4),即更新誤差行中當(dāng)前處理像素對應(yīng)單元之前的一個(gè)單元四個(gè)位置的值。由Jarvis算法容易得知只有當(dāng)前行的下一行的最終誤差值與誤差行存儲(chǔ)器中的原值有關(guān),當(dāng)前行的下面第二行的誤差值在當(dāng)前行開始處理前為0,當(dāng)前行的下一行的誤差行中某兩個(gè)相鄰位置的最終誤差累積值的寫入是在它們后面2個(gè)相鄰像素對應(yīng)的誤差行讀出之后才進(jìn)行的,所以誤差累積寄存器堆中只需要保存2個(gè)當(dāng)前行的下一行的中間誤差累積值即可。
本實(shí)施例中,誤差分配/累積寄存器堆(13)為能夠緩沖相鄰4個(gè)像素的所有誤差分配值及當(dāng)前處理行的下一行的2個(gè)中間誤差累積值的寄存器堆,其中設(shè)Pi,5和Pi,6為兩個(gè)相鄰的當(dāng)前處理像素,Pi,mDj,(m=1..4,j’=1...4)表示像素Pi,5和Pi,6同一行前面4個(gè)相鄰像素Pi,1-Pi,4的所有誤差分配值,Pi,3L1、Pi,4L1則表示讀出的Pi,3、Pi,4位置上對應(yīng)的下一行的誤差行存儲(chǔ)器中的中間誤差累積值。
本實(shí)施例中,依據(jù)當(dāng)前獲取的同行2個(gè)相鄰源像素及誤差行存儲(chǔ)器和誤差分配/累積寄存器堆的值產(chǎn)生2位網(wǎng)點(diǎn)時(shí)采用如下方法,包括如下步驟1)獲取第i行的2個(gè)相鄰源像素,假定這2個(gè)當(dāng)前處理像素為P1,5和Pi,6。
2)從誤差行存儲(chǔ)器中一次讀出對應(yīng)當(dāng)前2個(gè)相鄰源像素Pi,5和Pi,6位置的最終誤差累積值及下面行(第i+1行)正對位置上Pi+1,5和Pi+1,6的中間誤差累積值,即誤差行存儲(chǔ)器一個(gè)單元4個(gè)位置的誤差累積值,因?yàn)檎`差行是按單元存儲(chǔ)的,1個(gè)位置的誤差累積值對應(yīng)一個(gè)存儲(chǔ)器單元,當(dāng)前處理的2個(gè)相鄰像素Pi,5和Pi,6所對應(yīng)的誤差累積值是最終誤差累積值,設(shè)為L01和L02,當(dāng)前處理的2個(gè)相鄰像素下方一行Pi+1,5和Pi+1,6所對應(yīng)的誤差累積值為中間誤差累積值,設(shè)為L11和L12;3)對于當(dāng)前處理像素中的第1個(gè)像素Pi,5,由誤差分配/累積寄存器堆的內(nèi)容計(jì)算出當(dāng)前處理像素的同一行的所有以前的像素處理所產(chǎn)生的誤差分配到當(dāng)前處理像素中的第1個(gè)像素Pi,5的誤差值的和S1;將當(dāng)前處理像素中的第1個(gè)像素Pi,5對應(yīng)位置上的最終誤差累積值L01加上S1,再和當(dāng)前處理像素中的第1個(gè)像素的源像素值相加得出最終灰度值,將該值和閾值比較即可產(chǎn)生與第1個(gè)像素Pi,5對應(yīng)的最終網(wǎng)點(diǎn)1并計(jì)算該點(diǎn)對其周圍點(diǎn)的誤差分配值,同時(shí)將其對第2個(gè)像素點(diǎn)Pi,6的誤差分配值傳送給第2個(gè)像素點(diǎn)Pi,6;同時(shí),對于當(dāng)前處理像素中的第2個(gè)像素Pi,6,由誤差分配寄存器堆的內(nèi)容計(jì)算出當(dāng)前處理像素的同一行的所有以前的非當(dāng)前處理像素處理所產(chǎn)生的誤差分配到當(dāng)前處理像素中的第2個(gè)像素的誤差分配值再加上當(dāng)前處理像素中的第1個(gè)像素處理所產(chǎn)生的分配給第二個(gè)像素的誤差分配值之和為S2。S1等于Pi,3D3+Pi,4D4,其中Pi,3D3、Pi,4D4分別表示Pi,3、Pi,4兩個(gè)像素對第1個(gè)像素Pi,5所產(chǎn)生的誤差分配,S2等于P4D3+P5D4,其中,Pi,4D3、Pi,5D4分別表示Pi,4、Pi,5兩個(gè)像素對第2個(gè)像素Pi,6所產(chǎn)生的誤差分配。
將當(dāng)前處理像素中的第2個(gè)像素Pi,6對應(yīng)位置上的最終誤差累積值L02加上S2,再和當(dāng)前處理像素中的第2個(gè)像素的源像素值相加得出最終像素值,將該值和閾值比較即可產(chǎn)生與第2個(gè)像素Pi,6對應(yīng)的最終網(wǎng)點(diǎn)2。
附圖7是本實(shí)施例中的灰度生成電路I的框圖,它由一個(gè)加法器產(chǎn)生像素1的最終灰度值,其中像素1的最終灰度值等于源像素1的值加上從誤差行存儲(chǔ)器中讀出的對應(yīng)該位置的當(dāng)前最終誤差累積值再加上誤差分配寄存器堆中緩沖的同行以前像素對當(dāng)前像素1的誤差分配值?;叶壬呻娐稩(16)的邏輯表達(dá)式為像素1的最終像素灰度=源像素值1+L01+Pi,4D4+Pi,3D3;附圖8是本實(shí)施例中灰度生成電路II的框圖,它由一個(gè)加法器產(chǎn)生像素2的最終灰度值,其中像素2的最終灰度值等于源像素2的值加上從誤差行中讀出的對應(yīng)該位置的當(dāng)前最終誤差累積值加上誤差分配寄存器堆中緩沖的同行以前像素對當(dāng)前像素2的誤差分配值再加上處理當(dāng)前像素1產(chǎn)生的對當(dāng)前像素2的誤差分配值?;叶壬呻娐稩I(19)的邏輯表達(dá)式為像素2的最終像素灰度=源像素值2+L02+Pi,5D4+Pi,4D3。
結(jié)合本實(shí)施例中所述的具體實(shí)施裝置來說,閾值比較電路I(17)用來將灰度生成電路I(16)所產(chǎn)生的灰度與閾值進(jìn)行比較產(chǎn)生網(wǎng)點(diǎn)1,它的輸入連接到灰度生成電路I(16),輸出即是最終網(wǎng)點(diǎn)1;閾值比較電路II(20)用來將灰度生成電路II(19)所產(chǎn)生的灰度與閾值進(jìn)行比較產(chǎn)生網(wǎng)點(diǎn)2,它的輸入連接到灰度生成電路II(19),輸出即是最終網(wǎng)點(diǎn)2;誤差生成電路I(18)用來將由灰度生成電路I(16)所產(chǎn)生的灰度通過計(jì)算或查表而產(chǎn)生當(dāng)前像素1的誤差分配值,它的輸入連接到灰度生成電路I(16),輸出將提供給誤差行存儲(chǔ)器控制電路(14)和誤差分配/累積寄存器堆控制電路(15)和灰度生成電路II(19);誤差生成電路II(21)用來將由灰度生成電路II(19)所產(chǎn)生的灰度通過計(jì)算或查表而產(chǎn)生當(dāng)前像素2的誤差分配值,它的輸入連接到灰度生成電路II(19),輸出將提供給誤差行存儲(chǔ)器控制電路(14)和誤差分配/累積寄存器堆控制電路(15)。
本實(shí)施例中更新誤差行存儲(chǔ)器及誤差分配/累積寄存器堆時(shí)采用如下方法,包括如下步驟21)根據(jù)最終像素值和閾值得出當(dāng)前2個(gè)相鄰像素Pi,5和Pi,6產(chǎn)生的誤差分配到所有相鄰像素的分配值,Pi,5的分配值是D11、D12、D13、D14,Pi,6的分配值是和D21、D22、D23、D24。
2)誤差分配寄存器堆中每2個(gè)相鄰像素的誤差分配值更新為后2個(gè)相鄰像素的對應(yīng)值,而最后2個(gè)相鄰像素的誤差分配值更新為Pi,5的分配值D11、D12、D13、D14和Pi,6的分配值D21、D22、D23、D24,本實(shí)施例中,即將Pi,1Dj,賦值為Pi,3Dj,將Pi,2Dj,賦值為Pi,4Dj’,而原Pi,3Dj’,Pi,4Dj,則分別賦值為Pi,5的分配值D11、D12、D13、D14和Pi,6的分配值D21、D22、D23、D24,(i=1..2,j’=1..4);結(jié)合本實(shí)施例中的具體實(shí)施裝置中來說,誤差分配/累積寄存器堆控制電路(15)用來控制誤差分配/累積寄存器堆(13)的存取和更新,誤差分配寄存器堆緩沖當(dāng)前處理像素前面4個(gè)相鄰像素的所有誤差分配值,誤差累積寄存器堆緩沖前面2個(gè)相鄰像素對應(yīng)當(dāng)前行下一行的中間誤差累積值,一次更新相鄰兩個(gè)像素的誤差分配值和中間誤差累積值。誤差分配/累積寄存器堆控制電路(15)的輸入連接到誤差生成電路I(18)、誤差生成電路II(21)、誤差分配/累積寄存器堆(13)及誤差行存儲(chǔ)器控制電路(14),誤差分配/累積寄存器堆控制電路(15)的輸出連接到誤差分配/累積寄存器堆(13)和灰度生成電路I(16)和灰度生成電路II(19)和誤差行存儲(chǔ)器控制電路(14)。
3)誤差累積寄存器堆中原2個(gè)相鄰像素Pi+1,3和Pi+1,4的中間誤差累積值更新為當(dāng)前2個(gè)相鄰像素Pi,5和Pi,6對應(yīng)位置的下面行(第i+1行)上Pi+1,5和Pi+1,6的中間誤差累積值,將與原2個(gè)相鄰像素Pi+1,3和Pi+1,4對應(yīng)的誤差累積值Pi+1,3L1和Pi+1,4L1分別賦值為L11和L12,即更新后的L11和L12分別對應(yīng)的是第i+1行上Pi+1,5和Pi+1,6的中間誤差累積值。
附圖9是本發(fā)明的裝置中的誤差分配/累積寄存器堆控制電路中多路器的框圖,誤差分配/累積寄存器堆控制電路通過n個(gè)多路選擇器來完成在每個(gè)處理周期內(nèi)誤差分配/累積寄存器堆的一次更新及每一行開始時(shí)的初始化清零,其中n為誤差分配/累積寄存器堆中的寄存器個(gè)數(shù),即對應(yīng)誤差分配/累積寄存器堆中的每一個(gè)寄存器都包含有結(jié)構(gòu)相同的一個(gè)多路器,本實(shí)施例中,n=18。其中多路器的輸入包括當(dāng)前處理像素的所有誤差分配值或處理當(dāng)前像素讀出的中間誤差累積值以及誤差分配/累積寄存器堆的原值,多路器的輸出即誤差分配/累積寄存器堆中寄存器的更新值。
附圖10是本實(shí)施例中的誤差分配/累積寄存器數(shù)據(jù)更新過程示意圖,Pi,jDj,表示第i行第j個(gè)像素的誤差分配值,當(dāng)?shù)贸霎?dāng)前2個(gè)相鄰像素誤差分配值D11、D12、D13、D14和D21、D22、D23、D24及讀出的當(dāng)前行下一行中間誤差累積值L11和L12后,對應(yīng)于Pi,3Dj’和Pi,4Dj’多路器分別輸出為D11、D12、D13、D14和D21、D22、D23、D24;對應(yīng)于Pi,3L1和Pi,4L1,多路器分別輸出為L11和L12,對應(yīng)于Pi,1Dj’和Pi,2Dj’,多路器分別輸出為Pi,3Dj’和Pi,4Dj’(j’=1..4)。
4)根據(jù)步驟2)中誤差分配寄存器堆的內(nèi)容和步驟3)中誤差累積寄存器堆的內(nèi)容和當(dāng)前2個(gè)相鄰像素Pi,5和Pi,6處理后的誤差分配值得出Pi+1,3、Pi+1,4的最終誤差累積值和Pi+2,3和Pi+2,4的中間誤差累積值并一次寫入誤差行存儲(chǔ)器中。當(dāng)前處理像素Pi,5和Pi,6處理完成時(shí),則可得出在當(dāng)前處理像素Pi,5和Pi,6前2個(gè)相鄰像素Pi,3和Pi,4對應(yīng)的誤差行單元4個(gè)位置(即Pi+1,3、Pi+1,4、Pi+2,3和Pi+2,4)的所有最終寫入數(shù)據(jù)Pi+1,3L11、Pi+1,4L12、Pi+2,3L21和Pi+2,4L22,其中PL11、PL12表示與Pi+1,3、Pi+1,4對應(yīng)的最終誤差累積值,PL21和PL22則分別表示與Pi+2,3和Pi+2,4對應(yīng)的中間誤差累積值;具體來說,其中Pi+1,3L11=Pi,3L1+Pi,1D2+Pi,2D3+Pi,3D4+Pi,4D3+Pi,5D2,Pi+1,4L12=Pi,4L1+Pi,2D2+Pi,3D3+Pi,4D4+Pi,5D3+Pi,6D2,Pi+2,3L21=Pi,1D1+Pi,2D2+Pi,3D3+Pi,4D2+Pi,5D1,Pi+2,4L22=Pi,2D1+Pi,3D2+Pi,4D3+Pi,5D2+Pi,6D1。
附圖11是本發(fā)明裝置中的誤差行存儲(chǔ)器控制電路(14)的框圖,它由讀地址寄存器,寫地址寄存器,讀寫控制電路及寫入數(shù)據(jù)生成電路器組成,其中讀地址寄存器,寫地址寄存器由當(dāng)前處理像素中第1個(gè)像素Pi,5的坐標(biāo)生成,寫入數(shù)據(jù)生成電路則由加法器組成,它根據(jù)當(dāng)前兩個(gè)相鄰的處理像素Pi,5的誤差累積值、Pi,6誤差累積值、處理Pi,5產(chǎn)生的誤差分配值、處理Pi,6產(chǎn)生的誤差分配值和相關(guān)中間誤差累積值一起得出一次誤差行的寫入數(shù)據(jù),讀寫控制電路則產(chǎn)生誤差行存儲(chǔ)器的讀寫控制信號(hào)。
本實(shí)施例中,如當(dāng)前處理像素中第1個(gè)像素Pi,5的列號(hào)為j=5,則讀地址寄存器=4*5=20,一次讀出以當(dāng)前讀地址開始的一個(gè)單元連續(xù)4個(gè)位置的數(shù)據(jù)L01、L02、L11和L12,寫地址寄存器則為4*5-8=12,誤差行寫入數(shù)據(jù)生成電路產(chǎn)生當(dāng)前行下面一行和下面二行的各2個(gè)相鄰位置的寫入數(shù)據(jù)Pi+1,3L11和Pi+1,4L12及Pi+2,3L21和Pi+2,4L22,假定當(dāng)前處理像素為Pi,5和Pi,6,當(dāng)前2個(gè)相鄰像素處理后的誤差值D11、D12、D13、D14和D21、D22、D23、D24用Pi,5Dj’和Pi,6Dj’代表,則其中Pi+1,3L11=Pi,3L3+Pi,1D2+Pi,2D3+Pi,3D4+Pi,4D3+Pi,5D2,Pi+1,4L12=Pi,4L1+Pi,2D2+Pi,3D3+Pi,4D4+Pi,5D3+Pi,6D2,Pi+2,3L21=Pi,1D1+Pi,2D2+Pi,3D3+Pi,4D2+Pi,5D1,Pi+2,4L22=Pi,2D1+Pi,3D2+Pi,4D3+Pi,5D2+Pi,6D1。
附圖12是本實(shí)施例中誤差行存儲(chǔ)器的讀寫過程示意圖。Pi,5和Pi,6為當(dāng)前處理2個(gè)相鄰像素,如采用現(xiàn)有技術(shù),每次只能處理1個(gè)像素,并且只能更新誤差行一列2個(gè)位置的數(shù)據(jù),對于像素Pi,5和像素Pi,6,則需要兩次相同的處理過程,而采用本發(fā)明所述的方法和裝置,當(dāng)同時(shí)處理當(dāng)前像素Pi,5和像素Pi,6時(shí),能夠一次從誤差行存儲(chǔ)器中讀出一個(gè)單元四個(gè)值即當(dāng)前像素Pi,5和像素Pi,6對應(yīng)的最終誤差累積值L01和L02及下一行正對位置Pi+1,5和像素Pi+1,6的中間誤差累積值L11和L12,其中L01用來產(chǎn)生像素Pi,5的最終灰度,L02用來產(chǎn)生像素Pi,6的最終灰度,而L11和L12被緩沖并存儲(chǔ)在誤差累積寄存器堆中,在以后用來產(chǎn)生與該位置對應(yīng)的PL11和PL12(最終誤差累積值)。當(dāng)當(dāng)前處理像素Pi,5和像素Pi,6的誤差分配值產(chǎn)生后,誤差行存儲(chǔ)器中另一單元中的對應(yīng)的四個(gè)像素的誤差累積值Pi+1,3L11、Pi+1,4L12、Pi+2,3L21和Pi+2,4L22的值就可以被確定并寫入,在該行以后的像素處理中不會(huì)再更改誤差行中這些位置的內(nèi)容,同時(shí)因?yàn)橛绊慞i+1,3L11、Pi+1,4L12、Pi+2,3L21和Pi+2,4L22最終誤差累積值的非當(dāng)前處理像素的相關(guān)誤差值被緩沖在誤差分配/累積寄存器堆中,所以不需要再次讀取誤差行存儲(chǔ)器即可完成Pi+1,3L11、Pi+1,4L12、Pi+2,3L21和Pi+2,4L22的寫入。因?yàn)楸景l(fā)明中誤差行的總線寬度至少為誤差行4個(gè)位置的數(shù)據(jù)寬度,因此讀一個(gè)單元中的四個(gè)值L01、L02、L11和L12(分別對應(yīng)附圖5B中的Pi,5、Pi,6、Pi+1,5、Pi+1,6)只需一次存儲(chǔ)器讀操作而寫另一個(gè)單元中的四個(gè)值Pi+1,3L11、Pi+1,4L12、Pi+2,3L21和Pi+2,4L22(分別對應(yīng)附圖5B中的Pi+1,3、Pi+1,4、Pi+2,3、Pi+2,4)也只需一次存儲(chǔ)器寫操作,可見采用本發(fā)明裝置,同時(shí)處理2個(gè)相鄰像素,只需要一次存儲(chǔ)器讀來讀出L01、L02、L11和L12及一次存儲(chǔ)器寫操作寫入Pi+1,3L11、Pi+1,4L12、Pi+2,3L21和Pi+2,4L22即可。大大提高了網(wǎng)點(diǎn)產(chǎn)生的速度。
結(jié)合本發(fā)明的裝置來說,誤差行存儲(chǔ)器控制電路(14)用來控制誤差行存儲(chǔ)器(12)的讀寫,本發(fā)明與現(xiàn)有裝置不同的是它一次更新誤差行2個(gè)相鄰像素對應(yīng)位置的誤差累積值。它的輸入來自誤差生成電路I(18)和誤差生成電路II(21)及誤差分配/累積寄存器堆控制電路(15),它的輸出連接到灰度生成電路I(16)和灰度生成電路II(19),同時(shí)它還和誤差行存儲(chǔ)器(12)相連。
如果需要同時(shí)產(chǎn)生N位網(wǎng)點(diǎn),其裝置構(gòu)成與2位網(wǎng)點(diǎn)相似,如圖2所示,其不同之處在于具體實(shí)現(xiàn)時(shí),所述的網(wǎng)點(diǎn)生成器(6)由N組網(wǎng)點(diǎn)生成電路(10)構(gòu)成。在實(shí)現(xiàn)時(shí),同時(shí)獲取一行N個(gè)相鄰源像素,并根據(jù)當(dāng)前這N個(gè)像素及誤差行存儲(chǔ)器(2)和誤差分配/累積寄存器堆(3)產(chǎn)生N位網(wǎng)點(diǎn),本領(lǐng)域技術(shù)人員應(yīng)該可以理解,還需要增加誤差行存儲(chǔ)器的總線寬度,以滿足一次讀取和存儲(chǔ)數(shù)據(jù)的需要。假設(shè)當(dāng)前同時(shí)處理的像素?cái)?shù)為N個(gè),誤差行存儲(chǔ)器一個(gè)位置的數(shù)據(jù)寬度為W,一個(gè)像素的誤差所能夠擴(kuò)散到的行數(shù)H(包括當(dāng)前行),誤差行總線寬度最小為N×W×(H-1)。
具體來說,依據(jù)當(dāng)前N個(gè)像素的灰度值及誤差行存儲(chǔ)器和誤差分配/累積寄存器堆的值產(chǎn)生N位網(wǎng)點(diǎn)時(shí)所采用的方法包括如下步驟1)N組網(wǎng)點(diǎn)生成電路同時(shí)獲取第i行的N個(gè)相鄰源像素的灰度值,并從誤差行存儲(chǔ)器中一次讀出第i行當(dāng)前N個(gè)相鄰源像素對應(yīng)位置的最終誤差累積值,及第i+1行正對位置的中間誤差累積值;
2)對于當(dāng)前處理的N個(gè)相鄰源像素中的第1個(gè)像素Pi,j,j表示列數(shù),從誤差分配寄存器堆得出同一行的以前所有像素處理所產(chǎn)生的誤差分配到此像素的誤差值之和S1;第1組網(wǎng)點(diǎn)生成電路將當(dāng)前處理像素中的第1個(gè)像素Pi,j對應(yīng)位置上的最終誤差累積值L01加上S1再和步驟1)獲取的第1個(gè)源像素灰度值相加得出第1個(gè)最終像素灰度值,將該值和閥值比較產(chǎn)生第1個(gè)最終網(wǎng)點(diǎn),并計(jì)算該點(diǎn)對周圍點(diǎn)的誤差分配值;同時(shí),對于當(dāng)前處理像素中的第2個(gè)像素Pi,j+1,從誤差分配寄存器堆中直接得出同一行的以前非當(dāng)前處理的所有像素所產(chǎn)生的誤差分配到此像素的誤差分配值之和,再加上當(dāng)前處理像素中第1個(gè)像素Pi,j處理所產(chǎn)生的分配到此像素的誤差分配值,得出總和S2;第2組網(wǎng)點(diǎn)生成電路將當(dāng)前處理像素中第2個(gè)像素Pi,j+1對應(yīng)位置上的最終誤差累積值L02加上S2再和第2個(gè)源像素灰度值相加得出第2個(gè)最終像素灰度值,將該值和閥值比較產(chǎn)生最終網(wǎng)點(diǎn)2,并計(jì)算該點(diǎn)對周圍點(diǎn)的誤差分配值;以此類推,同時(shí),對于當(dāng)前處理像素中的第M個(gè)像素Pi,j+M-1,2<M≤N,依據(jù)誤差擴(kuò)散算法中處理一個(gè)像素產(chǎn)生的誤差最多向同行幾個(gè)相鄰像素進(jìn)行誤差擴(kuò)散,確定誤差分配寄存器堆中是否存在能夠?qū)⒄`差分配給第M個(gè)像素的同行前面非當(dāng)前處理像素的誤差分配值,若存在,則從誤差分配寄存器堆中直接得出分配到第M個(gè)像素的誤差分配值之和S’M,再將第M個(gè)像素之前的當(dāng)前處理像素中的像素產(chǎn)生的所有誤差分配到第M個(gè)像素的誤差分配值相加之和為S”M,S’M與S”M相加得出同行第M個(gè)像素之前所有像素分配到第M個(gè)像素誤差分配值總和SM;第M組網(wǎng)點(diǎn)生成電路將當(dāng)前處理像素中第M個(gè)像素Pi,j+M-1對應(yīng)位置上的最終誤差累積值L0M加上SM再和第M個(gè)源像素灰度值相加得出第M個(gè)最終像素灰度值,將該值和閥值比較產(chǎn)生最終網(wǎng)點(diǎn)M,并計(jì)算該點(diǎn)對周圍點(diǎn)的誤差分配值。
當(dāng)處理完當(dāng)前N個(gè)相鄰像素后,更新誤差行存儲(chǔ)器和誤差分配/累積寄存器堆中的值采用的方法包括如下步驟1)根據(jù)當(dāng)前處理的每個(gè)像素的各自的最終像素灰度值和閥值得出當(dāng)前N個(gè)相鄰像素產(chǎn)生的誤差分配到所有相鄰像素的值D1j’,D2j’..DNj’,Dkj’是指第K個(gè)像素產(chǎn)生的一組誤差分配值,1≤K≤N。對于Jarvis算法,j’=1...4;2)誤差分配寄存器堆中每N個(gè)相鄰像素的所有誤差分配值為一列,前一列N個(gè)相鄰像素對應(yīng)值更新為后一列N個(gè)相鄰像素的對應(yīng)值,而最后一列N個(gè)像素的誤差分配值更新為當(dāng)前N個(gè)相鄰像素產(chǎn)生的誤差分配到所有相鄰像素的值D1j’,D2j’...DNj’;3)誤差累積寄存器堆中原N個(gè)相鄰像素Pi+1,j-N-Pi+1,j-1的誤差累積值更新為當(dāng)前N個(gè)相鄰像素對應(yīng)位置下一行上N個(gè)相鄰像素Pi+1,j-Pi+1,j+N-1的中間誤差累積值;4)根據(jù)誤差分配/累積寄存器堆的內(nèi)容和當(dāng)前N個(gè)相鄰像素處理產(chǎn)生的誤差分配值,得出當(dāng)前行下面第i+1行的N個(gè)相鄰位置Pi+1,j-N-Pi+1,j-1的最終誤差累積值,和第i+2行的N個(gè)相鄰位置Pi+2,j-N-Pi+2,j-1的中間誤差累積值,并一次寫入誤差行存儲(chǔ)器中的相應(yīng)位置,其中誤差行存儲(chǔ)器某一位置的寫入數(shù)據(jù)為誤差分配寄存器堆中的擴(kuò)散到該點(diǎn)的所有誤差分配值之和加上當(dāng)前N個(gè)相鄰像素處理產(chǎn)生的擴(kuò)散到該位置的誤差分配值之和再加上該位置的誤差累積值的總和。
以上所述僅為本發(fā)明的其中一個(gè)具體實(shí)施例而已,并不用以限制本發(fā)明,如以上用誤差擴(kuò)散到12個(gè)相鄰位置的Jarvis算法來描述本發(fā)明裝置每次同時(shí)生成2位網(wǎng)點(diǎn)的實(shí)施例,但本發(fā)明同樣適用于基于誤差擴(kuò)散原理的,且每次同時(shí)生成多于兩個(gè)網(wǎng)點(diǎn)的裝置,因而凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改,等同替換,改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的方法,包括以下步驟a)初始化誤差行存儲(chǔ)器的值為0,所述誤差行存儲(chǔ)器的值是指像素點(diǎn)的最終誤差累積值以及像素點(diǎn)的中間誤差累積值;b)初始化誤差分配/累積寄存器堆的值為0,所述誤差分配寄存器堆的值是指像素點(diǎn)對其周圍點(diǎn)的誤差分配值,所述誤差累積寄存器堆的值是指從誤差行存儲(chǔ)器中讀出的像素點(diǎn)的中間誤差累積值;c)獲取第一行F組中第一組N個(gè)相鄰源像素的灰度值,并根據(jù)誤差行存儲(chǔ)器和誤差分配/累積寄存器堆的值,通過N組網(wǎng)點(diǎn)生成電路產(chǎn)生N位網(wǎng)點(diǎn),所述F≥1,N≥2;d)更新誤差行存儲(chǔ)器和誤差分配/累積寄存器堆中的值;e)獲取該行中下一組N個(gè)相鄰源像素的灰度值,重復(fù)步驟c、d、e,直到該行的所有像素點(diǎn)處理完畢;f)獲取下一行的第一組N個(gè)相鄰源像素的灰度值,重復(fù)步驟c、d、e、f,直到圖像上的所有像素點(diǎn)處理結(jié)束。
2.如權(quán)利要求1所述的一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的方法,其特征在于步驟a中,對誤差行存儲(chǔ)器進(jìn)行初始化時(shí)還包括以下步驟1)以N個(gè)相鄰位置為單位進(jìn)行誤差行數(shù)據(jù)的組織,同行N個(gè)位置先順序存儲(chǔ),不同行的相同列N個(gè)位置再相鄰存儲(chǔ);2)確定誤差行總線寬度為N*W*(H-1),其中,N為當(dāng)前同時(shí)處理的像素個(gè)數(shù),W為誤差行存儲(chǔ)器一個(gè)位置的數(shù)據(jù)寬度,H為一個(gè)像素的誤差所能夠擴(kuò)散到的包括當(dāng)前處理像素所在行的行數(shù)。
3.如權(quán)利要求1或2所述的一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的方法,其特征在于步驟b中,所述的誤差分配寄存器堆的值是指對當(dāng)前處理的N個(gè)相鄰像素及對產(chǎn)生的下一行N個(gè)相鄰像素的最終誤差累積值都有誤差分配的當(dāng)前處理像素之前已處理的所有像素的全部誤差分配值。所述的誤差累積寄存器堆的值是指從誤差行存儲(chǔ)器中讀出的當(dāng)前處理的N個(gè)相鄰像素正對的下面一行N個(gè)相鄰位置上的中間誤差累積值。
4.如權(quán)利要求3所述的一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的方法,其特征在于步驟c中,依據(jù)當(dāng)前N個(gè)像素的灰度值及誤差行存儲(chǔ)器和誤差分配/累積寄存器堆的值產(chǎn)生N位網(wǎng)點(diǎn)時(shí)所采用的方法包括如下步驟步驟1,首先同時(shí)獲取當(dāng)前N個(gè)相鄰源像素的灰度值,并從誤差行存儲(chǔ)器中讀取該N個(gè)相鄰像素對應(yīng)的最終誤差累積值;步驟2,根據(jù)該組N個(gè)相鄰源像素中第1個(gè)要處理像素點(diǎn)的灰度值、步驟1中從誤差行存儲(chǔ)器中讀取的屬于該點(diǎn)的最終誤差累積值和從誤差分配寄存器堆中讀取相應(yīng)位置的誤差分配值,計(jì)算出該點(diǎn)的最終灰度值以及該點(diǎn)對周圍點(diǎn)的誤差分配值;步驟3,然后依次根據(jù)相鄰的下一個(gè)要處理像素點(diǎn)的灰度值、步驟1中從誤差行存儲(chǔ)器中讀取的屬于該點(diǎn)的最終誤差累積值及從誤差分配寄存器堆中讀取的相應(yīng)位置的誤差分配值,再加上該組N個(gè)相鄰源像素中前面的像素對該點(diǎn)所產(chǎn)生的誤差分配值,計(jì)算出該點(diǎn)的最終灰度值以及該點(diǎn)對周圍點(diǎn)的誤差分配值;步驟4,重復(fù)步驟3,直到該組N個(gè)相鄰源像素都處理完畢;上述各個(gè)步驟處理過程中,當(dāng)計(jì)算出該點(diǎn)對周圍點(diǎn)的誤差分配值后,該點(diǎn)對當(dāng)前處理的N個(gè)相鄰源像素中的后面其他像素點(diǎn)產(chǎn)生的誤差分配值直接傳送給所需要的網(wǎng)點(diǎn)生成電路,而其他誤差分配值則寄存到誤差分配寄存器堆中。
5.如權(quán)利要求4所述的一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的方法,其特征在于步驟1中,從誤差行存儲(chǔ)器中一次讀出第i行當(dāng)前N個(gè)相鄰源像素對應(yīng)位置的最終誤差累積值,及第i+1行正對位置的中間誤差累積值,并將中間誤差累積值緩存到誤差累積寄存器堆,且N組網(wǎng)點(diǎn)生成電路同時(shí)獲取第i行的N個(gè)相鄰源像素的灰度值;對于當(dāng)前處理的N個(gè)相鄰源像素中的第1個(gè)像素Pi,j,j表示列數(shù),從誤差分配寄存器堆得出同一行的以前所有像素處理所產(chǎn)生的誤差分配到此像素的誤差值之和S1;第1組網(wǎng)點(diǎn)生成電路將當(dāng)前處理像素中的第1個(gè)像素Pi,j對應(yīng)位置上的最終誤差累積值L01加上S1再和步驟1獲取的第1個(gè)源像素灰度值相加得出第1個(gè)最終像素灰度值,將該值和閥值比較產(chǎn)生第1個(gè)最終網(wǎng)點(diǎn),并計(jì)算該點(diǎn)對周圍點(diǎn)的誤差分配值;步驟2中,對于當(dāng)前處理像素中的第2個(gè)像素Pi,j+1,從誤差分配寄存器堆中直接得出同一行的以前非當(dāng)前處理的所有像素所產(chǎn)生的誤差分配到此像素的誤差分配值之和,再加上當(dāng)前處理像素中第1個(gè)像素Pi,j處理所產(chǎn)生的分配到此像素的誤差分配值,得出總和S2;第2組網(wǎng)點(diǎn)生成電路將當(dāng)前處理像素中第2個(gè)像素Pi,j+1對應(yīng)位置上的最終誤差累積值L02加上S2再和第2個(gè)源像素灰度值相加得出第2個(gè)最終像素灰度值,將該值和閥值比較產(chǎn)生最終網(wǎng)點(diǎn)2,并計(jì)算該點(diǎn)對周圍點(diǎn)的誤差分配值;步驟3中,以此類推,對于當(dāng)前處理像素中的第M個(gè)像素Pi,j+M-1,2<M≤N,依據(jù)誤差擴(kuò)散算法中處理一個(gè)像素產(chǎn)生的誤差最多向同行幾個(gè)相鄰像素進(jìn)行誤差擴(kuò)散,確定誤差分配寄存器堆中是否存在由第M個(gè)像素同行前面的非當(dāng)前處理像素分配給第M個(gè)像素的誤差分配值,若存在,則從誤差分配寄存器堆中直接得出分配到第M個(gè)像素的誤差分配值之和S’M,再將第M個(gè)像素之前的當(dāng)前處理像素中的像素產(chǎn)生的所有誤差分配到第M個(gè)像素的誤差分配值相加之和為S”M,S’M與S”M相加得出同行第M個(gè)像素之前所有像素分配到第M個(gè)像素誤差分配值總和SM;第M組網(wǎng)點(diǎn)生成電路將當(dāng)前處理像素中第M個(gè)像素Pi,j+M-1對應(yīng)位置上的最終誤差累積值L0M加上SM再和第M個(gè)源像素灰度值相加得出第M個(gè)最終像素灰度值,將該值和閥值比較產(chǎn)生最終網(wǎng)點(diǎn)M,并計(jì)算該點(diǎn)對周圍點(diǎn)的誤差分配值。
6.如權(quán)利要求5所述的一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的方法,其特征在于步驟d中,更新誤差行存儲(chǔ)器和誤差分配/累積寄存器堆中的值采用的方法包括如下步驟1)根據(jù)當(dāng)前處理的每個(gè)像素的各自的最終像素灰度值和閥值得出當(dāng)前N個(gè)相鄰像素產(chǎn)生的誤差分配到所有相鄰像素的值D1j’,D2j’,Dkj’...DNj’,Dkj’是指第K個(gè)像素產(chǎn)生的一組誤差分配值,1≤K≤N。2)誤差分配寄存器堆中每N個(gè)相鄰像素的所有誤差分配值為一列,前一列N個(gè)相鄰像素對應(yīng)值更新為后一列N個(gè)相鄰像素的對應(yīng)值,而最后一列N個(gè)像素的誤差分配值更新為當(dāng)前N個(gè)相鄰像素產(chǎn)生的誤差分配到所有相鄰像素的值D1j’,D2j’...DNj’;3)誤差累積寄存器堆中原N個(gè)相鄰像素Pi+1,j-N-Pi+1,j-1的誤差累積值更新為當(dāng)前N個(gè)相鄰像素對應(yīng)位置下一行上N個(gè)相鄰像素Pi+1,j-Pi+1,j+N-1的中間誤差累積值;4)根據(jù)誤差分配/累積寄存器堆的內(nèi)容和當(dāng)前N個(gè)相鄰像素處理產(chǎn)生的誤差分配值,得出當(dāng)前行下面第i+1行的N個(gè)相鄰位置Pi+1,j-N-Pi+1,j-1的最終誤差累積值,和第i+2行的N個(gè)相鄰位置Pi+2,j-N-Pi+2,j-1的中間誤差累積值,并一次寫入誤差行存儲(chǔ)器中的相應(yīng)位置,其中誤差行存儲(chǔ)器某一位置的寫入數(shù)據(jù)為誤差分配寄存器堆中的擴(kuò)散到該點(diǎn)的所有誤差分配值之和加上當(dāng)前N個(gè)相鄰像素處理產(chǎn)生的擴(kuò)散到該位置的誤差分配值之和再加上該位置的誤差累積值的總和。
7.一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的裝置,該裝置(1)包括誤差行存儲(chǔ)器(2)及與其相連的誤差行存儲(chǔ)器控制電路(4),其特征在于該裝置還設(shè)有網(wǎng)點(diǎn)生成器(6),誤差分配/累積寄存器堆(3)及與其相連的誤差分配/累積寄存器堆控制電路(5);所述的網(wǎng)點(diǎn)生成器(6)由N組網(wǎng)點(diǎn)生成電路(10)構(gòu)成,N≥2,每組網(wǎng)點(diǎn)生成電路(10)由灰度生成電路(7)及與其相連的閾值比較電路(8)和誤差生成電路(9)構(gòu)成,每組網(wǎng)點(diǎn)生成電路(10)負(fù)責(zé)產(chǎn)生一個(gè)最終的網(wǎng)點(diǎn)及產(chǎn)生該點(diǎn)對其周圍像素點(diǎn)的誤差分配值;所述的每組網(wǎng)點(diǎn)生成電路中的誤差生成電路(9)與該組網(wǎng)點(diǎn)生成電路后面組網(wǎng)點(diǎn)生成電路中的灰度生成電路(7)及誤差行存儲(chǔ)器控制電路(4)和誤差分配/累積寄存器堆控制電路(5)直接相連;其中,所述誤差行存儲(chǔ)器(2)用于存儲(chǔ)像素點(diǎn)的最終誤差累積值以及像素點(diǎn)的中間誤差累積值;所述誤差分配/累積寄存器堆(3)包括誤差分配寄存器堆和誤差累積寄存器堆,所述誤差分配寄存器堆用于暫存像素點(diǎn)對其周圍點(diǎn)的誤差分配值,所述誤差累積寄存器堆用于暫存從誤差行存儲(chǔ)器中讀出的像素點(diǎn)的中間誤差累積值。
8.如權(quán)利要求7所述一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的裝置,其特征在于所述每組網(wǎng)點(diǎn)生成電路(10)中的灰度生成電路(7)的輸入端在與源像素、誤差行存儲(chǔ)器控制電路(4)、誤差分配/累積寄存器堆控制電路(5)連接的同時(shí),還連接該組網(wǎng)點(diǎn)生成電路前面組網(wǎng)點(diǎn)生成電路中的誤差生成電路,用來產(chǎn)生源像素經(jīng)過誤差擴(kuò)散后的最終灰度值;其輸出端與閾值比較電路(8)和誤差生成電路(9)連接,用來將閾值和最終灰度值比較產(chǎn)生最終網(wǎng)點(diǎn)和計(jì)算出當(dāng)前處理像素對其周圍點(diǎn)的誤差分配值。
9.如權(quán)利要求7或8所述一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的裝置,其特征在于誤差分配/累積寄存器堆(3)采用由觸發(fā)器組成的寄存器陣列實(shí)現(xiàn),所述的誤差分配寄存器堆保存的是對當(dāng)前處理的N個(gè)相鄰像素及對產(chǎn)生的下一行N個(gè)相鄰像素的最終誤差累積值都有誤差分配的當(dāng)前處理像素之前已處理的所有像素的全部誤差分配值;所述的誤差累積寄存器堆保存的是從誤差行存儲(chǔ)器中讀出的當(dāng)前處理的N個(gè)相鄰像素正對的下面一行相鄰N個(gè)位置上的誤差累積值,該誤差累積值為中間誤差累積值。
10.如權(quán)利要求9所述一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的裝置,其特征在于誤差行存儲(chǔ)器控制電路(4)由讀地址寄存器,寫地址寄存器,讀寫控制電路及寫入數(shù)據(jù)生成電路組成,其中讀地址寄存器和寫地址寄存器由當(dāng)前處理像素中第一個(gè)像素的列號(hào)來產(chǎn)生,一次讀出誤差行存儲(chǔ)器中與當(dāng)前同時(shí)處理的N個(gè)相鄰像素對應(yīng)位置及下面行正對位置的誤差累積值;寫入數(shù)據(jù)的生成電路則由加法器組成,其中加法器的輸入來自于誤差累積值、所有當(dāng)前像素處理后產(chǎn)生的誤差分配值及誤差分配寄存器堆中保存的相關(guān)誤差分配值。
11.如權(quán)利要求10所述一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的裝置,其特征在于誤差行存儲(chǔ)器控制電路(4)連接到誤差行存儲(chǔ)器(2)用來產(chǎn)生誤差行存儲(chǔ)器的讀寫地址、讀寫控制信號(hào)及讀寫數(shù)據(jù),誤差行存儲(chǔ)器控制電路(4)的輸入來自包括當(dāng)前處理像素中首個(gè)像素的坐標(biāo)、誤差分配/累積寄存器堆控制電路(5)及每一組網(wǎng)點(diǎn)生成電路(10)的誤差生成電路(9)。
12.如權(quán)利要求11所述一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的裝置,其特征在于誤差分配/累積寄存器堆控制電路(5)由n個(gè)多路器組成,其中n為誤差分配/累積寄存器堆中的寄存器個(gè)數(shù),用來產(chǎn)生誤差分配/累積寄存器堆的輸入及控制信號(hào),從而完成一次處理周期內(nèi)誤差分配/累積寄存器堆(3)的一次更新及每一行開始時(shí)的初始化清零。
13.如權(quán)利要求12所述一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的裝置,其特征在于所述誤差分配/累積寄存器堆控制電路(5)輸入端與每一組網(wǎng)點(diǎn)生成電路(10)的誤差生成電路(9)、誤差行存儲(chǔ)器控制電路(4)和誤差分配/累積寄存器堆(3)相連。
全文摘要
本發(fā)明涉及一種能夠同時(shí)產(chǎn)生多位調(diào)頻網(wǎng)點(diǎn)的方法及裝置,屬于數(shù)字圖像半色調(diào)領(lǐng)域?,F(xiàn)有圖像串行處理技術(shù)中,每次只能處理一個(gè)像素產(chǎn)生一位網(wǎng)點(diǎn),網(wǎng)點(diǎn)產(chǎn)生速度較慢,而現(xiàn)有圖像并行處理技術(shù)中,并行處理多個(gè)像素時(shí)需要對誤差行進(jìn)行多次讀寫操作,同樣影響網(wǎng)點(diǎn)的生成速度。本發(fā)明所述的方法每次同時(shí)處理同行多個(gè)相鄰像素,產(chǎn)生多位網(wǎng)點(diǎn);并且同時(shí)更新誤差行多個(gè)位置的誤差累積值。本發(fā)明所述的裝置由誤差行存儲(chǔ)器,誤差行存儲(chǔ)器控制電路,誤差分配/累積寄存器堆,誤差分配/累積寄存器堆控制電路,網(wǎng)點(diǎn)生成電路組構(gòu)成。采用本發(fā)明所述的方法和裝置,大大提高了調(diào)頻網(wǎng)點(diǎn)的產(chǎn)生速度,實(shí)現(xiàn)了每次處理多個(gè)相鄰像素只需對誤差行進(jìn)行一次讀寫操作。
文檔編號(hào)H04N1/405GK1941840SQ20061011313
公開日2007年4月4日 申請日期2006年9月15日 優(yōu)先權(quán)日2006年9月15日
發(fā)明者陳 峰, 劉志紅, 溫曉輝, 朱偉 申請人:北京大學(xué), 北京北大方正電子有限公司