欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法

文檔序號(hào):7955821閱讀:1088來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種用于圖像放大處理過(guò)程中的插值方法,尤其是涉及一種用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法。
背景技術(shù)
現(xiàn)有的各種視頻顯示設(shè)備中,圖像放大處理是必需的常用操作。為適應(yīng)特殊場(chǎng)合和獲得較好的視覺(jué)效果,常常需要一種有效的方法來(lái)改變已有圖像的大小,并保證改變后的圖像有較好的質(zhì)量。對(duì)于圖像的放大處理,不僅要求有非常好的質(zhì)量,還需要盡可能快的速度。最簡(jiǎn)單的方法是平移重復(fù)插值,即最鄰近像素插值,這種方法實(shí)現(xiàn)速度非常快,但是放大后的圖像會(huì)出現(xiàn)馬賽克效應(yīng)。實(shí)際操作中最常用的雙線(xiàn)性插值方法比較簡(jiǎn)單,運(yùn)算速度也比較快。但是在一些對(duì)運(yùn)算速度有比較高的要求的應(yīng)用中,如在高分辨率醫(yī)學(xué)專(zhuān)用顯示器上處理大的CR圖像時(shí),由于這類(lèi)圖像數(shù)據(jù)量一般遠(yuǎn)大于普通圖像,圖像處理需要更多的時(shí)間,尤其是當(dāng)放大倍數(shù)較大時(shí)會(huì)出現(xiàn)明顯時(shí)滯,類(lèi)似這種應(yīng)用中,圖像放大的處理速度成為一個(gè)瓶頸。
目前普遍采用的對(duì)圖像放大進(jìn)行處理的雙線(xiàn)性插值方法,分兩步對(duì)圖像進(jìn)行幾何運(yùn)算首先,對(duì)圖像進(jìn)行空間坐標(biāo)變換;其次,對(duì)圖像進(jìn)行灰度級(jí)插值。而坐標(biāo)變換和灰度級(jí)插值都會(huì)對(duì)圖像放大的處理時(shí)間產(chǎn)生影響,另外,灰度級(jí)插值還會(huì)影響到最后放大的圖像質(zhì)量。
例如,原圖像為A圖像,大小為m×n;放大后的目標(biāo)圖像為B圖像,大小為M×N(M>m,N>n),圖像的雙線(xiàn)性插值放大分為兩個(gè)步驟坐標(biāo)變換和雙線(xiàn)性插值。坐標(biāo)變換就是將原圖像A和縮放后的目標(biāo)圖像B之間建立坐標(biāo)映射關(guān)系。雙線(xiàn)性插值就是在坐標(biāo)變換的基礎(chǔ)上,通過(guò)與目標(biāo)像素點(diǎn)坐標(biāo)臨近的四個(gè)已知像素點(diǎn)來(lái)計(jì)算目標(biāo)像素的顏色值。如圖1所示,四個(gè)已知臨近像素點(diǎn)組成一個(gè)小的2鄰域正方形,我們把這樣的2鄰域正方形稱(chēng)做一個(gè)處理單元。每一個(gè)位于處理單元內(nèi)部的目標(biāo)像素點(diǎn)的顏色水平都可以通過(guò)四個(gè)頂點(diǎn)的顏色水平進(jìn)行雙線(xiàn)性插值得到(式(1)、式(2))。
(i)f(M)=a×f(P1)+(1-a)×f(P2)(ii)f(N)=a×f(P3)+(1-a)×f(P4)(iii)f(X)=b×f(M)+(1-b)×f(N)...(1)]]>
將(1)式進(jìn)行簡(jiǎn)化得到(i)f(M)=f(P2)+[f(P1)-f(P2)]×a(ii)f(N)=f(P4)+[f(P3)-f(P4)]×a(iii)f(X)=f(N)+[f(M)-f(N)]×a...(2)]]>(1),(2)式中f(P)表示坐標(biāo)為P的顏色值。
在插值縮放過(guò)程中,需要遍歷所有的處理單元,處理單元的個(gè)數(shù)決定了遍歷時(shí)間,遍歷時(shí)間主要是由指針移動(dòng),存取操作的開(kāi)銷(xiāo)組成。插值過(guò)程中首先要在原圖像和目標(biāo)圖像之間建立坐標(biāo)映射關(guān)系,然后才能進(jìn)行插值。通常采用的映射方法是將目標(biāo)圖像坐標(biāo)映射到原圖像中。即將目標(biāo)圖像中的每一個(gè)像素點(diǎn)坐標(biāo)(x′,y′)都通過(guò)坐標(biāo)變換影射到原圖像中的相應(yīng)位置(x,y)x=x′×n/Ny=y′×m/M---(3)]]>然后根據(jù)原圖像中對(duì)應(yīng)的小鄰域計(jì)算目標(biāo)圖像中像素點(diǎn)的值。如圖2所示,X=(x,y)為目標(biāo)圖像中的像素點(diǎn)坐標(biāo)X′=(x′,y′)映射到原圖像中的坐標(biāo)位置(一般都是小數(shù)),與X臨近的四個(gè)像素點(diǎn)組成一個(gè)處理單元,通過(guò)雙線(xiàn)性插值計(jì)算其像素值。計(jì)算一個(gè)目標(biāo)像素點(diǎn)需要3次浮點(diǎn)乘法,6次浮點(diǎn)加法。但是由于每一個(gè)目標(biāo)像素點(diǎn)都要映射到一個(gè)處理單元,處理單元的總數(shù)有M×N個(gè)。同時(shí)對(duì)于目標(biāo)圖像的邊緣像素,存在X落在原圖像之外的情況,需要對(duì)這種情況進(jìn)行特別處理,比如對(duì)原圖像的邊緣像素進(jìn)行延拓。這樣在處理過(guò)程中還要有分支跳轉(zhuǎn)指令的開(kāi)銷(xiāo)。上述這些因素結(jié)合起來(lái),導(dǎo)致了目前的用雙線(xiàn)性插值方法進(jìn)行圖像放大處理的時(shí)間相對(duì)比較長(zhǎng),也就是處理的速度較慢。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提出一種用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法,在不影響或極少影響原圖像縮放質(zhì)量的前提下,能夠大大提高處理的速度。
本發(fā)明解決上述技術(shù)問(wèn)題所采用的技術(shù)方案為一種用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法,對(duì)于大小為m×n的原圖像和大小為M×N的目標(biāo)圖像,定義原圖像和目標(biāo)圖像都以左上角像素作為坐標(biāo)原點(diǎn),右方向?yàn)閤正方向,向下方向?yàn)閥正方向,原圖像坐標(biāo)系中點(diǎn)的坐標(biāo)為(x,y),目標(biāo)圖像像素坐標(biāo)為(x′,y′),然后采用以下步驟獲得目標(biāo)圖像像素點(diǎn)的灰度值1)準(zhǔn)備在原圖像的列方向(x坐標(biāo)方向)和行方向(y坐標(biāo)方向)上分別以步長(zhǎng)stepx,stepy進(jìn)行插值,stepx=(n-1)/(N-1);stepy=(m-1)/(M-1),用j表示原圖像的行編號(hào),取j=0;2)在原圖像的行方向上進(jìn)行插值,得到在原圖像坐標(biāo)系中坐標(biāo)為(i′×stepx,j)的點(diǎn)的灰度值A(chǔ)(i′×stepx,j),i′=0,1,…,N-1為放大圖像的列編號(hào),將得到的插值結(jié)果存到數(shù)組Cur_Row中,即Cur_Row[i′]=A(i′×stepx,j);3)判斷原圖像的行數(shù),如果是第0行,即j=0,繼續(xù)下一步,如果j≠0,轉(zhuǎn)到5);4)將數(shù)組Cur_Row中的值賦給目標(biāo)圖像的第0行,即令B(i′,0)=Cur_Row[i′],i′=0,1,…,N-1,然后轉(zhuǎn)到6);5)將Cur_Row數(shù)組的值賦給Pre_Row數(shù)組,即Pre_Row[i′]=Cur_Row[i′],i′=0,1,…,N-1;6)令原圖像當(dāng)前的行編號(hào)為j,以Pre_Row[i′],Cur_Row[i′]作為
區(qū)間的兩個(gè)端點(diǎn)的像素值,即f(0)=Pre_Row[i′],f(1)=Cur_Row[i′],用整數(shù)移位運(yùn)算和整數(shù)加減法進(jìn)行線(xiàn)性插值,得到目標(biāo)圖像B在第i′行,k列的像素灰度值B(i′,k)=f~(k×stepy-j+1);]]>7)判斷下一圖像的行數(shù),j=j(luò)+1,如果j≤n-1,轉(zhuǎn)到2),否則結(jié)束處理過(guò)程。用整數(shù)移位運(yùn)算和整數(shù)加減法進(jìn)行線(xiàn)性插值是按照下面的偽代碼計(jì)算線(xiàn)性插值
x∈
int k=x×8+0.5Switch(k){case0:f~(x)=f(0);break;]]>case1:f~(x)=f(0)+((f(1)-f(0))>>3);break;]]>case2:f~(x)f(0)+((f(1)-f(0))>>2);break;]]>case3:f~(x)=((f(0)+f(1))>>1)-((f(1)-f(0))>>3);break;]]>case4:f~(x)=(f(0)+f(1))>>1;break;]]>case5:f~(x)=((f(0)+f(1))>>1)+((f(1)-f(0))>>3);break;]]>case6:f~(x)=f(1)+((f(0)-f(1))>>2);break;]]>case7:f~(x)=f(1)+((f(0)-f(1))>>3);break;]]>case8:f~(x)=f(1);break;]]>}。
從原圖像到目標(biāo)圖像的映射關(guān)系為x′=x×(N-1)/(n-1)y′=y×(M-1)/(m-1).]]>可以先在原圖像相鄰兩行的行方向上進(jìn)行插值,然后對(duì)縱坐標(biāo)位于這兩行行號(hào)之間的點(diǎn)進(jìn)行插值。
與現(xiàn)有的用于圖像放大的雙線(xiàn)性方法相比,本發(fā)明有四個(gè)優(yōu)點(diǎn)(一)先在原圖像上的坐標(biāo)系中直接進(jìn)行插值操作,再?gòu)脑瓐D像到目標(biāo)圖像進(jìn)行映射,沒(méi)有從目標(biāo)圖像中的坐標(biāo)轉(zhuǎn)換到原圖像中坐標(biāo)的計(jì)算過(guò)程,使得圖像放大處理過(guò)程中的遍歷操作減少,減少了圖像遍歷時(shí)間;(二)從公式(1)中可以看出,原來(lái)的插值方法平均每計(jì)算目標(biāo)圖像中的一個(gè)像素點(diǎn)就需要進(jìn)行3次線(xiàn)性插值,因此總共需要3×M×N次插值;本發(fā)明方法去除了冗余計(jì)算,只須采用(N-2)×m+(M-2)×n次插值運(yùn)算,這種優(yōu)勢(shì)在放大倍數(shù)越大時(shí)表現(xiàn)越明顯;(三)從公式(3)中可以看出,原來(lái)的映射方法可能出現(xiàn)目標(biāo)圖像的邊界像素坐標(biāo)映射到原圖像的范圍之外,即(3)式計(jì)算的x>N,或者y>M,這樣就需要對(duì)映射進(jìn)行判斷,如果出現(xiàn)x>N,或者y>M,就需要特殊處理(如對(duì)原圖像的像素進(jìn)行擴(kuò)展),增加了分支跳轉(zhuǎn)指令的開(kāi)銷(xiāo);本發(fā)明使用的映射方法使得目標(biāo)圖像的邊界像素坐標(biāo)正好映射到原圖像的邊界上,因此可以用統(tǒng)一的結(jié)構(gòu)來(lái)處理,無(wú)需對(duì)映射關(guān)系進(jìn)行判斷,同時(shí)由于邊界對(duì)齊的原因,使得線(xiàn)性插值運(yùn)算數(shù)目減少(目標(biāo)圖像的四個(gè)邊界像素只需要一次插值運(yùn)算)使原來(lái)的不利因素變?yōu)楝F(xiàn)在的有利因素。
(四)原來(lái)的線(xiàn)性插值方法采用的是浮點(diǎn)運(yùn)算,本發(fā)明的線(xiàn)性插值運(yùn)算用整數(shù)位運(yùn)算和整數(shù)加減法來(lái)進(jìn)行,提高了運(yùn)算速度。
與現(xiàn)有的用于圖像放大處理過(guò)程中的雙線(xiàn)性插值方法相比,采用本發(fā)明的快速雙線(xiàn)性插值方法進(jìn)行圖像放大,在圖像放大倍數(shù)為2~10倍時(shí),運(yùn)算速度提高了4~10倍,且加速比隨著放大倍數(shù)的增加而增加。


圖1為雙線(xiàn)性插值方法的示意圖;圖2為原來(lái)的映射方法的示意圖;圖3為本發(fā)明采用的映射方法的示意圖;圖4為本發(fā)明去除冗余計(jì)算的示意圖;圖5為本發(fā)明雙線(xiàn)性快速插值方法的原理示意圖;圖6為本發(fā)明與原方法速度比較示意圖;圖7為本發(fā)明相對(duì)于原方法加速比示意圖;圖8為本發(fā)明的用于圖像放大的快速雙線(xiàn)性插值方法流程圖。
具體實(shí)施例方式
以下結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
在此我們分映射關(guān)系、去除冗余計(jì)算和快速插值三個(gè)部分來(lái)進(jìn)行說(shuō)明。
映射關(guān)系現(xiàn)有的采用雙線(xiàn)性插值進(jìn)行圖像放大的方法是先進(jìn)行坐標(biāo)變換,再進(jìn)行雙線(xiàn)性插值。即對(duì)目標(biāo)圖像B的每一個(gè)像素坐標(biāo)(i′,j′),根據(jù)(3)式映射到原圖像A中的坐標(biāo)X=(x,y),此時(shí)x,y一般為非整數(shù)。如圖2所示,再根據(jù)(x,y)臨近的四個(gè)像素點(diǎn)構(gòu)成的處理單元,按照(2)式進(jìn)行雙線(xiàn)性插值計(jì)算(x,y)處的灰度值,這樣每計(jì)算一個(gè)目標(biāo)圖像B中的像素點(diǎn),都需要尋找原圖像A中相應(yīng)的處理單元(四個(gè)像素點(diǎn)),在計(jì)算過(guò)程中,每個(gè)處理單元都需要對(duì)數(shù)據(jù)進(jìn)行存取操作。這樣計(jì)算目標(biāo)圖像B中的所有的像素點(diǎn),總共需要尋找M×N個(gè)處理單元。同時(shí),根據(jù)(3)式,對(duì)于目標(biāo)圖像B的邊緣像素,存在X落在原圖像A之外的情況,需要對(duì)這種情況進(jìn)行特別處理(如對(duì)原圖像A的邊緣像素進(jìn)行延拓),這樣程序?qū)崿F(xiàn)中會(huì)有分支跳轉(zhuǎn)指令的開(kāi)銷(xiāo)。
本發(fā)明采用映射關(guān)系x′=x×(N-1)/(n-1)y′=y×(M-1)/(m-1)---(4)]]>這種映射與現(xiàn)有方法的映射方向相反,是從原圖像A中的坐標(biāo)X=(x,y)映射到目標(biāo)圖像B中的坐標(biāo)X′=(x′,y′),見(jiàn)圖3。這里不是將原圖像A中的整數(shù)坐標(biāo)點(diǎn)進(jìn)行映射,而是對(duì)坐標(biāo)(x=i′×stepx,y=j(luò)′×stepy)進(jìn)行映射,這些點(diǎn)的集合記為Λ={(x,y)|x=i′×stepx,y=j(luò)′×stepy,i′=0,1,…,N-1;j′=0,1,…,M-1},Λ在目標(biāo)圖像B中映射的坐標(biāo)正好是(x′=i′,y′=j(luò)′),i′=0,1,…,N-1;j′=0,1,…,M-1,也即對(duì)應(yīng)于目標(biāo)圖像B中的所有像素點(diǎn)坐標(biāo)。這種映射使我們可以直接在原圖像A中遍歷每一個(gè)處理單元,將該處理單元內(nèi)部的坐標(biāo)點(diǎn)(x=i′×stepx,y=j(luò)′×stepy)的灰度值A(chǔ)(x=i′×stepx,y=j(luò)′×stepy)計(jì)算出來(lái)后直接賦給B(i′,j′),因此共需要(m-1)×(n-1)個(gè)處理單元。同時(shí)因?yàn)橛成涫菑脑瓐D像A到目標(biāo)圖像B的,原圖像A的邊界像素坐標(biāo)正好被映射到目標(biāo)圖像B的邊界上,這樣(m-1)×(n-1)個(gè)處理單元恰恰覆蓋了目標(biāo)圖像B,不會(huì)出現(xiàn)邊緣像素落到處理單元之外的情況。
去除冗余計(jì)算采用(2)式表示的雙線(xiàn)性插值,每個(gè)目標(biāo)像素B的計(jì)算都需要六次浮點(diǎn)加法和3次浮點(diǎn)乘法,這里實(shí)際上是有一些計(jì)算冗余的。在同一個(gè)處理單元中橫向坐標(biāo)相同的點(diǎn)(2)式中的(i),(ii)兩個(gè)插值計(jì)算是完全相同的,只是(iii)的計(jì)算不同。如圖4中對(duì)坐標(biāo)為X1與X2的顏色水平的計(jì)算可以用Q1,Q2兩點(diǎn)的顏色水平插值得到。上下相鄰的兩個(gè)處理單元有一條邊是公用的,因此也有一個(gè)插值運(yùn)算是相同的,如X2和X2兩點(diǎn)顏色值的計(jì)算都用到Q2的顏色水平。采用(4)式映射方式使得我們可以在插值過(guò)程中去除這些冗余計(jì)算。
為了去除冗余計(jì)算,定義兩個(gè)數(shù)組,Pre_Row和Cur_Row,臨時(shí)存儲(chǔ)原圖像A行方向上插值得到的數(shù)據(jù),Cur_Row存儲(chǔ)當(dāng)前第j行插值得到的數(shù)據(jù),Pre_Row存儲(chǔ)前面一行即第j-1行插值得到的數(shù)據(jù)。然后在列方向上對(duì)于集合Λ中縱坐標(biāo)位于j-1和j之間的所有坐標(biāo)點(diǎn)進(jìn)行插值。這一過(guò)程完成后,將Cur_Row數(shù)組中的值賦給Pre_Row數(shù)組,以第j+1行為當(dāng)前行,重新計(jì)算Cur_Row數(shù)組,利用Pre_Row和Cur_Row在列方向上對(duì)于集合Λ中縱坐標(biāo)位于j和j+1之間的所有坐標(biāo)點(diǎn)進(jìn)行插值。上面這個(gè)過(guò)程不斷重復(fù),直到處理完原圖像A中所有的行,即j=n-1。這樣通過(guò)分離行方向和列方向上的插值運(yùn)算,我們可以去除那些冗余計(jì)算步驟。提高圖像放大處理的速度。此外,Cur_Row數(shù)組的第一個(gè)元素和最后一個(gè)元素不需要進(jìn)行插值運(yùn)算,直接可以由原圖像A中的像素值賦值得到,因此行方向上總共需要插值(N-2)×m次;在列方向上插值計(jì)算集合Λ中坐標(biāo)點(diǎn)的灰度值時(shí),對(duì)于縱坐標(biāo)為0和(N-1)×stepy=n-1的坐標(biāo)點(diǎn),直接賦以Cur_Row數(shù)組的相應(yīng)值即可,因此列方向上共需插值(M-2)×N次,圖像的總共需要的插值運(yùn)算的數(shù)目為(N-2)×m+(M-2)×N;并且如果(M-1)%(m-1)=0;(N-1)%(n-1)=0,則原圖像A的所有像素點(diǎn)正好影射到B的整數(shù)坐標(biāo)點(diǎn)上,因此有m×n個(gè)像素灰度值直接賦值即可。B中需要插值運(yùn)算計(jì)算灰度值的像素點(diǎn)數(shù)目會(huì)進(jìn)一步減少到M×N-m×n個(gè),即目標(biāo)圖像B中的每個(gè)像素點(diǎn)平均只需要不到一次線(xiàn)性插值就可以得到。
對(duì)于圖4所示,Pre_Row[k]存儲(chǔ)點(diǎn)Q1的灰度值,Cur_Row[k]存儲(chǔ)Q2點(diǎn)的灰度值,X1和X2是處理單元P1,P2,P3,P4內(nèi)部中位于集合Λ中的點(diǎn),且橫坐標(biāo)為k×stepx。通過(guò)Pre_RoW[k]和Cur_Row[k]插值計(jì)算X1和X2點(diǎn)的灰度值,接著令Pre_Row[k]=Cur_Row[k],重新計(jì)算Cur_Row[k]的值為Q3的灰度值,通過(guò)Pre_Row[k]和Cur_Row[k]插值計(jì)算X3和X4點(diǎn)的灰度值。
快速插值在圖像插值運(yùn)算中,插值函數(shù)的浮點(diǎn)運(yùn)算和乘法運(yùn)算比較耗時(shí),而圖像的顏色值為正整數(shù),插值計(jì)算得到的浮點(diǎn)數(shù)最終還要轉(zhuǎn)化為整數(shù)。整數(shù)的移位運(yùn)算和加法運(yùn)算要比浮點(diǎn)運(yùn)算快很多,如果能夠把浮點(diǎn)運(yùn)算與乘法運(yùn)算都轉(zhuǎn)化為整數(shù)移位運(yùn)算和加法運(yùn)算,則可以減少運(yùn)算時(shí)間。
設(shè)插值函數(shù)是一個(gè)一階可導(dǎo)函數(shù)f(x),x∈
(在雙線(xiàn)性插值中,f(x)為線(xiàn)性函數(shù)),考慮內(nèi)插的情況。如果在線(xiàn)段兩個(gè)端點(diǎn)處的函數(shù)值已知,欲求中間一點(diǎn)x對(duì)應(yīng)的y值,則y=f(x),因?yàn)閤是浮點(diǎn)數(shù),計(jì)算f(x)需要進(jìn)行浮點(diǎn)運(yùn)算,而浮點(diǎn)運(yùn)算相對(duì)于整數(shù)運(yùn)算是比較耗時(shí)的。如圖5所示,將
區(qū)間分割為2n等分,設(shè)距離x最近的分割點(diǎn)為 k∈
,對(duì)于給定的小正數(shù)ε,如果分割點(diǎn) 與x的距離足夠小,由f(x),x∈
的連續(xù)性,則有|f(x)-f(k2n)|<ϵ.]]>如果 的計(jì)算能夠通過(guò)加法運(yùn)算和移位運(yùn)算得到,避免浮點(diǎn)運(yùn)算和乘法運(yùn)算,必然可以節(jié)省運(yùn)算時(shí)間。我們把先用浮點(diǎn)數(shù)進(jìn)行精確計(jì)算,再取整得到的結(jié)果記為 用 近似f(x)得到的結(jié)果記為f~(x)=f(k2n).]]>由于圖像的顏色水平是有限的,最后要將插值運(yùn)算得到的浮點(diǎn)數(shù)強(qiáng)制轉(zhuǎn)換為整數(shù),這就造成了取整誤差,如果取圓整,即 則取整造成的平均誤差為0.25,取整造成的最大誤差為0.5,對(duì)于灰度級(jí)是L的圖像,一個(gè)象素要采用log2L位來(lái)表示,用 近似f(x)的信噪比為SNRf^10log2L2(0.5)2=20log2L0.5=20(log2L+1)---(5)]]>當(dāng)|f(x)-f(k2n)|≤ϵ,]]>則SNRf~=10log2L2ϵ2=20log2Lϵ=20(log2L+log21ϵ)---(6)]]>當(dāng)ε=0.5時(shí),SNRf^=SNRf~]]>在線(xiàn)性插值的情況下f(x)=(1-x)·f(0)+x·f(1)=(f(1)-f(0))·x+f(0)(7)|f(x-k2n)|≤|f′(ξ)·(x-k2n)|≤|f(1)-f(0)|·12n+1---(8)]]>于是對(duì)于給定的ε>0,只要取N=log2(f(1)-f(0))+log21ϵ-1---(9)]]>當(dāng)n≥N時(shí)就有|f(x)-f(k2n)|<ϵ]]>成立。
在用雙線(xiàn)性插值進(jìn)行圖像縮放過(guò)程中,f(0),f(1)表示相鄰兩個(gè)像素的灰度值,由圖像的局部連續(xù)性,這兩個(gè)灰度值相差一般較小,除非有非常明顯的邊界或圖像中0的脈沖噪聲。因此絕大多數(shù)情況下,|f(1)-f(0)|<16=24,如果取ε=0.5,就可以保證SNRf~=SNRf^,]]>由(9)式,得到N=4。根據(jù)weber定律,|f(1)-f(0)|較大時(shí),人眼感覺(jué)到有差別的閾限也會(huì)增大,因此ε稍大一點(diǎn)也不會(huì)被人眼察覺(jué)??梢栽趫D像雙線(xiàn)性插值縮放中取n=4,采用f~(x)=f(k24)]]>比采用 造成的信噪比損失是可以忽略不計(jì)的,如果 能夠快速有效的計(jì)算,就可以大幅度提高雙線(xiàn)性插值縮放方法的運(yùn)算性能。f~(x)=f(0)+[f(1)-f(0)]×k16,]]> 可以表示為 的加法或減法的組合,由于[f(1)-f(0)]×z,z=12,14,18,116]]>可以通過(guò)移位運(yùn)算來(lái)實(shí)現(xiàn),于是就可以通過(guò)步驟8)來(lái)計(jì)算 本發(fā)明的用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法的流程圖如圖8所示。
以下就本發(fā)明方法進(jìn)行圖像放大的運(yùn)算速度進(jìn)行說(shuō)明。
采用256×256大小的256色lena原圖像灰度圖像進(jìn)行放大1.5~21倍。算法在VisualC++6.0環(huán)境下編程實(shí)現(xiàn),考慮到編譯器優(yōu)化的影響,所得的結(jié)果是在release版下測(cè)得的,由于原方法和快速方法得到的插值圖像在視覺(jué)上基本沒(méi)有什么差別,試驗(yàn)?zāi)康氖菫榱吮容^它們的時(shí)間開(kāi)銷(xiāo)。圖6和圖7反映了原雙線(xiàn)性插值放大方法的和本發(fā)明的運(yùn)算速度的比較。從圖中的結(jié)果可以看到,本發(fā)明提出的用于圖像縮放的快速插值方法對(duì)于提高現(xiàn)有處理方法的效率非常有效,隨著放大倍數(shù)的增加,本發(fā)明提出的方法運(yùn)算效率甚至提高了20倍。在對(duì)圖像縮放處理方法實(shí)時(shí)性要求比較高的應(yīng)用中,本發(fā)明無(wú)疑提供了一個(gè)非常好的提高運(yùn)算效率的途徑。
權(quán)利要求
1.一種用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法,其特征在于對(duì)于大小為m×n的原圖像和大小為M×N的目標(biāo)圖像,定義原圖像和目標(biāo)圖像都以左上角像素作為坐標(biāo)原點(diǎn),右方向?yàn)閤正方向,向下方向?yàn)閥正方向,原圖像坐標(biāo)系中點(diǎn)的坐標(biāo)為(x,y),目標(biāo)圖像像素坐標(biāo)為(x′,y′),然后采用以下步驟獲得目標(biāo)圖像像素點(diǎn)的灰度值1)準(zhǔn)備在原圖像的列方向(x坐標(biāo)方向)和行方向(y坐標(biāo)方向)上分別以步長(zhǎng)stepx,stepy進(jìn)行插值,stepx=(n-1)/(N-1);stepy=(m-1)/(M-1),用j表示原圖像的行編號(hào),取j=0;2)在原圖像的行方向上進(jìn)行插值,得到在原圖像坐標(biāo)系中坐標(biāo)為(i′×stepx,j)的點(diǎn)的灰度值A(chǔ)(i′×stepx,j),i′=0,1,…,N-1為放大圖像的列編號(hào),將得到的插值結(jié)果存到數(shù)組Cur_Row中,即Cur_Row[i′]=A(i′×stepx,j);3)判斷原圖像的行數(shù),如果是第0行,即j=0,繼續(xù)下一步,如果j≠0,轉(zhuǎn)到6);4)將數(shù)組Cur_Row中的值賦給目標(biāo)圖像的第0行,即令B(i′,0)=Cur_Row[i′],i′=0,1,…,N-1;5)將Cur_Row數(shù)組的值賦給Pre_Row數(shù)組,即Pre_Row[i′]=Cur_Row[i′],i′=0,1,…,N-1;6)令原圖像當(dāng)前的行編號(hào)為j,以Pre_Row[i′],Cur_Row[i′]作為
區(qū)間的兩個(gè)端點(diǎn)的像素值,即f(0)=Pre_Row[i′],f(1)=Cur_Row[i′],用整數(shù)移位運(yùn)算和整數(shù)加減法進(jìn)行線(xiàn)性插值,得到目標(biāo)圖像B在第i′行,k列的像素灰度值B(i′,k)=f~(k×stepy-j+1);]]>7)判斷下一圖像的行數(shù),j=j(luò)+1,如果j≤n-1,轉(zhuǎn)到2),否則結(jié)束處理過(guò)程。
2.如權(quán)利要求1所述的用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法,其特征在于在步驟6)中用整數(shù)移位運(yùn)算和整數(shù)加減法進(jìn)行線(xiàn)性插值是按照下面的偽代碼計(jì)算線(xiàn)性插值 x∈
intk=x×8+0.5Switch(k){case 0f~(x)=f(0);break;]]>case 1f~(x)=f(0)+((f(1)-f(0))>>3);break;]]>case 2f~(x)=f(0)+((f(1)-f(0))>>2);break;]]>case 3f~(x)=((f(0)+f(1))>>1)-((f(1)-f(0))>>3);break;]]>case 4f~(x)=(f(0)+f(1))>>1);break;]]>case 5f~(x)=((f(0)+f(1))>>1)-((f(1)-f(0))>>3);break;]]>case 6f~(x)=f(1)+((f(0)-f(1))>>2);break;]]>case 7f~(x)=f(1)+((f(0)-f(1))>>3);break;]]>case 8f~(x)=f(1);break;]]>}。
3.如權(quán)利要求1所述的用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法,其特征在于從原圖像到目標(biāo)圖像的映射關(guān)系為x′=x×(N-1)/(n-1)y′=y×(M-1)/(m-1).]]>
4.如權(quán)利要求1所述的用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法,其特征在于先在原圖像相鄰兩行的行方向上進(jìn)行插值,然后對(duì)縱坐標(biāo)位于這兩行行號(hào)之間的點(diǎn)進(jìn)行插值。
全文摘要
本發(fā)明公開(kāi)了一種用于圖像放大處理過(guò)程中的快速雙線(xiàn)性插值方法,先在原圖像上的坐標(biāo)系中直接進(jìn)行插值操作,再?gòu)脑瓐D像到目標(biāo)圖像進(jìn)行映射,使得圖像放大處理過(guò)程中的遍歷操作減少,邊界像素也可以在統(tǒng)一的程序框架中處理;在行方向和列方向上分別進(jìn)行插值,去除了冗余的插值計(jì)算;插值運(yùn)算全部采用整數(shù)加減法和整數(shù)移位運(yùn)算,這幾個(gè)方面使得用雙線(xiàn)性插值進(jìn)行圖像放大的速度得到了提高;采用本發(fā)明的快速插值方法進(jìn)行圖像放大,在圖像放大倍數(shù)為2~10倍時(shí),算法的運(yùn)算速度提高了4~10倍,且算法的加速比隨著放大倍數(shù)的增加而增加。
文檔編號(hào)H04N1/393GK1901602SQ20061005238
公開(kāi)日2007年1月24日 申請(qǐng)日期2006年7月10日 優(yōu)先權(quán)日2006年7月10日
發(fā)明者李均利, 魏平, 陳剛 申請(qǐng)人:寧波大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
卢湾区| 溧阳市| 准格尔旗| 平泉县| 河北省| 阿拉善左旗| 九龙城区| 西青区| 禹城市| 慈溪市| 平顺县| 宁安市| 太仆寺旗| 金湖县| 栖霞市| 双辽市| 丰原市| 清水河县| 青龙| 万荣县| 鄱阳县| 比如县| 平顺县| 区。| 山阳县| 奇台县| 宽甸| 禹城市| 贺兰县| 栖霞市| 高邮市| 满城县| 安顺市| 汶川县| 舟山市| 庆安县| 和龙市| 莆田市| 嫩江县| 嘉鱼县| 卢龙县|