胡云生, 胡越黎, 燕 明, 承文龍, 王 權(quán)
(1.上海市電站自動化技術(shù)重點實驗室,上海200444;2.上海大學(xué)機電工程與自動化學(xué)院,上海200444;3.上海大學(xué)微電子研究與開發(fā)中心,上海200444)
隨著圖像技術(shù)的不斷發(fā)展,對圖像質(zhì)量的要求越來越高.雖然已有的圖像傳感器技術(shù)有了很大的提高,但由于在制造工藝、運輸和儲存方法等多個環(huán)節(jié)存在不足,加之使用時間的延長,使得圖像傳感器總會存在一些不正常的點,即壞點[1].壞點大小通常僅有一個像素,表現(xiàn)為亮點或暗點.壞點固定存在于感光元件中,不能感應(yīng)到外界的明暗光線變化以及色彩,導(dǎo)致圖像不能真實體現(xiàn)現(xiàn)實場景.因此,在圖像處理中,有必要對存在的壞點進(jìn)行壞點修正(dead pixel correction,DPC).
目前對壞點進(jìn)行修正的方法一般有兩種:①事先記錄壞點的位置信息并保存,根據(jù)該信息對壞點進(jìn)行消除,但需要一個較大的存儲空間;②通過濾波的方式來濾除壞點,雖然不需要保存壞點位置,但是濾波方式的不同可能會對圖像的邊緣信息造成較大損失.采用非線性空間濾波的方式[2]可以相對減少圖像邊緣信息的損失;而采用基于多重統(tǒng)計排序濾波的方式[3],算法中的參數(shù)能夠根據(jù)預(yù)估的壞點數(shù)量進(jìn)行自適應(yīng)調(diào)節(jié).
在圖像傳感器的使用過程中可能會造成硬件損壞,從而不可避免產(chǎn)生新的壞點.因此在壞點修正算法中,通常需要對未知壞點位置的圖像進(jìn)行壞點修正,而如何有效并且準(zhǔn)確地判斷壞點是很多壞點修正研究的重點.現(xiàn)有的基本方法是在以當(dāng)前待測像素點為中心,大小為5×5像素的色彩濾波(color filter array,CFA)矩陣[4](見圖1)基礎(chǔ)上,對當(dāng)前待測像素點進(jìn)行壞點判斷.
圖1 初始5×5 CFA矩陣Fig.1 Original 5×5 CFA matrix
文獻(xiàn)[5]利用當(dāng)前待測像素點鄰域數(shù)值的均值和標(biāo)準(zhǔn)差,將圖像分為平坦區(qū)和非平坦區(qū),分別設(shè)置高、低閾值.當(dāng)待測像素點在閾值外時,則判定其為壞點.該算法需要設(shè)定平坦區(qū)和非平坦區(qū)的參數(shù),且可通過調(diào)節(jié)參數(shù)去除多個連續(xù)壞點并且保邊,但需要確定的參數(shù)較多,很難達(dá)到滿意的效果.文獻(xiàn)[6]使用兩級壞點檢測方法:第一級檢測能夠很好地檢測出60%的壞點,并將保留的30%可疑壞點在第二級檢測中進(jìn)行精細(xì)檢測,從而避免了對整個圖像中可能出現(xiàn)的壞點進(jìn)行精細(xì)檢測,減少了一定的檢測處理時間.
本算法針對任何設(shè)備獲取的任何一張圖像,在沒有事先得知設(shè)備壞點的情況下,對該圖像中的壞點進(jìn)行檢測及處理,實現(xiàn)流程如圖2所示.首先,選擇對應(yīng)的參考像素矩陣,通過設(shè)置亮度閾值,判斷待測像素點是否為亮點或暗點,并結(jié)合噪點閾值,判斷待測像素點是否為壞點,同時對壞點進(jìn)行替換處理.其次,根據(jù)待測像素點與參考像素點的差值判斷待測像素點是否處于邊緣,并進(jìn)行邊緣保護(hù).最后,考慮了多個壞點連續(xù)存在的情況,對可能的壞點同時進(jìn)行處理,提高算法的處理效果.
在壞點檢測及處理的研究中,多數(shù)算法都是在5×5 CFA矩陣(見圖1)中選取相同顏色的像素點作為參考,在對比待測像素點與參考像素點差異值的基礎(chǔ)上,采用不同的比較判斷方法來判斷當(dāng)前像素點是否為壞點[3,5-8].
本算法同樣基于5×5 CFA矩陣,通過迭代的方式進(jìn)行處理.本算法以當(dāng)前待測像素點為中心,將前面4個相同顏色的像素點作為經(jīng)過壞點修正后的可靠像素點,并作為當(dāng)前待測像素點的替代值.由于壞點大小通常只有一個像素,而壞點與亮點或暗點的區(qū)別在于當(dāng)前像素點與鄰域像素點之間亮度的差異值較大,因此檢測壞點的方法主要是對比當(dāng)前待測像素點與鄰域內(nèi)其他同顏色像素點之間的亮度差值.當(dāng)差值大于設(shè)定的壞點閾值時,則判斷當(dāng)前待測像素點為壞點.
圖2 算法流程圖Fig.2 Algorithm flow
本算法基于5×5 CFA矩陣,根據(jù)當(dāng)前像素點是否為G(Green)點,以相同顏色的9個像素點為參考.兩種相同顏色像素參考矩陣的選擇方式如圖3所示:若當(dāng)前像素點為G點,則以圖3(a)為準(zhǔn)選取參考像素點;若當(dāng)前像素點為R(Red)點或B(Blue)點,則以圖3(b)為準(zhǔn)選擇參考像素點.判斷當(dāng)前待測像素點S5是否為亮點或暗點時,設(shè)定亮點判斷閾值THb以及暗點判斷閾值THd,用PSi表示像素點Si的像素值,具體判斷方法如下:當(dāng)PS5>max{PS1,PS2,PS3,PS4}+THb時為亮點;當(dāng)PS5 圖3 Green,Red,Blue像素參考矩陣Fig.3 Referenced pixelmatrix of Green,Red,Blue pixels 根據(jù)1.1節(jié)的判斷方法得到的壞點有可能處于圖像的邊緣位置,而壞點修正時的替代值可能不在該邊緣位置,從而造成圖像邊緣的不夠連續(xù).為保證對圖像質(zhì)量更好的保護(hù),獲得良好的邊緣效果,本算法考慮了壞點是否處于圖像的邊緣位置,并對不同邊緣的壞點選擇不同的替代值進(jìn)行修正. 在圖像的邊緣檢測研究中,利用圖像當(dāng)前像素點周圍4個方向上的鄰域像素差別[9],來判斷該像素點是否處于圖像的邊緣位置是較為簡單普遍的方法.此外,也可以采用色彩梯度來判斷圖像的邊緣[10],并對圖像進(jìn)行相應(yīng)的邊緣處理. 本算法在判定壞點是否在圖像邊緣位置時,對該壞點是否處于水平H、豎直V、正斜I、反斜T 4個方向進(jìn)行了判斷.判斷方法是將該壞點在4個方向上像素值的變化量(即?H,?V,?T,?I的大小)與設(shè)定圖像的方向閾值進(jìn)行對比.在5×5 CFA矩陣中,該壞點在4個方向上的變化量為 式中,D∈{H,V,T,I}表示H,V,I,T 4個方向,?D0表示該方向上壞點兩邊4個像素值的變化量,?D?1和?D+1分別表示相應(yīng)的方向上壞點兩邊4個像素值相對于該方向壞點像素值的變化量. 本算法是根據(jù)設(shè)定的各個方向的方向閾值來進(jìn)行方向判斷.本算法設(shè)置4個方向像素值的方向閾值分別為TH1,TH2,THd1,THd2,其中THd1和THd2用于判斷當(dāng)前壞點是處于水平、豎直兩個方向,還是處于正斜、反斜兩個方向,TH1和TH2用于進(jìn)一步確定當(dāng)前壞點具體處于哪個方向. 根據(jù)4個方向變化量,結(jié)合設(shè)定的方向閾值,由式(2)和(3)可以得到水平、豎直和正斜、反斜兩組方向的變化量?HV,?TI. (1)當(dāng)?HV??TI>THd1時,表明該壞點在水平H或豎直V方向上.進(jìn)一步地,當(dāng)?H??V>TH1時,則確定該壞點在豎直V方向的邊緣上;當(dāng)?V??H>TH1時,則確定該壞點在水平H方向的邊緣上. (2)當(dāng)?TI??HV>THd2時,表明該壞點在正斜I或反斜T方向上.進(jìn)一步地,當(dāng)?T??I>TH2時,則確定該壞點在正斜I方向的邊緣上;當(dāng)?I??T>TH2時,則確定該壞點在反斜T方向的邊緣上. 當(dāng)該壞點周圍像素差值不滿足上述4種情況時,則判定該壞點不在圖像的邊緣,此時壞點不具有方向. 本算法考慮到了圖像在初始5×5 CFA矩陣中出現(xiàn)多個連續(xù)壞點的情況,因此在壞點判斷時,根據(jù)設(shè)置的去壞點強度,預(yù)判后面的4個像素點S6~S9是否同樣為壞點(見圖3).當(dāng)設(shè)定為單一壞點時,S6~S9中無壞點;當(dāng)兩個壞點連續(xù)出現(xiàn)時,S6~S9中與S5像素差值最小的一個像素點為壞點;當(dāng)3個壞點連續(xù)出現(xiàn)時,S6~S9中與S5像素差值最小的兩個像素點為壞點;當(dāng)4個壞點連續(xù)出現(xiàn)時,S6~S9中與S5像素差值最小的3個像素點為壞點.當(dāng)預(yù)判后續(xù)像素點同樣為壞點時,對預(yù)判為壞點的像素點同樣進(jìn)行處理,即直接將預(yù)判的壞點修正. 使用多個壞點連續(xù)出現(xiàn)的預(yù)判并修正時,不會對當(dāng)前壞點像素的處理過程造成影響,而且在后續(xù)迭代處理后面的像素時,能保證對多個連續(xù)壞點的檢測不會出現(xiàn)漏檢的情況,且對多個壞點連續(xù)出現(xiàn)的圖像能獲得一個較好的處理效果. 當(dāng)壞點檢測結(jié)束后,在確定了當(dāng)前像素點以及在原始像素矩陣中當(dāng)前像素點后面相同顏色的像素點是否也為壞點后,再根據(jù)壞點是否處在邊緣位置進(jìn)行不同的替代值替換. 當(dāng)圖像只有單一壞點出現(xiàn)時.若當(dāng)前壞點不在圖像的邊緣位置時,則直接選擇前面4個可靠像素點中與當(dāng)前像素差值最小的像素點作為當(dāng)前壞點的替代值,對當(dāng)前壞點進(jìn)行處理;若當(dāng)前壞點在圖像的邊緣位置時,則根據(jù)不同的方向選擇對應(yīng)方向上的可靠像素點作為當(dāng)前壞點的替代值,對當(dāng)前壞點進(jìn)行處理.具體處理如下:若壞點為I方向,則用S1替代壞點;若為V方向,則用S2替代壞點;若為T方向,則用S3替代壞點;若為H方向,則用S4來替代壞點. 當(dāng)圖像中存在2,3,4個壞點連續(xù)出現(xiàn)時,除了對當(dāng)前像素點處理之外,對矩陣中當(dāng)前像素點之后被預(yù)判為壞點的同顏色像素點進(jìn)行相同的壞點處理. 本算法主要是在5×5 CFA矩陣中,以中心點為待測像素點,選取矩陣中另外24個像素點中的8個作為參考像素點,通過CFA矩陣中待測像素點前面相同顏色的4個像素值最值.與待測像素點進(jìn)行1次作差值比較來判斷待測像素點是否為壞點,同時利用1次除法二分運算、1次加法運算以及3次作差值比較來判斷壞點的方向性.為了實現(xiàn)算法對連續(xù)壞點的處理,本算法增加了4次差值比較對后續(xù)4個像素點進(jìn)行壞點的預(yù)判.在整個實現(xiàn)過程中,本算法在保證達(dá)到處理效果的要求下,采用11次簡單的作差值比較運算,以及1次加法運算和1次除法運算,保持了較小的算法復(fù)雜性.相比之下,文獻(xiàn)[5]算法雖然同樣是多次采用作差值比較,相對保持了較小的復(fù)雜性,但是在處理效果上并未對圖像邊緣處出現(xiàn)的壞點進(jìn)行判斷,同時在連續(xù)壞點出現(xiàn)的情況下,未能表現(xiàn)出較好的處理能力;而文獻(xiàn)[6]算法則多次利用求和以及乘法、除法運算,極大地增加了算法的算法復(fù)雜性.3種算法的具體計算次數(shù)如表1所示. 表1 3種算法的復(fù)雜性對比Table 1 Complexity comparisons of the three algorithms 為驗證本算法的處理效果,選取一張標(biāo)準(zhǔn)Kodak圖像,并且人為加入壞點,形成一張壞點圖像.本工作分別采用文獻(xiàn)[5]算法、文獻(xiàn)[6]算法和本算法對壞點圖像的去壞點效果,包括單一壞點處理、圖像保邊效果以及多個連續(xù)壞點處理效果進(jìn)行對比測試. 首先,本工作對比了這3種算法對單一壞點圖像處理的效果.本算法經(jīng)過大量實驗數(shù)據(jù)進(jìn)行參數(shù)調(diào)節(jié),在所有像素值為0~255的情況下,最終確定當(dāng)亮點判斷閾值THb和暗點判斷閾值THd均為10,4個方向閾值TH1,TH2,THd1,THd2分別為160,160,80,80時,算法的整體效果達(dá)到最佳水平.針對同一個輸入壞點數(shù)目為942的單壞點圖像實驗結(jié)果進(jìn)行了對比,結(jié)果如圖4所示,其中上半部分圖片為壞點圖像處理原圖,下半部分圖片為各自圖像對應(yīng)的同一局部的像素級放大圖.可以看出,3種算法對圖像中的單一壞點皆具有較好的處理效果. 圖4 3種算法對單一壞點圖像處理的效果Fig.4 Eff ects of the single dead pixel performance of the three algorithms 統(tǒng)計圖4中壞點處理的誤檢數(shù)目與漏檢數(shù)目,結(jié)果如表2所示.可以看出,在3種算法參數(shù)設(shè)置均為最佳時,在保證每種算法都能有效處理掉圖像中的壞點,并且壞點漏檢數(shù)目最少的情況下,本算法對單壞點圖像的誤檢數(shù)目相對另外兩種算法是最少的,能有效提高算法的處理速度. 表2 3種算法去單一壞點性能比較Table 2 Single dead pixel performance comparisons of the three algorithms 其次,本工作對3種算法的邊緣壞點處理效果進(jìn)行了測試,結(jié)果如圖5所示.可以看出,本算法在圖像邊緣的保護(hù)上具有一定的優(yōu)勢. 圖5 3種算法對邊緣壞點的處理效果Fig.5 Eff ects of the dead pixel on edge performance of the three algorithms 最后,本工作為了驗證3種算法對多個連續(xù)壞點處理的效果,對多個連續(xù)壞點圖像進(jìn)行了測試,結(jié)果如圖6所示,其中上半部分為壞點圖像處理原圖,下半部分圖片為各自圖像對應(yīng)的連續(xù)存在幾個壞點的局部像素級放大圖.可以看出,文獻(xiàn)[5]和文獻(xiàn)[6]算法對多個連續(xù)壞點圖像的處理效果有些欠缺,在連續(xù)存在3,4個壞點的情況下無法對壞點進(jìn)行有效處理,而本算法則相對具有較好的處理效果. 圖6 3種算法對多個連續(xù)壞點的處理效果Fig.6 Eff ects of the multiple dead pixel performance of the three algorithms 針對壞點圖像,本工作提出了一種壞點檢測及修正算法.經(jīng)過實驗驗證,本算法能有效實現(xiàn)壞點檢測及修正.同時,相對于現(xiàn)有的一些算法,對減少誤檢數(shù)目、增強圖像邊緣以及提高多個連續(xù)壞點情況下的處理效果有了一定的優(yōu)化,得到了較好的處理結(jié)果.今后的研究還可以進(jìn)一步優(yōu)化改進(jìn)多個連續(xù)壞點預(yù)判方法,在保證多個連續(xù)壞點修正效果的同時,進(jìn)一步減少誤檢數(shù)目,加快圖像壞點處理的研究.1.2 邊緣判斷
1.3 多個連續(xù)壞點的預(yù)判
1.4 壞點處理
1.5 算法復(fù)雜性分析
2 實驗結(jié)果
3 結(jié)束語