国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

圖像空洞填補(bǔ)算法及其FPGA硬件實(shí)現(xiàn)

2021-09-30 05:09伍能舉楊依忠
關(guān)鍵詞:像素點(diǎn)空洞視圖

伍能舉, 徐 棟, 楊依忠

(合肥工業(yè)大學(xué) 電子科學(xué)與應(yīng)用物理學(xué)院,安徽 合肥 230601)

在2D圖像通過(guò)基于深度圖像繪制(depth image based rendering,DIBR)方法轉(zhuǎn)換成左右視圖時(shí)[1-2],左視圖和右視圖中會(huì)出現(xiàn)空洞點(diǎn)??斩词菆D像中像素值與周圍像素相比異常并且會(huì)給視覺(jué)帶來(lái)不適的圖像像素,因此在目標(biāo)圖像繪制時(shí)需要進(jìn)行圖像空洞的填補(bǔ)??斩袋c(diǎn)通常為固定大小的值,即像素值為0,極少數(shù)不為0的空洞像素值也小于一定的閾值。在空洞填補(bǔ)時(shí),通過(guò)對(duì)像素值與規(guī)定的閾值進(jìn)行比較,判斷像素點(diǎn)是否屬于空洞點(diǎn),再對(duì)其進(jìn)行處理。處理空洞主要分為深度圖預(yù)處理和空洞填補(bǔ)2個(gè)步驟,深度圖預(yù)處理一般通過(guò)濾波來(lái)平滑深度圖以減少3D圖像的失真[3],但是濾波無(wú)法解決深度圖中前景與后景深度差異大而導(dǎo)致的空洞。對(duì)空洞的簡(jiǎn)單填補(bǔ)也可以通過(guò)濾波算法[4-5]來(lái)進(jìn)行處理,但是濾波會(huì)造成圖像的模糊而丟失一些細(xì)節(jié),從而影響視覺(jué)效果。整體變分法[6]能夠修復(fù)圖像中的空洞點(diǎn),但是該方法是通過(guò)迭代修復(fù)來(lái)實(shí)現(xiàn)的,因此存在計(jì)算量大、耗時(shí)長(zhǎng)等問(wèn)題?;跇颖镜膱D像空洞修復(fù)[7]對(duì)紋理豐富的圖像中的空洞能有效地修復(fù),但是對(duì)圖像紋理有一定的要求。文獻(xiàn)[8]提出通過(guò)插值相鄰像素點(diǎn)來(lái)進(jìn)行空洞填補(bǔ)的方法,該方法易于實(shí)現(xiàn),但是沒(méi)有考慮到鄰域像素中也會(huì)存在空洞點(diǎn)的問(wèn)題。

本文提出一種DIBR方法繪制目標(biāo)視圖中的空洞填補(bǔ)算法,算法步驟如下:先通過(guò)深度梯度過(guò)渡方法對(duì)簡(jiǎn)單濾波后的深度圖進(jìn)行預(yù)處理,減少目標(biāo)視圖中的空洞;再考慮填補(bǔ)像素中空洞點(diǎn)數(shù)量的不同,分別設(shè)置對(duì)應(yīng)的權(quán)值,給出對(duì)應(yīng)的填補(bǔ)方法。傳統(tǒng)的圖像空洞填補(bǔ)技術(shù)是基于軟件的方法,現(xiàn)場(chǎng)可編程門陣列(field programmable gate array,FPGA)的發(fā)展給圖像處理提供了良好途徑[9-10],它具有高速的并行運(yùn)算能力,可以用來(lái)進(jìn)行圖像硬件實(shí)現(xiàn)[11-14]。本文算法同時(shí)在Matlab軟件平臺(tái)上和FPGA硬件平臺(tái)上進(jìn)行驗(yàn)證,實(shí)驗(yàn)結(jié)果表明填補(bǔ)效果良好。

1 算法設(shè)計(jì)

本文算法包括深度梯度過(guò)渡和空洞填補(bǔ)2個(gè)部分,深度梯度過(guò)渡是一種有別于其他預(yù)處理的方法,可以適當(dāng)減少深度圖前景與后景深度差異造成的空洞,為后續(xù)空洞填補(bǔ)算法高效運(yùn)行提供良好基礎(chǔ);空洞填補(bǔ)算法充分考慮到鄰域插值填補(bǔ)像素中存在空洞點(diǎn)的問(wèn)題,可更加合理有效地對(duì)空洞進(jìn)行填補(bǔ)。

1.1 深度梯度過(guò)渡

DIBR虛擬視點(diǎn)繪制通過(guò)深度圖與參考圖像繪制目標(biāo)圖像,目標(biāo)圖像為左視圖或右視圖。針對(duì)目標(biāo)視圖中前后景邊界空洞,采用前景與后景深度邊界梯度過(guò)渡的方法來(lái)減少空洞。算法針對(duì)左視圖進(jìn)行處理,若為右視圖則邊界判斷方法一致,過(guò)渡方向改為向右。深度圖中的前景與后景邊界需要通過(guò)相鄰像素深度值的差值來(lái)獲得,若其差值大于預(yù)先給定的閾值d0,則認(rèn)為此處為前后景邊界處,公式如下:

Dd(i,j)=

(1)

其中:D(i,j)為深度圖中在位置為(i,j)處的深度值;Dd(i,j)為前景與后景的邊界。通過(guò)前景與后景的深度梯度過(guò)渡,可以減少由于深度圖中的前景與后景邊界深度值變化劇烈導(dǎo)致的空洞。深度梯度過(guò)渡公式為:

D(i,j-k)=[D(i,j-k-1)+D(i,j)]/2

(2)

當(dāng)Dd(i,j)=1時(shí),說(shuō)明深度圖中前景與后景邊界已經(jīng)進(jìn)行了標(biāo)記,對(duì)標(biāo)記位置進(jìn)行深度梯度過(guò)渡,其中k為深度梯度過(guò)渡的步數(shù),實(shí)驗(yàn)中將k值設(shè)為5時(shí),邊界空洞基本不再變化。深度梯度過(guò)渡后需要對(duì)過(guò)渡的邊界進(jìn)行閾值判斷,目的是使過(guò)渡后的邊界滿足平穩(wěn)變化的條件。閾值判斷公式為:

|D(i,j-k)-D(i,j-k-1)|

(3)

其中,a為閾值。若不滿足條件則繼續(xù)過(guò)渡。

1.2 空洞填補(bǔ)

圖像中的空洞點(diǎn)可以認(rèn)為是受損的像素點(diǎn),該位置的像素點(diǎn)與其周圍的像素點(diǎn)存在較大的關(guān)聯(lián),因此,可利用周圍像素點(diǎn)與空洞點(diǎn)的關(guān)系來(lái)進(jìn)行填補(bǔ)。本文提出一種改進(jìn)的鄰域像素空洞填補(bǔ)方法。由于空洞點(diǎn)多為縱向連續(xù)分布,即空洞點(diǎn)的上方和下方大概率也存在空洞點(diǎn),如果只是使用空洞像素的8個(gè)鄰域像素點(diǎn),將無(wú)法充分利用其周圍信息,故在橫向上額外增加A2、E22個(gè)像素作為空洞填補(bǔ)的參考像素。考慮到離空洞越近的像素點(diǎn)與空洞的相關(guān)性越強(qiáng),因此賦予離空洞像素點(diǎn)位置遠(yuǎn)的填補(bǔ)像素較小的權(quán)值,對(duì)離空洞近的填補(bǔ)像素點(diǎn)賦予大權(quán)值以保證填補(bǔ)的效果。由2D圖像通過(guò)DIBR方法轉(zhuǎn)換生成的左視圖與右視圖僅僅是視差不同,空洞填補(bǔ)的方式一致??斩磁c鄰域填補(bǔ)像素的關(guān)系如圖1所示。

圖1 空洞與鄰域填補(bǔ)像素的關(guān)系

若C2為空洞點(diǎn),使用B1、C1、D1、B2、D2、B3、C3、D3、A2、E2這10個(gè)像素進(jìn)行空洞填補(bǔ)。但填補(bǔ)像素中依然可能存在空洞點(diǎn),且通常這10個(gè)像素不會(huì)都是空洞點(diǎn),則需要對(duì)填補(bǔ)像素中的空洞點(diǎn)數(shù)量進(jìn)行討論,根據(jù)填補(bǔ)像素中空洞點(diǎn)的數(shù)量不同,給出不同的填補(bǔ)方法。若填補(bǔ)過(guò)程中這10個(gè)像素點(diǎn)中無(wú)空洞,則填補(bǔ)公式為:

C2=(B1+C1+D1+B2+D2+B3+

C3+D3)w1+(A2+E2)w2

(4)

記C2的8像素鄰域中的空洞數(shù)目為m,A2、E22個(gè)像素中空洞數(shù)目為n,考慮到填補(bǔ)像素中空洞點(diǎn)數(shù)量對(duì)填補(bǔ)效果的影響,若m<8且n<2,則空洞填補(bǔ)公式為:

D2+B3+C3+D3)+

(5)

若m=8且n<2,則空洞填補(bǔ)公式為:

(6)

若m<8且n=2,則空洞填補(bǔ)公式為:

D2+B3+C3+D3)

(7)

根據(jù)以上方法可以對(duì)圖像中的空洞點(diǎn)進(jìn)行有效填補(bǔ),彌補(bǔ)了鄰域像素空洞填補(bǔ)方法中沒(méi)有考慮鄰域填補(bǔ)像素存在空洞點(diǎn)的問(wèn)題。

2 軟件算法的硬件FPGA實(shí)現(xiàn)

本算法的硬件實(shí)現(xiàn)是基于FPGA平臺(tái),使用Altera的Cyclone IV EP4CE15開(kāi)發(fā)板,該開(kāi)發(fā)板具有15×103個(gè)邏輯單元、4 Mibit的SRAM、256 Mibit的SDRAM以及時(shí)鐘管理單元等資源。算法的硬件設(shè)計(jì)包括3×5窗口模板生成模塊、空洞判斷與填補(bǔ)模塊,最后進(jìn)行了VGA的顯示。原理結(jié)構(gòu)如圖2所示。

圖2 空洞填補(bǔ)FPGA原理結(jié)構(gòu)

輸入圖像數(shù)據(jù)流為灰度圖,其灰度值范圍在0~255之間,通過(guò)移位寄存器生成3×5的窗口模板,利用窗口模板對(duì)空洞進(jìn)行判斷和填補(bǔ),最后通過(guò)VGA顯示輸出實(shí)驗(yàn)結(jié)果。

2.1 3×5窗口生成模塊

因?yàn)榕c在軟件中對(duì)圖像進(jìn)行處理的方式不同,硬件中的圖像信息是以數(shù)據(jù)流的方式進(jìn)行傳輸?shù)?與時(shí)鐘周期有關(guān),1個(gè)時(shí)鐘周期只能發(fā)送或者接收1個(gè)像素?cái)?shù)據(jù),從而無(wú)法一次性對(duì)整幅圖片進(jìn)行處理,所以需要設(shè)計(jì)窗口模板來(lái)進(jìn)行相應(yīng)的像素處理,并通過(guò)窗口模板的滑動(dòng)來(lái)實(shí)現(xiàn)對(duì)整幅圖片的空洞填補(bǔ)操作。為了得到3×5窗口模板,使用先進(jìn)先出(First-In- First-Out,FIFO)隊(duì)列來(lái)作為圖像數(shù)據(jù)的緩沖器。實(shí)驗(yàn)中通過(guò)調(diào)用Quartus II軟件中的基于RAM的移位寄存器宏模塊altshift-taps實(shí)現(xiàn)行延遲以生成 3×5窗口模板。進(jìn)行緩存的深度設(shè)置為輸入圖像的行像素總數(shù)。這樣1個(gè)時(shí)鐘周期里通過(guò)3個(gè)移位寄存器可以輸出3個(gè)像素?cái)?shù)據(jù),通過(guò)5個(gè)時(shí)鐘周期可以輸出15個(gè)像素?cái)?shù)據(jù),滿足了生成3×5的窗口模板,在模板中可以對(duì)這些像素進(jìn)行空洞判斷和填補(bǔ)。

2.2 空洞填補(bǔ)模塊

3×5窗口模板可以取到15個(gè)像素?cái)?shù)據(jù),如果像素是空洞就利用這模板中的10個(gè)像素?cái)?shù)據(jù)進(jìn)行空洞填補(bǔ)。圖像的空洞填補(bǔ)運(yùn)算需要利用卷積與求和的計(jì)算方法,通??梢酝ㄟ^(guò)觸發(fā)器、加法器和乘法器的硬件設(shè)計(jì)來(lái)進(jìn)行相應(yīng)的數(shù)學(xué)運(yùn)算,但該方法比較繁瑣,本文采用可編程乘加法器和可編程多路并行加法器等來(lái)實(shí)現(xiàn)空洞填補(bǔ)需要的數(shù)學(xué)計(jì)算??斩刺钛a(bǔ)的移位寄存器像素運(yùn)算結(jié)構(gòu)如圖3所示。

圖3 空洞填補(bǔ)運(yùn)算結(jié)構(gòu)

空洞填補(bǔ)運(yùn)算結(jié)構(gòu)由3個(gè)基于移位寄存器的Line Buffer、10個(gè)可編程乘法器及4組并行加法器構(gòu)成。Line Buffer0、Line Buffer1和Line Buffer2對(duì)輸入圖像數(shù)據(jù)中相鄰的3行像素分別進(jìn)行緩存,模板中鄰域像素值與w1相乘,非鄰域像素值與w2相乘,通過(guò)可編程多路并行加法器處理數(shù)據(jù)后即可得到空洞的填補(bǔ)值。具體地,當(dāng)圖像數(shù)據(jù)輸入時(shí),圖像數(shù)據(jù)在時(shí)鐘控制下并行傳遞到后續(xù)的寄存器,持續(xù)5個(gè)時(shí)鐘周期后生成3×5的窗口模板,此時(shí)Line Buffer0中B1、C1、D1的輸出與w1并行相乘,相乘得到的數(shù)據(jù)再并行相加,并行相加的輸出為S1,為空洞填補(bǔ)結(jié)果的一部分。同理Line Buffer1和Line Buffer2也經(jīng)過(guò)乘加運(yùn)算分別得到S2、S3,最終S1、S2、S3通過(guò)并行加法器運(yùn)算得到空洞填補(bǔ)的結(jié)果。

3 實(shí)驗(yàn)結(jié)果與分析

3.1 軟件實(shí)驗(yàn)結(jié)果及分析

3.1.1 深度梯度過(guò)渡結(jié)果

為了驗(yàn)證算法深度梯度過(guò)渡的效果,在Matlab軟件平臺(tái)上對(duì)圖片進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)選取的圖片是在2D轉(zhuǎn)3D過(guò)程中生成的左視圖,目標(biāo)視圖中存在空洞。圖片的名稱為Ding,分辨率為1 024×768。深度梯度過(guò)渡后局部對(duì)比如圖4所示。從圖4可以看出,通過(guò)深度梯度過(guò)渡處理減少了位于雕像左側(cè)前景與后景邊界的空洞數(shù)量,同時(shí)提高了視覺(jué)效果。

圖4 深度梯度過(guò)渡后局部對(duì)比

3.1.2 空洞填補(bǔ)

由空洞填補(bǔ)公式知,因?yàn)榭斩刺钛a(bǔ)使用10個(gè)像素作為填補(bǔ)像素,所以填補(bǔ)參數(shù)w1、w2應(yīng)滿足8w1+2w2=1的條件,由填補(bǔ)時(shí)像素與空洞遠(yuǎn)近關(guān)系知w1>w2,w1的范圍在0.100~0.125之間,w2的范圍在0~0.1之間,w1的值分別選取0.105、0.110、0.115、0.120進(jìn)行試驗(yàn),以獲得最佳的參數(shù)。使用峰值信噪比(peak signal-to-noise ratio,PSNR)對(duì)填補(bǔ)后的圖像進(jìn)行評(píng)估,當(dāng)w1取0.115時(shí),得到較好的PSNR值。對(duì)圖片Ding進(jìn)行空洞填補(bǔ)前后的實(shí)驗(yàn)結(jié)果如圖5所示。

圖5 Ding圖片實(shí)驗(yàn)結(jié)果

對(duì)比圖5a、圖5b可知,通過(guò)算法能有效地去除圖像中的空洞。對(duì)Ding實(shí)驗(yàn)結(jié)果與加權(quán)均值濾波算法[5]、整體變分算法[6]及基于樣本的填補(bǔ)算法[7]的結(jié)果進(jìn)行了比較,結(jié)果見(jiàn)表1所列。

表1 空洞填補(bǔ)參數(shù)比較

因?yàn)闉V波會(huì)導(dǎo)致圖片模糊而丟失圖片的部分細(xì)節(jié),使用這種方法進(jìn)行空洞填補(bǔ)將會(huì)導(dǎo)致填補(bǔ)后的目標(biāo)視圖視覺(jué)效果不理想,所以使用濾波方法來(lái)處理圖片中的空洞并不合適。本文算法只針對(duì)空洞進(jìn)行處理,能很好地保存圖片細(xì)節(jié)部分。由表1可知,本文算法的PSNR為38.64 dB,高于其他算法,均方誤差(mean square error,MSE)為8.90,低于其他算法,本文算法的PSNR與MSE性能指標(biāo)優(yōu)于其他3種算法。

3.2 硬件實(shí)現(xiàn)及測(cè)試

硬件實(shí)現(xiàn)及測(cè)試實(shí)驗(yàn)使用Altera的Cyclone IV EP4CE15 FPGA開(kāi)發(fā)板。SD讀卡模塊、異步FIFO讀寫模塊與SDRAM讀寫模塊、空洞填補(bǔ)算法模塊、VGA顯示模塊共同構(gòu)成完整的實(shí)驗(yàn)系統(tǒng)。聯(lián)機(jī)調(diào)試前,先對(duì)代碼進(jìn)行了波形仿真,使用ModelSim軟件對(duì)算法仿真的結(jié)果如圖6所示。

圖6 空洞填補(bǔ)仿真波形

從空洞填補(bǔ)仿真波形可以看出,在輸入完整的15個(gè)像素窗口模板數(shù)據(jù)后,對(duì)空洞像素C2進(jìn)行填補(bǔ),填補(bǔ)前的像素值為二進(jìn)制數(shù),值為00000000(十進(jìn)制為0),填補(bǔ)后該位置的像素二進(jìn)制數(shù)值為10011111(十進(jìn)制為159),不再是空洞像素。同時(shí),將填補(bǔ)后的像素值與其上、下、左、右4個(gè)像素值進(jìn)行比較,觀察填補(bǔ)后的像素與其周圍的像素是否差異過(guò)大。若差異過(guò)大則可能造成填補(bǔ)后位置的像素視覺(jué)效果差。空洞上、下、左、右4個(gè)位置如下:B2為10101001(十進(jìn)制169);C1為10101001(十進(jìn)制169);D2為10101111(十進(jìn)制175);C3為10100011(十進(jìn)制163),因此填補(bǔ)后的像素值C22與周圍像素在梯度變化上差異小,不會(huì)造成不良的視覺(jué)效果。為了測(cè)試空洞在硬件上的填補(bǔ)效果,將代碼用Quartus 軟件下載到FPGA開(kāi)發(fā)板進(jìn)行測(cè)試,填補(bǔ)前與填補(bǔ)后的結(jié)果如圖7所示。從圖7可以看出,在FPGA硬件平臺(tái)上能有效地填補(bǔ)圖片中的空洞,沒(méi)有視覺(jué)不適的現(xiàn)象,效果良好,同時(shí),空洞去除后,對(duì)圖片中的其他細(xì)節(jié)并沒(méi)有造成影響。因此,設(shè)計(jì)的空洞填補(bǔ)算法在FPGA硬件平臺(tái)上也能針對(duì)圖片空洞進(jìn)行有效的填補(bǔ)。

圖7 FPGA空洞填補(bǔ)前后結(jié)果

4 結(jié) 論

本文針對(duì)DIBR方法繪制后的目標(biāo)視圖存在空洞的問(wèn)題,提出了一種對(duì)目標(biāo)圖像空洞有效填補(bǔ)的算法,先對(duì)深度圖前景與后景邊界中存在的空洞進(jìn)行深度梯度過(guò)渡預(yù)處理,然后利用空洞點(diǎn)與周圍像素關(guān)系,即根據(jù)與空洞像素距離設(shè)置不同的權(quán)值w1、w2,并且考慮填補(bǔ)像素中的空洞數(shù)量,給出不同填補(bǔ)方法。最后將該算法在Matlab軟件平臺(tái)上和FPGA硬件平臺(tái)上分別進(jìn)行了驗(yàn)證,實(shí)驗(yàn)結(jié)果表明填補(bǔ)效果良好。

猜你喜歡
像素點(diǎn)空洞視圖
番茄出現(xiàn)空洞果的原因及防治措施
基于局部相似性的特征匹配篩選算法
如何避免想象作文空洞無(wú)“精神”
一種X射線圖像白點(diǎn)噪聲去除算法
基于canvas的前端數(shù)據(jù)加密
視圖
圖像采集過(guò)程中基于膚色理論的采集框自動(dòng)定位
Y—20重型運(yùn)輸機(jī)多視圖
SA2型76毫米車載高炮多視圖
空洞的眼神