(昆明理工大學(xué)信息工程與自動化學(xué)院 昆明 650500)
矢量填充和插值算法的圖像放大
(昆明理工大學(xué)信息工程與自動化學(xué)院昆明650500)
摘要論文針對圖像放大問題,建立了矢量化填充放大模型。并針對矢量化填充放大模型不能處理復(fù)雜圖像的缺點,使用并比較了最鄰近插值法、雙線性插值法、雙三次插值法三種不同的算法。并綜合以上四個模型,得到以下結(jié)論:矢量化填充放大模型適用于較簡單的可矢量化的圖像,可無限放大,且不影響其成像?;诓逯邓惴ǖ娜齻€模型中,最鄰近法模型算法簡單、計算量小、處理速度快,但處理后的圖像會出現(xiàn)塊效應(yīng),造成圖像模糊。雙線性插值法模型克服了最鄰近法處理圖像出現(xiàn)塊效應(yīng)的問題,其計算相比雙三次法簡單,但邊緣細(xì)微結(jié)構(gòu)會受到影響,產(chǎn)生輪廓模糊的現(xiàn)象。雙三次插值法模型解決了以上兩種算法的缺點,計算精度高,帶有邊緣增強的效果,能夠較好保持圖像的細(xì)微結(jié)構(gòu),但計算量較大。
關(guān)鍵詞矢量填充; 最鄰近插值法; 雙線性插值法; 雙三次插值法
Class NumberTP309.7
1引言
位圖在放大時,圖像質(zhì)量常會有所下降,如容易產(chǎn)生較為明顯的模糊或馬賽克等現(xiàn)象。現(xiàn)在待解決的是如何建立合理的數(shù)學(xué)模型,來設(shè)計一個放大位圖的算法,使圖像在被放大后仍能盡量保持較好的圖像質(zhì)量。本文為大家呈現(xiàn)幾種解決該問題的方法[1]。
同時針對位圖放大時容易產(chǎn)生較為明顯的模糊或馬賽克等現(xiàn)象。通過矢量圖的特性可知,作為矢量圖,在放大的時候能保持一定圖像比例。但是此類方法產(chǎn)生的矢量圖大多是一些構(gòu)圖簡單、可矢量化的、顏色較為單一的位圖。目前,為得到復(fù)雜圖像的放大清晰位圖,多采用插值算法對位圖進(jìn)行處理。常用的插值算法有最鄰近插值法、雙線性插值法、雙三次插值法等,不同插值算法對圖像的處理效果不一樣。本文采用最鄰近插值法、雙線性插值法、雙三次插值法三種算法對放大圖像進(jìn)行放大、比較[2]。
2矢量化填充放大模型
對原圖進(jìn)行位圖矢量化之前直接對整個圖像的特征點進(jìn)行擬合的求解方法,由于數(shù)據(jù)過少,會造成函數(shù)的波動,使得圖像不夠圓滑,因此采用分塊方式對圖像進(jìn)行分塊,具體求解過程如下:
1) 將圖像分為四個部分
采用分塊方式將二值化后的圖像分為四塊區(qū)域,劃分區(qū)域如圖1所示。
一二三四
圖1劃分區(qū)域圖
針對區(qū)域劃分,利用Matlab求解的程序如下:
[mm,nn]=size(A)
B1=A(1:mm/2,1:nn/2);
B2=A(1:mm/2,nn/2+1:nn);
B3=A(mm/2+1:mm,1:nn/2);
B4=A(mm/2+1:mm,nn/2+1:nn);
2) 針對區(qū)域一
對圖像邊緣輪廓的提取有許多的研究和方法,常用的圖像的邊緣提取的梯度算子有Roberts算子、Sobel算子、Canny算子、Prewitt算子和Laplace算子,本文最終采用Canny算子[3~4]。
對第一部分圖像進(jìn)行預(yù)處理以后,利用canny算子對其進(jìn)行邊緣檢測,檢測結(jié)果如圖2所示。
圖2 提取圖像的邊緣
特征點的提取是位圖矢量化過程中重要的一步,該步驟主要是從檢測出的邊緣中提取出表示圖像輪廓關(guān)鍵特征的點[5]。本模型采用的Harris算法是穩(wěn)定性和準(zhǔn)確度都較高的基于灰度的角點檢測算法。
圖3 特征點提取結(jié)果
曲線擬合是指用連續(xù)曲線近似地刻畫或比擬平面上離散點組所表示的坐標(biāo)構(gòu)造之間的函數(shù)關(guān)系[6~7]。
Matlab求解程序[8]如下:
if strcmp(flag,'paint')
xx=min(x):0.1:max(x);
yy=polyval(p,xx);
plot(xx,-yy,'g');
hold on
end
此時對擬合函數(shù)進(jìn)行歸類,并標(biāo)記取值范圍,Matlab求解程序如下:
[m,n]=size(ans_max);
disp('擬合后函數(shù)');
for i=1:n
fprintf ('x取值范圍[%d,%d] ',
ans_min(i),ans_max(i))
fprintf ('第%d段:y= ',i);
disp(ploy(i));
end
對其他三個區(qū)域采用相同的處理方法,將得到的四塊圖像照分割次序還原,得到原圖曲線。
3矢量圖放大填充
1) 模型背景知識
矢量圖根據(jù)幾何特性來繪制圖像,矢量可以是一個點或一條線,矢量圖只能靠軟件生成,文件占用內(nèi)在空間較小,因為這種類型的圖像文件包含獨立的分離圖像,可以自由無限制地重新組合。它的特點是放大后圖像不會失真,和分辨率無關(guān),文件占用空間較小,適用于圖像設(shè)計、文字設(shè)計和一些標(biāo)志設(shè)計、版式設(shè)計等。
2) 模型的建立與求解
設(shè)此時擬合完畢后的函數(shù)自變量為X,因變量為Y。為了放大矢量圖,可先對定義域X的值進(jìn)行擴充,采用式(1):
X′=[Xmin*K,Xmax*K]
(1)
為了得到特定的X值M,需將擴充后的定義域X′進(jìn)行式(2)計算:
M=X′/K
(2)
得到特定的X值后,可將它代入擬合完畢后的函數(shù)f(x),計算出特定的Y值,求出值域。此時便可對值域的值進(jìn)行擴充,采用式(3):
Y′=[Ymin*K,Ymax*K]
(3)
最后將擴充后的定義域和值域進(jìn)行曲線擬合,得到的函數(shù)f′(x)便為放大后的矢量圖。
由于有灰度圖,因此為了簡化計算,可以不對矢量圖進(jìn)行填充。
對于此問題,采用Matlab求解:
Magnification=8;%擴大倍數(shù)
for i=1:n
fprintf ('x取值范圍[%d,%d] ',
ans_min(i)*Magnification,
ans_max(i)*Magnification)
fprintf ('第%d段:temp= ',i);
disp(ploy(i));
fprintf ('y=%d*temp ',
Magnification);
End
4最鄰近插值算法模型
最鄰近插值是最簡單的插值算法[9],也叫零階插值,最鄰近插值的核心思想是首先將(x,y)經(jīng)空間變換映射為(x′,y′),如果(x′,y′)是非整數(shù)坐標(biāo),則尋找(x′,y′)的最近鄰,并將最近鄰的灰度值賦給校正圖像(x,y)處的像素。
該算法原理簡單,即每一個待插值點的像素值取在原圖像中相應(yīng)點周圍四個相鄰點中歐氏距離最短的一個。該算法計算量小,但其缺點是可能會有塊效應(yīng),造成圖像模糊,放大后圖像質(zhì)量不高。最鄰近插值公式如式(4)所示:
f(x+u,y+v)=f(x,y)
(4)
其中f(x,y)表示原圖像在(x,y)位置處像素點的像素值;u,v均為[0,1)區(qū)間的浮點數(shù),分別表示待插值點與最鄰近像素點在水平和豎直方向的距離,x和y的取值范圍大于等于0。
簡言之,最鄰近插值輸出的像素灰度值就等于距離它映射到的位置最近的輸入像素的灰度值。該算法簡單,在許多情況下都能得到令人滿意的結(jié)果,但是當(dāng)圖像中存在像素之間灰度級有變化的細(xì)微結(jié)構(gòu)時,該算法會在圖像中產(chǎn)生人為加工的痕跡。
在Matlab中編程實現(xiàn)用最鄰近插值算法實現(xiàn)圖像的放大,文中選擇大小為128*128的圖像進(jìn)行實驗。
本文中隨機選擇圖4做為目標(biāo)圖像。
圖4 目標(biāo)圖像
圖5 原始圖像直方圖
采用最鄰近插值法對目標(biāo)圖像放大處理,效果如圖6所示。
圖6 最鄰近插值法放大圖像直方圖
對比直方圖可看出,用最鄰近插值法放大的圖像在給定Level值下像素的數(shù)量有明顯的增加,即實現(xiàn)了圖像的放大。實現(xiàn)代碼如下:
A = imread('./test1.jpg');%讀取圖像信息
imshow(A); %顯示原圖
title('原圖128*128');
Row = size(A,1); Col = size(A,2);%圖像行數(shù)和列數(shù)
nn=8;%放大倍數(shù)m = round(nn*Row);%求出變換后的坐標(biāo)的最大值
n = round(nn*Col);
B = zeros(m,n,3);%定義變換后的圖像
for i = 1 : m
for j = 1 : n
x = round(i/nn); y = round(j/nn);
%最小臨近法對圖像進(jìn)行插值
if x==0 x = 1; end
if y==0 y = 1; end
if x>Row x = Row; end
if y>Col y = Col;end
B(i,j,:) = A(x,y,:);
end
end
B = uint8(B);%將矩陣轉(zhuǎn)換成8位無符號整數(shù)
figure; imshow(B);
title('最鄰近插值法放大8倍1024*1024');
5雙線性插值算法模型
雙線性插值[10],又稱為雙線性內(nèi)插,在數(shù)學(xué)上,雙線性插值是有兩個變量的插值函數(shù)的線性插值擴展,其主要思想是在水平和豎直方向上分別進(jìn)行一次線性插值。
其基本原理為:對于一個目的像素,通過坐標(biāo)的反向設(shè)置變換得到浮點的坐標(biāo)(x+u,y+v),其中x和y均為大于等于零的整數(shù),u和v為[0,1)區(qū)間的浮點數(shù),則這個像素的值可由原圖像中坐標(biāo)為(x,y),(x+1,y),(x,y+1),(x+1,y+1)所對應(yīng)的相鄰四個像素的值決定,即如式(5)所示:
f(x+u,y+v)=(1-u)(1-v)f(x,y)
+(1-u)vf(x,y+1)
+u(1-u)f(x+1,y)
+uvf(x+1,y+1)
(5)
其中f(x,y)表示源圖像(x,y)處的像素值。
圖7 雙線性內(nèi)插值原理
采用雙線性內(nèi)插值法對目標(biāo)圖像進(jìn)行放大處理,效果如圖8所示。
與最鄰近插值算法相比,雙線性插值縮放后圖像質(zhì)量更高,不會出現(xiàn)像素值不連續(xù)的情況。但是雙線性插值算法計算量比最鄰近插值大,且有低通濾波器的性質(zhì),所以會使高頻分量受損,導(dǎo)致圖片邊緣發(fā)生細(xì)微結(jié)構(gòu)變化。
實現(xiàn)代碼如下:
C=imresize(A,8,'bilinear'); %雙線性插值
figure; imshow(C);
title('雙線性內(nèi)插值法放大8倍1024*1024');
圖8 雙線性內(nèi)插值法放大圖像直方圖
6雙三次插值算法模型
雙三次插值又稱立方卷積插值,雙三次插值算法根據(jù)目的像素點周圍的16個像素點的灰度值作三次線性插值,此算法不僅考慮到像素點周圍4個直接相鄰灰度影響,而且還考慮到各鄰點間灰度值變化率的影響,圖像經(jīng)過三次運算可以得到高分辨率圖像放大的結(jié)果。該算法需要選取插值基函數(shù)來擬合數(shù)據(jù),其最常用的插值基函數(shù)如圖9所示。
圖9 雙三次內(nèi)插基函數(shù)
其數(shù)學(xué)表達(dá)式如下:
(6)
雙三次插值的一般公式由二元雙三次插值公式推導(dǎo)而來,其共有(3+1)2=16個系數(shù),其公式表示如式(7)所示:
z=a1+a2x+a3y+a4x2+a5xy+a6y2+a7x3
+a8x2y+a9xy2+a10y3+a11x3y+a12xy3
+a13x2y2+a14x3y2+a15x2y3+a16x3y3
(7)
該方法考慮一個浮點坐標(biāo)(x+u,y+v)周圍的16個鄰點,目標(biāo)像素值f(x+u,y+v)可由如下插值公式得到:
f(x+u,y+v)=[A]*[B]*[C]
(8)
[A]=[S(u+1)S(u+0)S(u-1)S(u-2)]
(9)
(10)
------------------------------
(11)
圖10 雙三次插值法放大圖像直方圖
雙三次插值能得到高分辨率圖像放大的結(jié)果,但比最鄰近插值和雙線性插值更加復(fù)雜,這樣也就同時導(dǎo)致了計算量的劇增。
實現(xiàn)代碼如下:
D=imresize(A,8,'bicubic');
%雙三次插值放大8倍
figure;
imshow(D);
title('三次卷積法放大8倍1024*1024');
7結(jié)語
本文針對清晰化放大圖像,建立了四個模型。第一個模型基于圖像矢量化,對矢量圖進(jìn)行填充放大。該算法雖然只能處理簡單的可矢量化的圖像,但是可放大倍數(shù)非??捎^,并且經(jīng)該算法放大的圖像的清晰度是所有模型中最優(yōu)的。所以,該模型比較適用于對相對簡單的圖像的放大處理。
最鄰近插值算法模型、雙線性插值算法模型、雙三次插值算法模型都是采用對位圖直接插值的算法,其基本原理一樣,都是一個圖像數(shù)據(jù)再生的過程——它由原始具有較低分辨率的圖像數(shù)據(jù)再生出具有更高分辨率的圖像數(shù)據(jù)。但獲得插值點像素的具體計算方法存在較大差異,最鄰近插值算法取的值是距離原點映射到的位置最近的輸入像素的灰度值;雙線性插值算法的思想是在水平和豎直方向上分別進(jìn)行一次線性插值;雙三次插值算法根據(jù)目的像素點周圍的十六個像素點的灰度值作三次線性插值。
三個模型都能對各種位圖進(jìn)行放大處理,但放大效果不一樣,其中,雙三次插值算法對圖像的處理效果最好,雙線性插值算法次之,最鄰近插值算法的處理效果最差。
綜上,本文中四個模型各有其優(yōu)缺點,實際中根據(jù)具體情況采用適合的模型。
參 考 文 獻(xiàn)
[1] 姜啟源,謝金星,葉俊.數(shù)學(xué)建模[M].北京:高等教育出版社,2011:216-253.
JIANG Qiyuan, XIE Jinxing, YE Jun. Mathematical modeling[M]. Beijing: Higher Education Press,2011:216-253.
[2] 張海燕,吳方.幾種插值算法的比較研究[J].計算機技術(shù)與發(fā)展,2012,22(2):234-237.
ZHANG Haiyan, WU Fang. Coparative Research of Interpolation Algorithms[J]. Computer Technolocy And Development,2012,22(2):234-237.
[3] Rafael C. Gonzalez, Richard E. Woods, Steven L. Eddins.數(shù)字圖像處理[M].北京:電子工業(yè)出版社,2005:167-190.
Rafael C. Gonzalez, Richard E. Woods, Steven L. Eddins. digital image processing[M]. Beijing: Electronic Industry Press,2005:167-190.
[4] [美]赫恩.計算機圖像學(xué)[M].第三版.北京:電子工業(yè)出版社,2010:58-97.
Hearn. Computer image[M]. Third edition. Beijing: Electronic Industry Press,2010:58-97.
[5] 劉玉蘭,葛慶平.一種間接提取輪廓特征點的算法[J].計算機工程與應(yīng)用,2004,40(10):51-52.
LIU Yulan, GE Qingping. An Algorithm of Selecting Feature Points Indirectly in an Outline[J]. Computer Engineering and Applications,2004,40(10):51-52.
[6] 胡魁賢,嚴(yán)宏志,朱自冰,等.截面輪廓曲線分段約束擬合[J].計算機工程與科學(xué),2009,31(7):53-56.
HU Kuixian, YAN Hongzhi, ZHU Zibing, et al. Fitting Planar Curves with Restraint Method[J]. Computer Engineering and Science,2009,31(7):53-56.
[7] 劉玉蘭,葛慶平.閉合數(shù)字曲線的多項式遞歸擬合[J].計算機工程與應(yīng)用,2005,41(7):51-53.
LIU Yulan, GE Qingping. Recursive Fitting of Closing Digital Curve Using Polynomials[J]. Computer Engineering and Applications,2005,41(7):51-53.
[8] 仵峰.用Matlab進(jìn)行圖形矢量化[J].中國農(nóng)村水利水電,2007,(8):31-33.
WU Feng. The Vector quantization By Matlab[J]. China Rural Water and Hydropower,2007,(8):31-33.
[9] 梁小利,孫洪淋.基于線性插值算法的圖像縮放及實現(xiàn)[J].長沙通信職業(yè)技術(shù)學(xué)院學(xué)報,2008,7(2):49-51.
LIANG Xiaoli, SUN Honglin. Image zooming based on linear interpolation algorithm and its realization[J]. Journal of Changsha Telecommunications and Technology Vocational College,2008,7(2):49-51.
[10] 馮慧君,陶素娟,李隆.基于雙線性插值算法的圖像放縮技術(shù)與實現(xiàn)[J].計算機應(yīng)用與軟件,2004,21(7):117-119.
FENG Huijun, TAO Sujuan, LI Rong. Double Linear Inserting Algorithm Based Image Zooming And Its Realization With VC++[J]. Computer Applications and Software,2004,21(7):117-119.
Vector Filling and Interpolation Algorithms of Image Magnification
WU JunbinWU ShengWU Xingjiao
(School of Information Engineering and Automation, Kunming University of Science and Technology, Kunming650500)
AbstractIn view of the problem of image magnification, this paper establishes the vector filling amplification model. And fill the zoom model can’t deal with complex vector quantization for image shortcomings, using the adjacent interpolation method, bilinear interpolation method, double three interpolation method of three different algorithms are compared. And integrated the above four models, the following conclusion is gotten: fill amplification vector quantization model suitable for simple images, vector quantization can be unlimited amplifier, and does not affecting the imaging. Three models based on interpolation algorithm, the neighboring method model algorithm is simple, small amount of calculation, fast processing speed, but after processing the image will appear block effect, cause blurred images. Bilinear interpolation model overcame the neighboring method processing image block effect problem, compared the calculation method of double three simple, but the edge structure will be affected, produce the outline of the fuzzy phenomenon. Double three interpolation model to solve the disadvantages of the above two kinds of algorithm, the calculation accuracy is high, with the effect of edge enhancement, can better keep the image structure, but the large amount of calculation.
Key Wordsvector filling, adjacent interpolation method, bilinear interpolation method, double three interpolation method
收稿日期:2015年12月16日,修回日期:2016年1月24日
作者簡介:吳俊斌,男,研究方向:算法設(shè)計、程序設(shè)計。吳晟,男,教授,碩士生導(dǎo)師,研究方向:信息安全,算法研究等。吳興蛟,男,碩士研究生,研究方向:軟件工程、算法設(shè)計、程序設(shè)計。
中圖分類號TP309.7
DOI:10.3969/j.issn.1672-9722.2016.06.034
吳俊斌吳晟吳興蛟