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

?

基于FPGA的九點(diǎn)插值自適應(yīng)圖像縮放算法設(shè)計(jì)

2023-08-16 07:01:52朱明達(dá)辛鵬常嘉穎
液晶與顯示 2023年8期
關(guān)鍵詞:鄰域像素點(diǎn)插值

朱明達(dá), 辛鵬, 常嘉穎

(中國(guó)石油大學(xué)(北京) 信息科學(xué)與工程學(xué)院, 北京 102249)

1 引言

視頻圖像縮放技術(shù)目前在醫(yī)療、遙感、軍事等領(lǐng)域有著廣泛的應(yīng)用[1-2],多采用FPGA進(jìn)行視頻圖像的實(shí)時(shí)處理。當(dāng)前主流的視頻圖像縮放算法可以分為兩大類:第一類是基于傳統(tǒng)插值的縮放算法[3],這類算法求得的插值點(diǎn)與圖像邊緣信息無(wú)關(guān),而只與插值點(diǎn)周圍源像素點(diǎn)的像素值有關(guān)。最常見的有最近鄰域法、雙線性插值法、雙立方插值法等[4]。最近鄰域法簡(jiǎn)單易實(shí)現(xiàn),但生成圖像質(zhì)量不高。雙線性插值法計(jì)算量大且本身有低通濾波器的特性,導(dǎo)致圖像高頻分量受損,圖像邊界變得模糊。雙立方插值法雖然計(jì)算精度高,但是計(jì)算量巨大,算法復(fù)雜度高,不易于硬件實(shí)現(xiàn)。第二類是基于圖像邊緣信息的插值算法[5-7],常見的算法包括Sobel[8]、Prewitt[9]、Canny[10]等。這類算法求得的插值點(diǎn)與圖像邊緣信息相關(guān),因此可以得到比傳統(tǒng)插值算法更好的視覺效果,但這類算法復(fù)雜度較高,很難滿足視頻實(shí)時(shí)縮放的需求。

基于上述分析,本文提出一種九點(diǎn)插值圖像縮放基本算法,該算法相比雙線性插值算法減少了邏輯資源消耗,有效提高了圖像縮放效果。由于最近鄰域法資源量消耗小,且具有高通濾波器的特性,可以較好地保留圖像邊緣的高頻信息,因此本文又提出一種自適應(yīng)插值算法,將九點(diǎn)插值基本算法與最近鄰域法相結(jié)合。對(duì)處于非圖像邊緣的像素點(diǎn)采用九點(diǎn)插值基本算法,對(duì)處于圖像邊緣的像素點(diǎn)采用最近鄰域算法,在減少硬件資源使用的同時(shí)得到了比最近鄰域法、雙線性插值算法更好的圖像縮放效果。

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

2.1 傳統(tǒng)縮放算法

最近鄰域插值算法如圖1所示,將插值點(diǎn)周邊4個(gè)源像素點(diǎn)分成4個(gè)區(qū)域分別設(shè)為Area1、Area2,Area3、Area4,根據(jù)縮放比例算出的插值點(diǎn)坐標(biāo)落在哪個(gè)區(qū)域,其像素值就取該區(qū)域源像素點(diǎn)的像素值。

圖1 最近鄰域算法Fig.1 Nearest neighbor algorithm

設(shè)插值點(diǎn)與周圍4個(gè)鄰點(diǎn)的距離分別為d1、d2、d3、d4,則該插值點(diǎn)的像素值為:

其中:g(x,y)為插值點(diǎn)像素值,fi(x,y)為距離插值點(diǎn)最近的源像素點(diǎn)的像素值。

雙線性插值算法如圖2所示,該算法將周圍4個(gè)源像素點(diǎn)的像素值通過兩次線性插值求得插值點(diǎn)的像素值。

圖2 雙線性插值算法Fig.2 Bilinear interpolation

設(shè)插值點(diǎn)坐標(biāo)為k(x,y),周圍4個(gè)源像素點(diǎn)設(shè)為p1、p2、p3、p4,4個(gè)源像素點(diǎn)坐標(biāo)為p1([x],[y])、p2([x+1],[y])、p3([x],[y+1])、p4([x+1],[y+1])。設(shè)插值點(diǎn)與p1像素點(diǎn)的水平距離為u,垂直距離為v,通過兩次線性插值計(jì)算可求得插值點(diǎn)的像素值。首先通過第一次線性插值求出f1、f2點(diǎn)處的像素值為:

再由f1、f2處的像素值經(jīng)過第二次線性插值得到插值點(diǎn)處的像素值k(x,y):

最近鄰域插值算法雖然運(yùn)算簡(jiǎn)單,在硬件實(shí)現(xiàn)上需要消耗的時(shí)間資源和邏輯資源都較少,但是會(huì)引入嚴(yán)重的圖像失真,縮放過后的圖像會(huì)產(chǎn)生馬賽克現(xiàn)象。雙線性插值算法的圖像縮放效果較好,能夠很好地恢復(fù)圖像的信息,但是其中包含許多小數(shù)乘法運(yùn)算,即使使用定點(diǎn)數(shù)來(lái)代替浮點(diǎn)數(shù),仍然需要消耗較多的時(shí)間資源和邏輯資源。

2.2 九點(diǎn)插值基本算法

針對(duì)最近鄰域插值縮放效果差、雙線性插值消耗硬件資源多的問題,本文提出一種九點(diǎn)插值基本算法。該算法無(wú)需計(jì)算小數(shù)乘法等需要消耗大量邏輯資源的運(yùn)算,只需要進(jìn)行加法運(yùn)算和移位運(yùn)算即可,最終縮放效果相較于最近鄰域法縮放后的圖像效果有了顯著提升,但略差于雙線性插值算法。算法的具體原理如圖3所示。圖3中黑色的點(diǎn)表示實(shí)際的源像素點(diǎn),白色的點(diǎn)表示虛擬的像素點(diǎn),虛擬點(diǎn)像素值由源像素點(diǎn)插值獲得:

圖3 九點(diǎn)插值基本算法Fig.3 Nine-point interpolation algorithm

將該圖像區(qū)域分為4個(gè)區(qū)域分別為Area1、Area2、Area3、Area4。當(dāng)插值點(diǎn)落在某個(gè)區(qū)域中時(shí),其像素值取其周圍4個(gè)源像素點(diǎn)的像素值均值,并由式(6)~(10)得到。例如當(dāng)插值點(diǎn)落在Area1時(shí),其像素值為:

同理可得插值點(diǎn)落在Area2、Area3、Area4區(qū)域內(nèi)的像素值分別為:

將等式(11)~(14)兩邊同時(shí)乘以16,可以得到:

因此在算法實(shí)現(xiàn)上,將小數(shù)乘法運(yùn)算改為移位相加運(yùn)算,例如在計(jì)算F(Q1)像素值時(shí),將式(11)中多個(gè)源像素點(diǎn)累加得到結(jié)果后,將結(jié)果右移4位,即將數(shù)值縮小16倍即可得到真正的插值點(diǎn)像素值,避免了小數(shù)乘法運(yùn)算。減少了邏輯資源的消耗。

2.3 九點(diǎn)插值自適應(yīng)縮放算法

根據(jù)像素點(diǎn)之間的相關(guān)性強(qiáng)弱可以將圖像分為平滑區(qū)域和邊緣區(qū)域。平滑區(qū)域像素點(diǎn)之間相關(guān)性強(qiáng),用九點(diǎn)插值基本算法可以得到比最近鄰域法更好的縮放效果;而圖像邊緣的像素點(diǎn)之間的相關(guān)性較弱,由于最近鄰域法具有高通濾波的特性,在此區(qū)域使用最近鄰域法可以有效保護(hù)邊緣。因此,本文提出一種基于九點(diǎn)插值基本算法與最近鄰域法相結(jié)合的自適應(yīng)縮放算法,根據(jù)判定像素點(diǎn)位于圖像平滑區(qū)還是邊緣區(qū)來(lái)自動(dòng)選擇插值算法。

圖像邊緣區(qū)域檢測(cè)及方向角判斷采用行平均的思想,通過計(jì)算插值點(diǎn)所在區(qū)域4個(gè)角度的4個(gè)鄰點(diǎn)像素點(diǎn)的灰度和之差,取最大值設(shè)為Amax。若Amax大于某個(gè)設(shè)定的閾值,則判定此時(shí)Amax對(duì)應(yīng)的角度為此點(diǎn)的方向角,采用最近鄰域法取該方向上源像素點(diǎn)或虛擬點(diǎn)的像素值為輸出值;若Amax小于閾值,則判定為平坦區(qū)域,采用九點(diǎn)插值基本算法來(lái)算出插值點(diǎn)像素值。方向角判定如圖4所示。

圖4 方向角判定Fig.4 Direction angel determination

4個(gè)角度分別為0°、45°、90°、135°,通過4個(gè)方向公式來(lái)計(jì)算每個(gè)方向?qū)?yīng)的灰度和之差:

如圖5(a)所示,將一張分辨率為300×300的圖像按照此方法求出圖像邊緣,閾值設(shè)定的越小,圖像邊緣顯示得越清晰。邊緣檢測(cè)方法中閾值一般設(shè)置在60~90之間[11],本文將閾值設(shè)定為70,實(shí)驗(yàn)效果較好,得到的邊緣圖如圖5(b)所示。

圖5 圖像邊緣判定Fig.5 Image edge determination

3 算法分析

為了驗(yàn)證本文算法的有效性,在MATLAB中對(duì)本文方法、最近鄰域法和雙線性插值算法進(jìn)行圖像縮放實(shí)驗(yàn)。選用大小300×300的灰度lena圖像作為原圖,先將圖片長(zhǎng)寬分別縮小4倍,然后采用不同縮放算法對(duì)圖像長(zhǎng)寬分別進(jìn)行4倍放大,放大后的圖像與原圖尺寸相同。圖片經(jīng)不同縮放算法處理得到實(shí)驗(yàn)結(jié)果如圖6所示。

圖6 灰度圖像放大效果對(duì)比Fig.6 Comparison of grayscale image enlargement effect

由圖6可見,最近鄰域算法縮放的圖像出現(xiàn)了嚴(yán)重的馬賽克失真現(xiàn)象;雙線性插值縮放效果比最近鄰域法要好,但是圖像邊緣不夠清晰;九點(diǎn)插值基本算法在平坦區(qū)域縮放算法較好,但同樣在圖像邊緣不清晰;而九點(diǎn)插值自適應(yīng)插值算法在圖像平坦區(qū)域效果較好,同時(shí)在圖像邊緣區(qū)域的馬賽克現(xiàn)象要好于前幾種算法。

峰值信噪比(PSNR)是最常用的評(píng)價(jià)圖像縮放效果的客觀指標(biāo)之一,其具體公式如式(23)所示:

其中:I代表大小為M×N的原始圖像,K代表經(jīng)過縮放處理后與原圖像大小相同的目標(biāo)圖像。峰值信噪比的值越大,表示圖像損失的信息越少,圖像縮放效果越好。

對(duì)300×300 Lena、512×512 Baboon、480×480 Barbara、800×800 Goldhill和600×600 Peppers幾張圖像的長(zhǎng)寬分別縮小4倍,然后采用不同縮放算法對(duì)圖像長(zhǎng)寬分別放大4倍,放大后的圖像與原圖尺寸相同,計(jì)算幾張圖像與原圖像的峰值信噪比,結(jié)果如表1所示。

表1 算法的PSNR值對(duì)比Tab.1 Comparison of algorithm PSNR

由表1可以看出,第三列為本文提出的九點(diǎn)插值基本算法,其縮放效果要優(yōu)于最近鄰域插值算法,但略差于雙線性插值算法;第四列為本文提出的九點(diǎn)插值自適應(yīng)算法,由于其在圖像邊緣處對(duì)九點(diǎn)插值基本算法進(jìn)行了算法優(yōu)化,其圖像質(zhì)量?jī)?yōu)于其他3種算法的圖像質(zhì)量。九點(diǎn)插值自適應(yīng)算法的PSNR值相比于最近鄰域插值與雙線性插值算法普遍高出0.5~3 dB。

4 算法硬件實(shí)現(xiàn)

4.1 系統(tǒng)組成

硬件系統(tǒng)由FPGA、SD卡、DDR3存儲(chǔ)模塊、HDMI輸出接口及外圍電路模塊組成。系統(tǒng)的硬件組成如圖7所示。其中主控芯片選用Xilinx公司xc7a35tfgg484-2型號(hào)的FPGA芯片。

圖7 系統(tǒng)整體框架Fig.7 Overall system framework

4.2 插值算法的硬件設(shè)計(jì)

本文設(shè)計(jì)的自適應(yīng)圖像縮放算法可以根據(jù)圖像邊緣與平坦區(qū)域采用不同的插值算法。當(dāng)插值點(diǎn)鄰域被判定為平坦區(qū)域時(shí),通過九點(diǎn)插值基本算法進(jìn)行插值運(yùn)算;當(dāng)插值點(diǎn)鄰域被判定為邊緣區(qū)域時(shí),通過最近鄰域法進(jìn)行插值運(yùn)算。在進(jìn)行九點(diǎn)插值基本算法的設(shè)計(jì)時(shí),將小數(shù)乘法操作改為源像素點(diǎn)的移位操作,大幅減少了硬件資源消耗。在FPGA硬件平臺(tái)上進(jìn)行了圖像的縮放算法實(shí)現(xiàn),本文設(shè)計(jì)的九點(diǎn)插值自適應(yīng)縮放算法流程如圖8所示。

圖8 算法邏輯框圖Fig.8 Algorithm logic diagram

首先生成目標(biāo)圖像對(duì)應(yīng)原圖像的坐標(biāo)并輸入到數(shù)據(jù)緩存模塊。數(shù)據(jù)緩存模塊根據(jù)對(duì)應(yīng)坐標(biāo)從DDR3中讀取原圖像數(shù)據(jù),存滿兩行圖像數(shù)據(jù)后,將數(shù)據(jù)輸入到虛擬點(diǎn)與方向角判斷模塊,此模塊將計(jì)算虛擬點(diǎn)坐標(biāo)以及判斷圖像邊緣角度。將邊緣方向4個(gè)角度、不是邊緣點(diǎn)共5種模式用Mode的5個(gè)值來(lái)表示。當(dāng)判斷為邊緣點(diǎn)時(shí),根據(jù)邊緣方向?qū)⒔嵌确譃?°、45°、90°、135°,對(duì)應(yīng)將數(shù)據(jù)輸入到最近鄰域插值運(yùn)算模塊,Mode的值分別為0、1、2、3;當(dāng)判斷為非邊緣點(diǎn)時(shí),Mode的值為4,對(duì)應(yīng)將數(shù)據(jù)輸入到九點(diǎn)插值運(yùn)算模塊。具體FPGA功能模塊設(shè)計(jì)如圖7中FPGA內(nèi)部功能框圖所示。

采用Modelsim對(duì)FPGA實(shí)現(xiàn)的自適應(yīng)插值算法進(jìn)行硬件仿真,結(jié)果如圖9所示。f11~f33分別為輸入到自適應(yīng)插值算法模塊中的4個(gè)源像素點(diǎn)與5個(gè)虛擬點(diǎn)。Mode為不同角度對(duì)應(yīng)的模式。當(dāng)Mode為4時(shí),代表此時(shí)插值點(diǎn)所處區(qū)域?yàn)槠教箙^(qū)域,通過九點(diǎn)插值基本算法計(jì)算輸出像素值;當(dāng)Mode為0時(shí),此時(shí)插值點(diǎn)所處區(qū)域?yàn)檫吘墔^(qū)且邊緣方向?yàn)?°,輸出像素值為此方向的像素值。通過與仿真所用圖像對(duì)比可以看出,Mode為0時(shí)所對(duì)應(yīng)圖像位置的確是邊緣,初步證明了FPGA實(shí)現(xiàn)的正確性。

在實(shí)際驗(yàn)證實(shí)驗(yàn)中,將擬處理圖像存入SD卡中,系統(tǒng)讀取圖像并進(jìn)行處理,將處理后的圖像存入SD卡并通過HDMI視頻接口顯示在顯示器上。對(duì)540×540 Baboon、540×540 Barbara、540×540 Goldhill和540×540 Peppers等圖像的長(zhǎng)寬分別進(jìn)行2倍的放大操作,圖像放大后尺寸為原圖的4倍,放大后的圖像大小為1 080×1 080。最終存儲(chǔ)到SD卡中,縮放后的圖片如圖10所示。將SD卡中的圖像讀出并顯示在分辨率為1 920×1 080的顯示器上,由于圖像為1 080×1 080,因此顯示器屏幕兩側(cè)有黑條,最終顯示器上顯示的圖像如圖11所示。

圖10 圖像縮放結(jié)果圖Fig.10 Image scaling result graphs

對(duì)最近鄰域插值、雙線性插值、九點(diǎn)插值基本算法、九點(diǎn)自適應(yīng)插值算法進(jìn)行硬件實(shí)現(xiàn),分別統(tǒng)計(jì)各算法的資源用量,結(jié)果如表2所示??梢钥闯?,九點(diǎn)插值自適應(yīng)算法的硬件資源使用量比雙線性插值減少了約20%。

表2 硬件資源使用表Tab.2 Hardware resource usage table

計(jì)算幾張圖像與原圖像的峰值信噪比,結(jié)果如表3所示??梢钥闯鲈诨贔PGA實(shí)現(xiàn)的處理算法中,九點(diǎn)插值自適應(yīng)算法的處理效果最好,其PSNR值相比最近鄰域插值與雙線性插值算法普遍高出0.3~2.5 dB。

表3 SD卡中縮放后圖像的PSNR值Tab.3 PSNR value of scaled images in SD card

5 結(jié)論

本文提出一種九點(diǎn)插值自適應(yīng)縮放算法,對(duì)原始圖像進(jìn)行虛擬點(diǎn)的計(jì)算,通過計(jì)算插值點(diǎn)周圍鄰點(diǎn)0°、45°、90°、135° 4個(gè)方向上的像素變化值,并將變化值與設(shè)定的閾值進(jìn)行比較,進(jìn)而判斷選擇合適的插值算法計(jì)算得到目標(biāo)像素值。通過對(duì)算法進(jìn)行軟件仿真與硬件實(shí)現(xiàn)驗(yàn)證得到該算法的峰值信噪比比最近鄰域、雙線性插值圖像縮放算法提高了0.3~2.5 dB,同時(shí)在資源使用量上本文算法比雙線性插值算法減少了約20%。本文算法復(fù)雜度不高,利于硬件實(shí)現(xiàn)。本文提出的九點(diǎn)插值自適應(yīng)縮放算法在硬件資源極其有限的應(yīng)用場(chǎng)景具有很高的實(shí)用價(jià)值。

猜你喜歡
鄰域像素點(diǎn)插值
稀疏圖平方圖的染色數(shù)上界
基于Sinc插值與相關(guān)譜的縱橫波速度比掃描方法
基于鄰域競(jìng)賽的多目標(biāo)優(yōu)化算法
基于canvas的前端數(shù)據(jù)加密
基于逐像素點(diǎn)深度卷積網(wǎng)絡(luò)分割模型的上皮和間質(zhì)組織分割
關(guān)于-型鄰域空間
一種改進(jìn)FFT多譜線插值諧波分析方法
基于四項(xiàng)最低旁瓣Nuttall窗的插值FFT諧波分析
基于Node-Cell結(jié)構(gòu)的HEVC幀內(nèi)編碼
Blackman-Harris窗的插值FFT諧波分析與應(yīng)用
台南县| 凌云县| 双桥区| 邛崃市| 田阳县| 民和| 大悟县| 蒲城县| 阿拉善盟| 贡山| 休宁县| 嵩明县| 宕昌县| 温泉县| 黄大仙区| 湾仔区| 房山区| 贵溪市| 姜堰市| 大化| 海南省| 新蔡县| 辉南县| 哈尔滨市| 化德县| 毕节市| 安远县| 沙河市| 萨迦县| 长乐市| 应用必备| 湟中县| 南丰县| 通渭县| 遵化市| 宜阳县| 余庆县| 米脂县| 牟定县| 天水市| 蒙自县|