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