新四季網

採用雙份誤差行存儲器產生圖像網點的方法和裝置的製作方法

2023-07-12 10:32:36 2

專利名稱:採用雙份誤差行存儲器產生圖像網點的方法和裝置的製作方法
技術領域:
本發明涉及一種圖像網點生成的方法和裝置,尤其涉及一種利用雙份緩衝存儲器實現數據讀寫並行的圖像網點生成方法和裝置。
背景技術:
在圖像處理領域中,數字半色調是一種將連續色調的圖像轉換成二值色調圖像的技術,這一技術常用於印表機、計算機顯示器及其它二值的電子顯示設備上再現彩色或灰度的圖像,著重解決的問題是如何使得半色調圖像達到一種連續調圖像的視覺效果。有許多實現方法,主要分為三類規則抖動法、誤差擴散法和最佳化的方法。其中誤差擴散方法是近些年來被廣泛採用的數字半色調技術。
在通常的調頻掛網方法中,誤差擴散方法是最常用的方法。誤差擴散方法是把原圖像的每個像素點的灰度值與閾值相比較產生網點的同時,把像素點的灰度值與閾值之間的誤差擴散到該像素點周圍的像素點上,例如對於一個256級灰度的圖像,閾值為127,有一個像素點的灰度值為150,經比較可知,該像素點應記為白色網點(其灰度值為255),但實際上該像點並不是真正的白色,與白色之間存在的灰度差為105,於是將105這個誤差按一定的方法分散到該像素點周圍的像素點上。
將誤差擴散到周圍像素點的方法有很多種,其中Floyd-Steinberg誤差擴散算法是一種最通用的誤差擴散方法,該算法是將一個像素的誤差分配到周圍的四個點上。該算法首先比較當前像素點的灰度值與閾值,將該像素點記為1或0,即白色或黑色網點,然後計算誤差,分配誤差到周圍的像素點,修改周圍像素點的灰度值。圖1A是基於Floyd-Steinberg算法的誤差擴散分配示意圖,如圖所示,按Floyd-Steinberg誤差擴散算法,當前像素*的誤差將按圖中所示的比例被分配到它所相鄰的四個像素上去。即將誤差的7/16加到當前像素點右邊第一個像素點上,誤差的3/16加到下一行左邊第一個像點上,誤差的5/16加到下一行正對的像點上,誤差的1/16加到下一行右邊第一個像點上,這樣把當前像點的誤差分散到周圍的像點上,反覆進行該過程,對圖像中的每個像點進行同樣的半色調化和灰度值的修正即可。
從理論上說,誤差擴散方法能很好的反映原圖的層次關係和顏色,如果我們進行誤差擴散的點越多,效果會越好,故在此基礎上又提出能涉及很多點的算法。例如,Stucki算法進一步改善了Floyd-Steinberg算法。圖2A是基於Stucki算法的誤差擴散分配示意圖,如圖所示,按Stucki誤差擴散算法,當前像素*的誤差被分配到如圖所示的12個相鄰像素上去,這12個位置上的某些位置的誤差分配比例相同,只需要5個不同的誤差分配比例,其中D1=1/44,D2=2/44,D3=5/44,D4=4/44,D5=8/44。由於Stucki算法涉及了更多的點,因此輸出圖像的效果更好。
在圖像處理過程中,誤差擴散的點越多,需要進行的運算量越大,處理數據的速度也越慢。對於利用硬體電路實現高速產生調頻網點的裝置而言,誤差擴散的點越多,電路規模越大,影響調頻網點產生速度的因素也越多,其中存儲器的讀寫操作一直是影響調頻網點產生速度的一個重要因素。在傳統的誤差擴散實現方法中,需要用到大量的存儲器讀寫操作,存儲器的存取速度在基於誤差擴散算法的系統中,往往成為速度的瓶頸,而這一缺陷也一直制約著誤差擴散方法的廣泛應用。
雖然現有技術對高速生成調頻網點的方法進行了多種探索,但是在誤差擴散時,仍然要對存儲器進行至少一次讀和一次寫的操作,且讀和寫分別進行,大大影響了網點產生的速度。

發明內容
針對上述問題,本發明提供了一種能夠同時讀寫數據的採用雙份誤差行存儲器產生圖像網點的裝置,包括緩衝存儲器A、緩衝存儲器B和存儲控制器,其特徵在於
所述存儲控制器包括緩衝存儲器A讀寫控制電路、緩衝存儲器B讀寫控制電路以及緩衝存儲器選擇電路;所述緩衝存儲器選擇電路用於生成對緩衝存儲器A和緩衝存儲器B的讀寫選擇信號,以選擇對緩衝存儲器A和緩衝存儲器B的讀或寫操作所述緩衝存儲器A讀寫控制電路連接至所述緩衝存儲器A,用於根據所述讀寫選擇信號對緩衝存儲器A進行讀和寫操作,所述緩衝存儲器B讀寫控制電路連接至所述緩衝存儲器B用於根據所述讀寫選擇信號對緩衝存儲器B進行讀和寫操作。
本發明進一步提供了一種利用誤差擴散裝置執行誤差擴散的圖像處理方法,該圖像由多行像素點構成,該裝置包括誤差行存儲器,用於存儲當前處理行每個位置點的誤差累積值;寄存器堆,用於寄存當前處理行各點對其周圍點的誤差分配值;該方法包括,以行為單位依次處理各個點,處理過程為首先,初始化誤差行存儲器的值為0;步驟1,初始化寄存器堆的值為0;讀取當前處理行中第1個要處理點的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值;步驟2,利用上個步驟讀入的點的灰度值和該點的誤差累積值以及寄存器堆中相應位置的誤差分配值計算該點的最終灰度值以及該點對周圍點的誤差分配值並更新寄存器堆,同時,讀取當前行中下一個要處理點的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值;步驟3,根據寄存器堆中相應位置的誤差分配值計算誤差累積完成點的誤差累積值並將其寫入到誤差行存儲器的相應位置;
利用上個步驟讀入的點的灰度值和該點的誤差累積值以及寄存器堆中相應位置的誤差分配值計算該點的最終灰度值以及該點對周圍點的誤差分配值並更新寄存器堆,同時,讀取當前行中下一個要處理點的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值;步驟4,重複步驟3,直到下一行點的誤差累積值全部計算並寫入到誤差行存儲器的相應位置;步驟5,重複步驟1-4,依次處理下一行,直到全部行處理完,結束。
本發明的採用雙份誤差行存儲器產生圖像網點的裝置及圖像網點生成方法簡單地採用雙份緩衝存儲器進行數據讀寫並行操作,大大地提高了處理速度。


圖1A和圖1B所示為現有技術中基於Floyd-Steinberg算法的誤差擴散分配示意圖;圖2A、圖2B和圖2C所示為現有技術中基於Stucki算法的誤差擴散分配示意圖;圖3所示為現有技術中Floyd-Steinberg算法的誤差擴散裝置組成圖;圖4所示為誤差分配寄存器堆控制電路由多路選擇器構成的框圖;圖5所示為圖3中的誤差分配寄存器結構圖;圖6所示為圖3的誤差擴散裝置對存儲器讀寫操作周期示意圖;圖7所示為本發明第一實施例的誤差擴散裝置組成圖;圖8所示為圖7所示裝置的誤差行存儲器控制電路結構圖;圖9所示為圖8所示裝置中緩衝存儲器控制電路結構圖;圖10所示為本發明的誤差擴散裝置對存儲器讀寫操作周期示意圖;圖11所示為現有技術中Stucki算法的誤差擴散裝置組成圖;圖12所示為圖10所示裝置中的誤差分配/累積寄存器堆結構圖;
圖13所示為本發明第二實施例的誤差擴散裝置組成圖;圖14所示為誤差擴散n行示意圖;圖15所示為最終誤差累積值和中間誤差累積值組成的數據包。
具體實施例方式
下面結合說明書附圖來說明本發明的具體實施方式

我們先簡要介紹本發明在進行調頻網點產生的處理過程中利用到的幾個基本電路。
在誤差擴散中,每個點對其周圍的點都有誤差擴散,相應地,對於當前處理點來說,也會被周圍的點的誤差擴散所影響,因此需要處理完影響到當前像素點的所有點,才能處理當前像素點。
以Floyd-Steinberg算法為例,由於一個像素點的誤差擴散到其周圍四個點,因此我們容易得到一個規律,即,任意一個像素點僅被其周圍的4個點的誤差擴散所影響,如圖1B所示。也就是說,假設一個圖像由n行m列個像素點組成,i為行數,j為列數(以後均表示相同意義),則在處理完第i-1行的點Pi-1,j+1時,第i-1行的所有像素點匯聚到像素點Pi,j上的誤差擴散就已經可以計算出來了。因此在第i-1行的其餘的點還沒有全部處理完之前,我們需要一個存儲器來保存第i-1行中的點對像素點Pi,j的誤差累積值,以便在處理第i行的點時可以將其取出並用於計算Pi,j的網點值和它對周圍的像素的誤差擴散。由於圖像由多行像素點組成,而這樣的存儲器通常按行來存儲各點的誤差累積值,因此,我們將這樣一個存儲器稱為誤差行存儲器,我們優選地採用SRAM(靜態隨機存取存儲器)作為誤差行存儲器。
這樣,我們計算某個像素點的網點值和誤差擴散時,在獲取當前像素的灰度值後,就可以利用從誤差行存儲器中讀出的上一行的像素點在該點的誤差累積值,再加上當前像素的左邊的點對該點的誤差擴散,得到該點的最終灰度值,再和閾值比較便可生成當前像素的網點,同時可以得到其分配給周圍點的誤差值,我們將每個像素根據誤差擴散算法分配給相鄰像素的誤差值,也就是前面所說的誤差擴散,稱為誤差分配值。
接著,在得到一個像素點對其周圍點的誤差分配值後,還需要將這些誤差分配值暫存一段時間以用於處理該像素的誤差擴散所影響到的像素點。我們利用寄存器組來暫存這些誤差分配值。容易理解,寄存器組的個數取決於算法的種類,如對於Floyd-Steinberg算法,需要3個寄存器組來暫存每個像素點的誤差分配值(以後說明)。我們稱這些寄存器組為一個寄存器堆。
上面介紹了誤差擴散電路中需要用到的幾個基本電路單元。下面參照圖3說明現有技術中利用Floyd-Steinberg算法進行誤差擴散的誤差擴散裝置組成。
如圖所示,該裝置1包括誤差行存儲器2,誤差行存儲器控制電路誤差行存儲器控制電路3,誤差分配寄存器堆4,誤差分配寄存器堆控制電路5,灰度生成電路6,閾值比較電路7,誤差生成電路8,共七部分。
誤差行存儲器2和誤差分配寄存器堆4的功能已經在上文中詳細地進行了說明,這裡不再贅述。
其中,誤差行存儲器控制電路3負責完成誤差行存儲器2的讀和寫操作,其從誤差行存儲器2中讀出當前處理點Pij的誤差累積值提供給灰度生成電路6用於計算當前點的最終灰度值,以及利用誤差分配寄存器堆控制電路5輸出的誤差分配值計算出Pi+1,j-1誤差累積值並寫入誤差行存儲器2;其中,誤差分配寄存器堆控制電路5用於控制誤差分配寄存器堆4的移位更新、清零等操作,即將來自誤差生成電路8的誤差分配值暫存到誤差分配寄存器堆4中,以及為誤差行存儲器控制電路誤差行存儲器控制電路3和灰度生成電路提供計算所需要的誤差分配值。誤差分配寄存器堆控制電路5可以由多路選擇器來實現。其與誤差分配寄存器的連接關係如圖4所示。
誤差分配寄存器堆的結構如圖5所示。假設Pij為第i行的當前處理點,Pi,j-1和Pi,j-2點為其前面處理過的點,圖中E1-E4代表誤差分配係數,其中E1=1/16,E2=3/16,E3=5/16,E4=7/16(由於E4是當前點對左邊點的誤差分配值,計算下一行點的誤差累積值時並不使用,因此僅需要存儲當前點的誤差分配值Pi,jE4)。陰影部分為用於計算圖1B所示點*的誤差累積值所用到的三個點的誤差分配值,其被提供給誤差行存儲器控制電路3進行加法計算。
灰度生成電路6用來產生源像素的最終灰度,而最終像素的灰度值等於源像素的值加上從誤差行存儲器中讀出的對應該位置的誤差累積值再加上誤差分配寄存器堆中緩衝的同一行的以前像素對當前像素的誤差分配值。因此,灰度生成電路6由一個加法器組成,它的輸入連接到點的源像素和誤差分配寄存器堆控制電路5以及誤差行存儲器控制電路誤差行存儲器控制電路3,它的輸出則提供給閾值比較電路7和誤差生成電路8;其根據當前處理像素的灰度值和誤差行存儲器控制電路誤差行存儲器控制電路3的輸出值及誤差分配寄存器堆控制電路5的輸出值得出最終的像素灰度,提供給閾值比較電路7產生網點和誤差生成電路8得出該像素的誤差分配值。
閾值比較電路7用來將灰度生成電路6所產生的最終灰度值與閾值進行比較產生網點。
誤差生成電路8用來將由灰度生成電路6所產生的最終灰度值通過與閾值進行比較計算而產生當前像素的誤差分配值,它的輸入與灰度生成電路6相連,輸出提供給誤差分配寄存器堆控制電路5。
下面結合圖3參照圖6,說明現有技術中對誤差行存儲器2的讀寫操作過程。
首先,初始化誤差行存儲器和誤差分配寄存器堆使其清零,然後從第1行第1列開始點開始依次處理每個像素點,由於已經對初始化誤差行存儲器和誤差分配寄存器堆已經初始化為0,因此計算出第1行1列的點的最終灰度值即為讀入的像素灰度值,其最終灰度值計算完之後就可以對其周圍點的誤差分配值進行計算了,而這時第2行第0列點P2,0的誤差累積就已經完成了,應該將其寫入到誤差行存儲器中,但該值沒有意義(不在圖像內的點),因此不保存;可以理解,由於第0行(沒有圖像)對第1行的點均沒有誤差擴散,因此從誤差行存儲器中讀出的第1行的所有點的誤差累積值均為初始化了的值即為0,不再贅述;當處理到第i行第j列像素點Pij時,第一個周期內,誤差行存儲器控制電路3讀出(圖5中為R)誤差行存儲器2中第i-1行對該點的誤差累積值e1;在第二個周期內,誤差分配寄存器堆控制電路5根據誤差分配寄存器堆4中第i行j-1列點對該點的誤差分配值e2計算(圖5中為M)出Pij+e1+e2=Pij』,以及其對於周圍點的誤差分配值進行計算並寄存到寄存器堆中,這時,由於第Pi+1,j-1點已經可以計算出來,因此將Pij與Pi,j-1、Pi,j-2的分配值按照圖4陰影部分進行相加得到Pi+1,j-1點的誤差累積值;在第三個周期內,將其對第Pi+1,j-1點的誤差累積值寫入(圖5中為W)到誤差行存儲器中。
不難看出,對於每一個像素操作時,存儲器的讀寫訪問是分開進行的。因此,當處理4個像素時,每4個操作周期能夠完成2個像素點的處理,完成4個像素點總共需要8個周期,平均2個操作周期處理一個像素點。
以上詳細地介紹了本發明所利用到的基本的誤差擴散裝置。
下面詳細描述本發明利用雙份緩衝存儲器作為誤差行存儲器的圖像網點生成裝置及方法。
實施例一參照圖7,詳細描述本發明第一個實施例,即利用Floyd-Steinberg算法的誤差擴散裝置。
如圖所示,本發明的誤差擴散裝置1』包括誤差行存儲器2』,誤差行存儲器控制電路3』,誤差分配寄存器堆4,誤差分配寄存器堆控制電路5,灰度生成電路6,閾值比較電路7,誤差生成電路8,共七部分。其中附圖標記相同的部件與現有技術的裝置完全相同,不再一一贅述。
如圖8所示,與現有技術不同的是,本發明使用兩個緩衝存儲器A和B整體作為誤差行存儲器2』,誤差行緩衝存儲器A/B分別用於在當前行為奇數行/偶數行時存儲產生的誤差累積值,和用於在當前行為偶數行/奇數行時讀取處理前一行時產生的誤差累積值。
誤差行存儲器控制電路3』包括緩衝存儲器A讀寫控制電路300,緩衝存儲器B讀寫控制電路301和雙份緩衝讀寫選擇電路,如圖8所示。
所述緩衝存儲器A讀寫控制電路300連接至所述緩衝存儲器A303,用於對緩衝存儲器A303進行讀寫操作,所述緩衝存儲器B讀寫控制電路301連接至所述緩衝存儲器B304用於對緩衝存儲器B304進行讀寫操作,所述雙份緩衝讀寫選擇電路302用於生成對雙份緩衝存儲器讀寫的選擇信號,這樣對緩衝存儲器A和B進行讀或寫的選擇。其中雙份緩衝讀寫選擇信號由雙份緩衝誤差行存儲器控制電路內部根據行數生成。
其中,誤差行存儲器控制電路3』負責根據雙份緩衝讀寫選擇電路的控制完成誤差行緩衝存儲器A/B的讀和寫操作,其在當前行為奇數時從誤差行緩衝存儲器A中讀出包含當前處理點的誤差累積值提供給灰度生成電路6用於計算當前點的最終灰度值,以及同時利用誤差分配寄存器堆控制電路5輸出的誤差分配值計算出誤差累積值並寫入誤差行緩衝存儲器B中,在當前行為偶數時,誤差行緩衝存儲器A、B的讀寫角色對換,即從緩衝存儲器B中讀出包含當前處理點的誤差累積值提供給灰度生成電路6用於計算當前點的最終灰度值,以及同時利用誤差分配寄存器堆控制電路5輸出的誤差分配值計算出誤差累積值並寫入緩衝存儲器A中。本領域技術人員可以理解,對緩衝存儲器A和B讀寫的先後順序不是固定的,也可以先將緩衝存儲器B用來讀出數據,則緩衝存儲器A用來寫入數據,然後到下一行再利用緩衝存儲器A進行讀出數據,緩衝存儲器B用於寫入數據,依次交替使用。
雙份緩衝讀寫選擇電路302通過緩衝存儲控制器A、B中的三態門及反相器等器件進行數據通路的選擇,以選擇對緩衝存儲控制器A、B讀或寫,如圖9所示。
通過這樣的結構,實現了對誤差行存儲器的同時讀寫,加快了誤差擴散的速度。
附圖10直觀地示出了本發明的誤差擴散裝置對存儲器讀寫操作的示意圖。由圖中看出,在讀第3個像素的誤差累積值的同時可以向誤差行中寫入第1個像素對應的下一行的像素點的誤差累積值,對存儲器的讀寫在一個操作周期內就可以完成。整個處理過程如下首先,初始化誤差行存儲器的值為0;步驟1,初始化寄存器堆的值為0;讀取當前處理行中第1個要處理點P1,1的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值(因為初始化存儲器,因此讀出的值為0);步驟2,利用上個步驟讀入的點P1,1的灰度值和該點的誤差累積值以及寄存器堆中相應位置的誤差分配值(初始化的值為0)計算該點的最終灰度值以及該點對周圍點的誤差分配值並更新寄存器堆,同時,讀取當前行中下一個要處理點P1,2的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值;步驟3,根據寄存器堆中相應位置的誤差分配值計算誤差累積完成點P2,0的誤差累積值並將其寫入到誤差行存儲器的相應位置(該值沒有意義,也可以不寫入);利用上個步驟讀入的點P1,2的灰度值和該點的誤差累積值以及寄存器堆中相應位置的誤差分配值計算該點的最終灰度值以及該點對周圍點的誤差分配值並更新寄存器堆,同時,讀取當前行中下一個要處理點P1,3的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值;這樣,到步驟3時,讀(R)、寫(W)、計算(M)都是在一個周期內就可以完成。
這樣,再依次處理下面的點,當讀取Pi,j點的誤差累積值時,同時計算Pi,j-1點的誤差分配值,同時將已經計算完成的Pi+1,j-3點的誤差累積值寫入到存儲器中的相應位置;
這樣依次處理每個點,直到下一行點的誤差累積值全部計算並寫入到誤差行存儲器的相應位置,再將寄存器清零,處理下一行的各點,直到全部行處理完,結束。
可以看出,同樣是對4個像素點進行處理,採用本發明所述的方法,只需要最多6個操作周期就可以完成圖像處理。
由此推出,使用分開讀寫的存儲器,處理N個像素需要2×N個周期,使用並行讀寫的存儲器,處理N個像素只需N+2個周期,後者的網點產生速度有大幅度的提高。
實施例二其次我們再闡述本發明基於Stucki算法的誤差擴散裝置。
由於Stucki算法在當前處理行時,會對下面的兩行的12個點產生誤差擴散,因此需要保存該行對下面兩行的誤差擴散,換個角度,對於任意一點來說,其會受到上面兩行及當前行的12個點的影響,如圖2B所示。可以理解,這些影響不能一次計算出來,而是隨著每行數據的處理分批產生的,因此需要將各批產生的誤差累積值保存起來用於生成最後的灰度值。
也就是說,對於任意點Pij來說,首先在處理第i-2行的點Pi-2,j+2時就產生了第i-2行在該點的一個誤差累積值,我們將其稱為中間誤差累積值,我們需要在處理下一行(i-1)數據之前將其保存在誤差行存儲器中,然後在處理第i-1行的點Pi-1,j+2時就產生了第i-1行在該點的一個誤差累積值,我們需要將以前已經保存在誤差行存儲器中的中間誤差累積值讀出並加上第i-1行在該點產生的誤差累積值得到上兩行的一個總的誤差累積值,我們可以將其稱為最終誤差累積值。
如圖2C所示,在處理完Pij點*時,第i-1行和第i行對第Pi+1,j-2點@最終誤差累積值和Pi+2,j-2點@』的中間誤差累積值就同時產生出來了。為了方便起見,我們可以將其作為一個數據包同時保存在誤差行存儲器中。這樣在計算點Pi+1,j-2(圖中為@)的最終誤差累積值時,需要從存儲器中讀入最終誤差累積值,同時Pi+2,j-2(圖中為@』)的中間誤差累積值也在同一個數據包中被從存儲器中讀出,但是,中間誤差累積值只有在處理完Pi+2,j-2(圖中為@』)的誤差分配值後才能用於計算最終誤差累積值,因此我們需要將其在寄存器中暫存起來。
為了暫存隨著最終誤差累積值同時被讀入的中間誤差累積值,用以參加生成新的最終誤差累積值的計算,還需要設置新的寄存器堆以保存讀入的中間誤差累積值,我們這裡稱其為誤差累積值寄存器堆。圖11示出了利用Stucki算法的現有技術的誤差擴散裝置圖,可以看出,其與利用Floyd-Steinberg算法的誤差擴散裝置的不同之處在於,誤差行存儲器12同時存儲Pij點的最終誤差累積值和Pi+1,j點的中間誤差累積值數據包;增加了誤差累積寄存器堆用於保存中間誤差累積值,它和原來的誤差分配寄存器堆一起構成了誤差分配/累積寄存器堆14,以及誤差分配/累積控制電路15用於控制誤差分配/累積寄存器堆14。
處理任意Pij點的操作過程為,誤差行控制器從誤差行存儲器中讀出Pij點的最終誤差累積值和Pi+1,j點的中間誤差累積值數據包,將Pi+1,j點的中間誤差累積值提取出來緩存到中間誤差累積值寄存器中(等處理到Pi,j+2點時用於計算Pi+1,j點的最終誤差累積值),並將Pij點的最終誤差累積值提供給灰度生成電路,計算出Pij點的誤差分配值,同時誤差行控制器負責計算Pi+1,j-2點的最終誤差累積值及Pi+2,j-2點的中間誤差累積值並將它們作為一個數據包一次寫入誤差行存儲器中。
誤差分配/累積寄存器堆14的結構如圖12所示。假設當前處理點為Pij,圖中Pj代表第i行當前處理點的誤差值,Pj-1至Pj-4點依次為其前面處理過的點,D1-D5代表誤差分配係數,Lj至Lj-2代表從誤差行存儲器中讀出的Pi+1,j至Pi+1,j-2點的誤差累積值,誤差分配/累積寄存器堆控制電路5根據需要將以上數據提供給誤差行存儲器控制電路13,誤差行存儲器控制電路13產生一個寫入數據包,其包括最終誤差累積值Pi,jL1和中間誤差累積值Pi,jL2,其中Pi,jL1可表示為Pi,jL1=Pi,j-2L2+Pi,jD2+Pi,j-1D4+Pi,j-2D5+Pi,j-3D4+Pi,j-4D2,Pi,jL2可表示為Pi,jL2=Pi,jD1+Pi,j-1D2+Pi,j-2D3+Pi,j-3D2+Pi,j-4D1。陰影部分直觀地表示出計算兩部分值所用到的數據。
本發明同樣在Stucki算法的現有技術的誤差擴散裝置基礎上採用雙份緩衝存儲器整體作為誤差行存儲器,其原理和構成與本發明第一實施例的Floyd-Steinberg算法的誤差擴散裝置完全相同,如圖13所示,緩衝誤差行存儲器A22和緩衝誤差行存儲器B24由誤差行存儲器控制電路23控制同時讀和寫操作,使得讀寫並行得到實現。採用雙份緩衝存儲器大大提高了誤差擴散裝置的處理速度。
本發明的第二實施例整個處理過程如下首先,初始化誤差行存儲器的值為0;步驟1,初始化寄存器堆的值為0;讀取當前處理行中第1個要處理點P1,1的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值和中間誤差累積完成點P2,1的中間誤差累積值,並將中間誤差累積值緩存到寄存器堆中;步驟2,利用上個步驟讀入的點P1,1的灰度值和該點的最終誤差累積值以及寄存器堆中相應位置的誤差分配值計算該點的最終灰度值以及該點對周圍點的誤差分配值並更新寄存器堆,同時,讀取當前行中下一個要處理點P1,2的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值和中間誤差累積完成點P2,2的中間誤差累積值,並將中間誤差累積值緩存到寄存器堆中;步驟3,根據寄存器堆中相應位置的誤差分配值(來自P1,1點)和中間誤差累積值(初始化為0)計算最終誤差累積完成點P2,-1的最終誤差累積值和中間誤差累積完成點P3,-1的中間誤差累積值,並將其寫入到誤差行存儲器的相應位置;
利用上個步驟讀入的點P1,2的灰度值和該點的最終誤差累積值以及寄存器堆中相應位置的誤差分配值計算該點的最終灰度值以及該點對周圍點的誤差分配值並更新寄存器堆;同時,讀取當前行中下一個要處理點P1,3的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值和中間誤差累積完成點P2,3的中間誤差累積值,並將中間誤差累積值緩存到寄存器堆中。
步驟3中的讀(R)、寫(W)、計算(M)都是在一個周期內就可以完成。
這樣,在一次處理下面的點,讀取Pi,j點的最終誤差累積值和Pi+1,j點的中間誤差累積值時,計算Pi,j-1點的誤差分配值,同時將Pi+1,j-4點的最終誤差累積值和Pi+2,j-4點的中間誤差累積值寫入到誤差行存儲器中;這樣依次處理每個點,直到下一行點的誤差累積值和中間誤差累積值全部計算並寫入到誤差行存儲器的相應位置,再將寄存器清零,處理下一行的各點,直到全部行處理完,結束。
通過如上所述的技術方案,可以理解採用雙份緩衝存儲器可以應用到於基於誤差擴散原理的,將誤差擴散到更多行的點的圖像處理方法中。例如圖14所示的誤差擴散方法,一個點的誤差擴散到它下面的n(n≥1)行,可以採用本發明的採用雙份誤差行存儲器產生圖像網點的裝置,其中採用雙份緩衝存儲器作為誤差行存儲器,用於存儲最終誤差累積完成在某個點上的最終誤差累積值以及下面的中間誤差累積完成的共n-1個點的中間誤差累積值所組成的數據包,圖15示出了數據包的組成,數據包包括最終誤差累積完成點的最終誤差累積值、以及該點下面緊鄰的中間誤差累積完成的n-1個點的中間誤差累積值,標記為中間誤差累積值1至中間誤差累積值n-1。誤差累積/分配寄存器堆用於暫存從誤差行存儲器中讀出的上述中間誤差累積值,同理,寄存器的個數也應隨算法作相應地調整。
通過對本發明的幾個實施例的詳細描述,本領域技術人員可以理解,本發明的技術方案除了運用在以上所舉實施例的裝置中,還能夠用於其它任何需要對存儲器進行同時讀寫操作的圖像網點生成裝置中。例如在任何現有的誤差擴散裝置中,只要是上一行的點對下面的行有誤差擴散的圖像處理方法,都需要使用存儲器存儲已處理完的點的信息以用於處理下一個點,所述的信息可以包括誤差累積值、誤差分配值或者已處理完點的最終灰度值、最終灰度值與閾值之間的差值等等,為了加快處理速度,可以使用雙份緩衝存儲器進行存儲,其所包括的兩個緩衝存儲器通過與存儲控制器相連接,存儲控制器對其中的一個緩衝存儲器進行讀操作,對另一個緩衝存儲器進行寫操作就能夠完成同時讀寫功能。
以上所述僅為本發明的其中幾個實施例而已,並不用以限制本發明,因而凡在本發明的精神和原則之內,所作的任何修改,等同替換,改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種採用雙份誤差行存儲器產生圖像網點的裝置,包括緩衝存儲器A、緩衝存儲器B和存儲控制器,其特徵在於所述存儲控制器包括緩衝存儲器A讀寫控制電路、緩衝存儲器B讀寫控制電路以及緩衝存儲器選擇電路;所述緩衝存儲器選擇電路用於生成對緩衝存儲器A和緩衝存儲器B的讀寫選擇信號,以選擇對緩衝存儲器A和緩衝存儲器B的讀或寫操作;所述緩衝存儲器A讀寫控制電路連接至所述緩衝存儲器A,用於根據所述讀寫選擇信號對緩衝存儲器A進行讀和寫操作,所述緩衝存儲器B讀寫控制電路連接至所述緩衝存儲器B用於根據所述讀寫選擇信號對緩衝存儲器B進行讀和寫操作。
2.根據權利要求1所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述緩衝存儲器A讀寫控制電路由三態門和反向器組成。
3.根據權利要求1所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述緩衝存儲器B讀寫控制電路由三態門和反向器組成。
4.根據權利要求1-3之一所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述圖像處理裝置對多行像素點構成的圖像中各像素點依次執行對其周圍的像素點誤差擴散,且誤差擴散到其下面1行。
5.根據權利要求1-3之一所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述圖像由多行像素點構成,所述圖像處理裝置對各像素點依次執行對其周圍的像素點誤差擴散,且誤差擴散到其下面多行。
6.根據權利要求4所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述緩衝存儲器A和緩衝存儲器B組成為誤差行存儲器,用於存儲前一行對當前處理行各點的誤差累積值;
7.根據權利要求6所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述緩衝存儲器選擇電路根據行數生成對緩衝存儲器A和緩衝存儲器B的讀寫選擇信號。
8.根據權利要求5所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述緩衝存儲器A和緩衝存儲器B組為誤差行存儲器,用於存儲前一行對當前處理行最終誤差累積完成點的最終誤差累積值以及同時產生的當前處理行下1行、下2行...下n-1行中間誤差累積完成點的n-1個中間誤差累積值。
9.根據權利要求8所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於同時產生的最終誤差累積值和n-1個中間誤差累積值存儲以數據包的形式存儲。
10.根據權利要求8或9所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述緩衝存儲器選擇電路根據行數生成對緩衝存儲器A和緩衝存儲器B的讀寫選擇信號。
11.根據權利要求7所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於,還包括寄存器、寄存器控制電路、灰度生成電路和誤差生成電路;所述寄存器用於暫存當前處理像素點的誤差擴散到周圍點的誤差分配值;噹噹前行為奇數行時,所述存儲控制器從緩衝存儲器A中讀出當前處理點的誤差累積值,提供給灰度生成電路,同時存儲控制器利用寄存器中的誤差分配值計算出累積完成點的誤差累積值並寫入緩衝存儲器B;噹噹前行為偶數行時,所述存儲控制器從緩衝存儲器B中讀出當前處理點的誤差累積值,提供給灰度生成電路,同時存儲控制器利用寄存器中的誤差分配值計算出累積完成點的誤差累積值並寫入緩衝存儲器A;寄存器控制電路用於將來自誤差生成電路的誤差分配值暫存到誤差分配寄存器中,以及為誤差行存儲器控制電路和灰度生成電路提供計算所需要的誤差分配值;灰度生成電路用於產生各像素點的最終灰度值;誤差生成電路用於將由灰度生成電路所產生的最終灰度值通過計算而產生當前處理點的誤差分配值,並提供給誤差分配寄存器控制電路。
12.根據權利要求10所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於,還包括寄存器、寄存器控制電路、灰度生成電路和誤差生成電路;所述寄存器用於暫存每個像素點的誤差擴散到其周圍點的誤差分配值以及從誤差行存儲器中讀出的用於計算最終誤差累積值的中間誤差累積值;噹噹前行為奇數行時,所述存儲控制器從緩衝存儲器A中讀出由最終誤差累積值和中間誤差累積值組成的數據包,並將最終誤差累積值提供給灰度生成電路,將中間誤差累積值緩存到寄存器中,同時所述存儲控制器利用寄存器中的誤差分配值和中間誤差累積值計算出最終誤差累積完成點的最終誤差累積值和中間誤差累積完成點的中間誤差累積值並組成數據包寫入緩衝存儲器B中,噹噹前行為偶數行時,所述存儲控制器從緩衝存儲器B中讀出由最終誤差累積值和中間誤差累積值組成的數據包,並將最終誤差累積值提供給灰度生成電路,將中間誤差累積值緩存到寄存器中,同時所述存儲控制器利用寄存器中的誤差分配值和中間誤差累積值計算出最終誤差累積完成點的最終誤差累積值和中間誤差累積完成點的中間誤差累積值並組成數據包寫入緩衝存儲器A中;寄存器控制電路用於將來自誤差生成電路的誤差分配值暫存到誤差分配寄存器中,將來自誤差行存儲器中的中間誤差累積值暫存到誤差累積寄存器中,以及為存儲控制器和灰度生成電路提供計算所需要的誤差分配值;灰度生成電路用於產生各像素點的最終灰度值;誤差生成電路用於將由灰度生成電路所產生的灰度通過計算而產生當前像素的誤差分配值,並提供給誤差分配寄存器堆控制電路。
13.根據權利要求11或12所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於還包括閾值比較電路,用於將灰度生成電路所產生的最終灰度值與閾值進行比較產生網點。
14.根據權利要求11或12所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述寄存器控制電路為多路選擇器。
15.根據權利要求11或12所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述灰度生成電路由加法器組成。
16.根據權利要求6或8所述的採用雙份誤差行存儲器產生圖像網點的裝置,其特徵在於所述誤差行存儲器為靜態隨機存取存儲器。
17.一種利用誤差擴散裝置執行誤差擴散的圖像處理方法,該圖像由多行像素點構成,該裝置包括誤差行存儲器,用於存儲當前處理行每個位置點的誤差累積值;寄存器堆,用於寄存當前處理行各點對其周圍點的誤差分配值;該方法包括,以行為單位依次處理各個點,處理過程為首先,初始化誤差行存儲器的值為0;步驟1,初始化寄存器堆的值為0;讀取當前處理行中第1個要處理點的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值;步驟2,利用上個步驟讀入的點的灰度值和該點的誤差累積值以及寄存器堆中相應位置的誤差分配值計算該點的最終灰度值以及該點對周圍點的誤差分配值並更新寄存器堆,同時,讀取當前行中下一個要處理點的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值;步驟3,根據寄存器堆中相應位置的誤差分配值計算誤差累積完成點的誤差累積值並將其寫入到誤差行存儲器的相應位置;利用上個步驟讀入的點的灰度值和該點的誤差累積值以及寄存器堆中相應位置的誤差分配值計算該點的最終灰度值以及該點對周圍點的誤差分配值並更新寄存器堆,同時,讀取當前行中下一個要處理點的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值;步驟4,重複步驟3,直到下一行點的誤差累積值全部計算並寫入到誤差行存儲器的相應位置;步驟5,重複步驟1-4,依次處理下一行,直到全部行處理完,結束。
18.一種利用誤差擴散裝置執行誤差擴散的圖像處理方法,該圖像由多行像素點構成,該裝置包括誤差行存儲器,用於存儲當前要處理行每個位置點的誤差累積值以及下一行中與其同列各點的中間誤差累積值;寄存器堆,用於寄存當前處理行各點對其周圍點的誤差分配值和從誤差行存儲器中讀出的中間誤差累積值;該方法包括,以行為單位依次處理各個點,處理的過程為首先,初始化誤差行存儲器的值為0;步驟1,初始化寄存器堆的值為0;讀取當前處理行中第1個要處理點的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值和中間誤差累積完成點的中間誤差累積值,並將中間誤差累積值緩存到寄存器堆中;步驟2,利用上個步驟讀入的點的灰度值和該點的最終誤差累積值以及寄存器堆中相應位置的誤差分配值計算該點的最終灰度值以及該點對周圍點的誤差分配值並更新寄存器堆,同時,讀取當前行中下一個要處理點的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值和中間誤差累積完成點的中間誤差累積值,並將中間誤差累積值緩存到寄存器堆中;步驟3,根據寄存器堆中相應位置的誤差分配值和中間誤差累積值計算最終誤差累積完成點的誤差累積值和中間誤差累積完成點的中間誤差累積值,並將其寫入到誤差行存儲器的相應位置;利用上個步驟讀入的點的灰度值和該點的最終誤差累積值以及寄存器堆中相應位置的誤差分配值計算該點的最終灰度值以及該點對周圍點的誤差分配值並更新寄存器堆,同時,讀取當前行中下一個要處理點的灰度值,並從誤差行存儲器中讀取屬於該點的誤差累積值和中間誤差累積完成點的中間誤差累積值,並將中間誤差累積值緩存到寄存器堆中;步驟4,重複步驟3,直到下面行所有點的最終誤差累積值和中間誤差累積值全部計算並寫入到誤差行存儲器的相應位置;步驟5,重複步驟1-4,依次處理下一行,直到全部行處理完,結束。
19.根據權利要求18所述的方法,其特徵在於所述中間誤差累積值的個數為誤差向下擴散的行數-1。
全文摘要
本發明涉及一種能夠同時讀寫數據的採用雙份誤差行存儲器產生圖像網點的裝置及方法。該裝置包括緩衝存儲器A、緩衝存儲器B和存儲控制器,其特徵在於,所述存儲控制器包括緩衝存儲器A讀寫控制電路、緩衝存儲器B讀寫控制電路以及緩衝存儲器選擇電路;所述緩衝存儲器選擇電路用於生成對緩衝存儲器A和緩衝存儲器B的讀或寫操作的選擇信號;所述緩衝存儲器A讀寫控制電路連接至所述緩衝存儲器A,用於根據所述讀寫選擇信號對緩衝存儲器A進行讀和寫操作,所述緩衝存儲器B讀寫控制電路連接至所述緩衝存儲器B,用於根據所述讀寫選擇信號對緩衝存儲器B進行讀和寫操作。本發明的裝置及方法能同時讀寫存儲器中的數據,可以應用於執行誤差擴散,使得誤差擴散快速執行。
文檔編號H04N1/405GK1964423SQ20061011433
公開日2007年5月16日 申請日期2006年11月7日 優先權日2006年11月7日
發明者陳 峰, 朱偉, 劉志紅 申請人:北京大學, 北京北大方正電子有限公司, 北大方正集團有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀