本發明涉及顯示技術領域,尤其涉及一種能夠提升圖像亮度的圖像處理方法及裝置以及一種顯示控制卡。
背景技術:
隨著科技的發展,圖像視頻類數據由于其傳遞表達信息的直觀,應用范圍越來越廣,隨之而來的問題就是如何用較少的資源開銷保存較完整的圖像視頻信息。為了解決上述問題,現有技術采用誤差擴散法,其中,誤差擴散法的原理是按照一定的掃描路徑量化圖像像素,然后將量化誤差以一定的方式擴散到相鄰的未處理像素上。
然而,由于現有技術是將誤差按照固定的比例分配給周圍像素,而沒有考慮到圖像的邊沿信息,因而會有偽輪廓的產生,進而影響畫面顯示質量。
技術實現要素:
因此,本發明實施例提供一種圖像處理方法、一種圖像處理裝置以及一種顯示控制卡,解決圖像有偽輪廓產生的問題,實現提升圖像亮度及畫面顯示質量的技術效果。
一方面,提供了一種圖像處理方法,包括:對目標像素點的灰度值進行降灰階處理;計算所述目標像素點在預設區域中多個誤差擴散方向上的梯度值,其中,所述多個誤差擴散方向為預設誤差擴散模板中的誤差擴散方向;根據所述梯度值和所述預設誤差擴散模板計算得到梯度誤差擴散模板;根據所述梯度誤差擴散模板對所述目標像素點降灰階處理后的小數部分進行誤差擴散。
再一方面,提供了一種圖像處理方法,包括:接收輸入圖像;按照前述對目標像素點的處理方法,進行逐行遍歷處理所述輸入圖像中的每一個像素點,得到處理后的圖像。
另一方面,提供了一種圖像處理裝置,包括:降灰階處理模塊,用于對目標像素點的灰度值進行降灰階處理;梯度計算模塊,用于計算所述目標像素點在預設區域中多個誤差擴散方向上的梯度值,其中所述多個誤差擴散方向為預設誤差擴散模板中的誤差擴散方向;誤差擴散模板生成模塊,用于根據所述梯度值和所述預設誤差擴散模板計算得到梯度誤差擴散模板;誤差擴散模塊,用于根據所述梯度誤差擴散模板對所述目標像素點降灰階處理后的小數部分進行誤差擴散。
又一方面,提供了一種圖像處理裝置,包括:圖像輸入模塊,用于接收輸入圖像;逐行遍歷處理模塊,用于使用前述圖像處理裝置進行逐行遍歷處理所述輸入圖像中的每一個像素點,得到處理后的圖像。又再一方面,提供了一種顯示控制卡,適于連接led顯示屏且包括圖像處理裝置。所述圖像處理裝置包括:降灰階處理模塊,用于對目標像素點的灰度值進行降灰階處理;梯度計算模塊,用于計算所述目標像素點在預設區域中多個誤差擴散方向上的梯度值,其中所述多個誤差擴散方向為預設誤差擴散模板中的誤差擴散方向;誤差擴散模板生成模塊,用于根據所述梯度值和所述預設誤差擴散模板計算得到梯度誤差擴散模板;誤差擴散模塊,用于根據所述梯度誤差擴散模板對所述目標像素點降灰階處理后的小數部分進行誤差擴散。
又另一方面,提供了一種顯示控制卡,適于連接led顯示屏且包括圖像處理裝置。所述圖像處理裝置包括:圖像輸入模塊,用于接收輸入圖像;逐行遍歷處理模塊,用于使用前述圖像處理裝置進行逐行遍歷處理所述輸入圖像中的每一個像素點,得到處理后的圖像。
上述技術方案中的一個技術方案具有如下優點或有益效果:有別于現有技術中針對所有圖像像素點將誤差按照固定的比例分配給周圍像素,采用結合梯度方向的誤差擴散模板進行降灰階處理過程中的誤差擴散,也即同一副輸入圖像的各個像素點在進行降灰階處理后的誤差擴散時所采用的誤差擴散模板在各個誤差擴散方向上的各個系數取值會因不同像素點而不同,從而可以極大地改善現有技術存在的偽輪廓現象,提高畫面顯示質量。
附圖說明
為了更清楚地說明本發明實施例的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1a為本發明實施例中提供的一種圖像處理裝置的模塊示意圖;
圖1b為圖1a中的梯度計算模塊中的子模塊示意圖;
圖1c為圖1a中的誤差擴散模塊生成模塊的子模塊示意圖;
圖2為本發明再一實施例中提供的一種圖像處理裝置的模塊示意圖;
圖3為本發明另一實施例中提供的一種顯示控制卡的模塊示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
具體地,本發明實施例針對現有技術存在的技術問題,提出了方向相關性的誤差擴散方法,極大地改善現有技術存在的偽輪廓現象,提高畫面顯示質量,從而對于固有灰度顯示精度為16bit的led顯示屏可以達到18bit及以上的灰度顯示效果。
具體地,本發明下述實施例以floyd-steinberg擴散模板為例說明本實施例的圖像處理方法的具體實施過程。
根據floyd-steinberg擴散模板,此處定義:像素點x(當前像素點)與其右邊像素點、正下方像素點、右下方像素點、左下方像素點的方向分別記為水平方向、垂直方向、主對角線方向、次對角線方向;并記下表值分別為value1=7,value2=3,value3=5,value4=1,sumvalue=value1+value2+value3+value4。
對于原圖像中的任意一個像素點,本實施例首先計算其分別沿水平方向、垂直方向、主對角線方向、次對角形方向的梯度值;根據梯度計算原理可知,某一個方向的梯度值越小,則該像素點沿此方向運動的可能性越大,因而本實施例設計為其誤差沿此方向擴散的比例應該更大;其次,根據梯度值結合floyd-steinberg擴散模板的值,重新計算當前像素點的誤差擴散模板,此處稱之為梯度誤差擴散模板;然后,按照現有的誤差擴散原理進行誤差擴散。具體步驟如下:
(a)計算當前像素點img(i,j)沿水平方向、垂直方向、主對角線方向、次對角線方向等各個誤差擴散方向的梯度值hor_grad、ver_grad、maindiag_grad、seconddiag_grad。
以img(i,j)為中心的指定大小像素點區域例如3*3像素點區域如下:
本實施例在以img(i,j)為中心的3*3像素點區域內利用以下公式計算梯度值:
hor_grad=abs[(img(i,j+1)+img(i,j-1))/2-img(i,j)]
ver_grad=abs[(img(i+1,j)+img(i-1,j))/2-img(i,j)]
maindiag_grad=abs[(img(i+1,j+1)+img(i-1,j-1))/2-img(i,j)]
seconddiag_grad=abs[(img(i+1,j-1)+img(i-1,j+1))/2-img(i,j)]。
概括而言,本實施例的梯度值計算方式為:計算每一個誤差擴散方向上位于當前像素點img(i,j)兩側的多個像素點例如兩個的灰度值的平均值與當前像素點img(i,j)的灰度值之差的絕對值作為誤差擴散方向上的梯度值。
(b)計算梯度誤差擴散模板
(b1)對梯度的倒數值進行歸一化:某一方向的梯度值越小,則該像素點沿此方向運動的可能性越大,對應其誤差沿此方向擴散的比例應該更大。其中ex是為了防止公式無效而增加的,表示一個極小的值,這里例如ex=0.001,thr是調節梯度對擴散模板系數影響的值,這里例如設置thr=10或者其它經驗值;
sum=1/(hor_grad+ex)+1/(ver_grad+ex)+1/(maindiag_grad+ex)+1/(seconddiag_grad+ex),
hor=thr×1/(hor_grad+ex)/sum,
ver=thr×1/(ver_grad+ex)/sum,
maindiag=thr×1/(maindiag_grad+ex)/sum,
seconddiag=thr×1/(seconddiag_grad+ex)/sum。
(b2)得出梯度誤差擴散模板:
其中,coef1=(value1+hor)/(thr+sumvalue),
coef2=(value2+seconddiag)/(thr+sumvalue),
coef3=(value3+ver)/(thr+sumvalue),
coef4=(value3+maindiag)/(thr+sumvalue)
概括而言,本實施例的梯度誤差擴散模板計算方式為:對每一個誤差擴散方向上的梯度值的倒數值進行歸一化得到歸一化值,獲取預設誤差擴散模板例如floyd-steinberg擴散模板的多個誤差擴散方向上的系數值之和得到系數和值,以及根據每一個誤差擴散方向上的預設誤差擴散模板的系數值和歸一化值以及系數和值計算得到梯度誤差擴散模板在誤差擴散方向上的系數值。
(c)對于一副原圖像數據,采用從左到右且從上到下掃描方式或蛇形遍歷方式逐行遍歷處理每一個像素點的像素值,并在逐行遍歷處理過程中按照梯度誤差擴散模板也即更新后的floyd-steinberg誤差擴散模板將遍歷的當前像素點img(i,j)進行降灰階處理后的小數部分擴散到周圍像素點上,以得到處理后圖像。此處的處理后圖像可以提供至目標顯示屏例如led顯示屏進行顯示或者進行存儲;進一步地,對于原圖像數據進行降灰階處理并利用梯度誤差擴散模板進行誤差擴散的方法可執行在連接led顯示屏的接收卡或發送卡等顯示控制卡上的處理器中,也可以是執行在上位機的處理器中;而且典型的應用是由接收卡上的處理器例如可編程邏輯器件(例如fpga器件)來執行原圖像數據的降灰階處理并按照梯度誤差擴散模板進行誤差擴散。本實施例的蛇形遍歷方式具體為奇數行從左到右,偶數行從右到左;蛇形掃描方式的優勢主要體現在低灰上,避免灰度處理的不均勻性。
為便于進一步清楚地理解本實施例,下面列舉具體例子對降灰階處理和誤差擴散的方法進行詳細說明:
假設要用4bit數據帶寬表示8bit的數據,即原256(也即28)灰度級圖像上的一個像素點(假設灰度值為120),現在要將其轉換為16(24)級(也可以理解為將圖像亮度降低為原來的6.25%),具體實現方法包括以下步驟:
(一)、計算將120用16級表示后的值value=16×120/256=7.5,保留整數部分為該像素值;
(二)、將小數部分0.5的誤差擴散到周圍像素點上。以前述得到的梯度誤差擴散模板為例,將這0.5的誤差分為sum=(coef1+coef2+coef3+coef4)份,按下述模板進行擴散。
(i)pixel(i,j)表示當前像素點(例如灰度值為120),則用16級表示后的值(亮度降低為原來的6.25%時)為pixelout(i,j)=floor(16×120/256)=7;
(ii)將0.5的誤差按照擴散模板擴散到當前像素的右方、左下方、正下方以及右下方的相鄰像素上,具體擴散如下:
pixel(i,j+1)=pixel(i,j+1)+0.5×16×coef1/sum,
pixel(i+1,j-1)=pixel(i+1,j-1)+0.5×16×coef2/sum,
pixel(i+1,j)=pixel(i+1,j)+0.5×16×coef3/sum,
pixel(i+1,j+1)=pixel(i+1,j+1)+0.5×16×coef4/sum。
最后,值得一提的是,本方明實施例的梯度誤差擴散模板計算中所采用的預設誤差擴散模板不局限于舉例的floyd-steinberg擴散模板,對于其他的誤差擴散模板例如basic擴散模板、sierra擴散模板、jarris-judice-ninke擴散模板等同樣適用。
a)、basic擴散模板如下:
b)、sierra擴散模板如下:
c)、jarris-judice-ninke擴散模板如下:
承上述,例如以sierra擴散模板而言,可以采用以當前像素點為中心的3*3像素點區域來計算梯度值,或者采用以當前像素點為中心的5*5甚至更大的像素點區域來計算梯度值;簡而言之,本發明實施例是計算預設誤差擴散模板定義的多個誤差擴散方向上的像素灰度梯度并利用計算得到的像素灰度梯度更新預設誤差擴散模板在所述多個誤差擴散方向上的系數值(此處可以是更新部分系數值,也可以是更新全部系數值)以得到梯度誤差擴散模板,之后在對輸入圖像進行降灰階處理并將當前像素點降灰階處理后的小數部分按照梯度誤差擴散模板擴散到其周圍像素點上,進而得到處理后圖像作為輸出。
此外,參見圖1a,其為本發明實施例提出的一種圖像處理裝置的模塊示意圖。如圖1a所示,本實施例的圖像處理裝置10包括:降灰階處理模塊11、梯度計算模塊13、誤差擴散模板生成模塊15以及誤差擴散模塊17。
其中,降灰階處理模塊11用于對目標像素點的灰度值進行降灰階處理;梯度計算模塊13用于計算所述目標像素點在預設區域中多個誤差擴散方向上的梯度值,其中所述多個誤差擴散方向為預設誤差擴散模板中的誤差擴散方向;誤差擴散模板生成模塊15用于根據所述梯度值和所述預設誤差擴散模板計算得到梯度誤差擴散模板;以及誤差擴散模塊17用于根據所述梯度誤差擴散模板對所述目標像素點降灰階處理后的小數部分進行誤差擴散。再者,梯度計算模塊13、誤差擴散模板生成模塊15的具體功能細節可參考前述實施例的梯度值計算方式和梯度誤差擴散模板計算方式,在此不再贅述;而至于降灰階處理模塊11和誤差擴散模塊17的具體功能細節可以參考前述實施例的關于降灰階處理和誤差擴散的方法的詳細說明,在此也不再贅述。
進一步地,如圖1b所示,梯度計算模塊13例如包括:第一計算模塊131,用于計算每一個誤差擴散方向上位于目標像素點兩側的多個像素點的灰度值的平均值與目標像素點的灰度值之差的絕對值作為該誤差擴散方向上的梯度值。
另外,如圖1c所示,誤差擴散模板生成模塊15例如包括:歸一化模塊151、第二計算模塊153和第三計算模塊155。其中,歸一化模塊151用于對每一個誤差擴散方向上的梯度值的倒數值進行歸一化得到歸一化值;第二計算模塊153用于獲取預設誤差擴散模板的多個誤差擴散方向上的系數值之和得到系數和值;以及第三計算模塊155用于根據每一個誤差擴散方向上的預設誤差擴散模板的系數值和歸一化值以及系數和值計算得到梯度誤差擴散模板在該誤差擴散方向上的系數值。
參見圖2,其為本發明再一實施例提出的一種圖像處理裝置的模塊示意圖。如圖2所示,本實施例的圖像處理裝置20包括:圖像輸入模塊21和逐行遍歷處理模塊23;其中逐行遍歷處理模塊23包括降灰階處理模塊231、梯度計算模塊233、誤差擴散模板生成模塊235以及誤差擴散模塊237。
具體地,圖像輸入模塊21用于接收輸入圖像;逐行遍歷處理模塊12用于逐行遍歷處理所述輸入圖像中的每一個像素點,其典型地采用從左到右且從上到下掃描方式、或蛇形遍歷方式遍歷處理所述輸入圖像中的每一個像素點,以得到處理后的圖像。具體而言,逐行遍歷處理模塊23在遍歷處理輸入圖像中的每一個像素點時,具體是將當前遍歷到的像素點作為目標像素點由降灰階處理模塊231、梯度計算模塊233、誤差擴散模板生成模塊235和誤差擴散模塊237進行降灰階處理、梯度值計算、梯度誤差擴散模塊計算和誤差擴散。至于降灰階處理模塊231、梯度計算模塊233、誤差擴散模板生成模塊235和誤差擴散模塊237的具體功能與圖1a、圖1b和圖1c所示模塊11、13、15及17的功能相同,在此不再贅述。
再者,值得說明的是,圖1a-1c所示的圖像處理裝置10和圖2所示的圖像處理裝置20例如是由保存在存儲器中的多個軟件模塊實現且這些軟件模塊可由上位機中的處理器或者發送卡或接收卡等顯示控制卡上的處理器來執行。
參見圖3,其為本發明實施例中的一種顯示控制卡的模塊示意圖。如圖3所示,本實施例的顯示控制卡30適于連接led顯示屏且包括圖像處理裝置31。本實施例的圖像處理裝置31用于對輸入圖像進行降灰階處理及降灰階后小數部分的誤差擴散處理得到處理后的圖像,其可以是圖1a-1c所示的圖像處理裝置10,也可以是圖2所示的圖像處理裝置20。至于本實施例的顯示控制卡30,其可以是發送卡或接收卡等,而圖像處理裝置31中用于實現降灰階處理和誤差擴散處理的各個模塊可以是執行于發送卡或接收卡上的可編程邏輯器件例如fpga上的軟件模塊。
綜上所述,本發明實施例的圖像處理方法及裝置以及顯示控制卡有別于現有技術中針對所有圖像像素點將誤差按照固定的比例分配給周圍像素,采用結合梯度方向的誤差擴散模板進行降灰階處理過程中的誤差擴散,也即同一副輸入圖像的各個像素點在進行降灰階處理后的誤差擴散時所采用的誤差擴散模板在各個誤差擴散方向上的各個系數取值會因不同像素點而不同,從而可以極大地改善現有技術存在的偽輪廓現象,提高畫面顯示質量。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統,裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多路單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多路網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用硬件加軟件功能單元的形式實現。
上述以軟件功能單元的形式實現的集成的單元,可以存儲在一個計算機可讀取存儲介質中。上述軟件功能單元存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的部分步驟。而前述的存儲介質包括:u盤、移動硬盤、只讀存儲器(read-onlymemory,簡稱rom)、隨機存取存儲器(randomaccessmemory,簡稱ram)、磁碟或者光盤等各種可以存儲程序代碼的介質。
最后應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。