經常使用插值算法介紹(一)

圖像的縮放很好理解,就是圖像的放大和縮小。傳統的繪畫工具中,有一種叫作「放大尺」的繪畫工具,畫家經常使用它來放大圖畫。固然,在計算機上,咱們再也不須要用放大尺去放大或縮小圖像了,把這個工做交給程序來完成就能夠了。下面就來說講計算機怎麼來放大縮小圖象;在本文中,咱們所說的圖像都是指點陣圖,也就是用一個像素矩陣來描述圖像的方法,對於另外一種圖像:用函數來描述圖像的矢量圖,不在本文討論之列。
越是簡單的模型越適合用來舉例子,咱們就舉個簡單的圖像:3X3 的256級灰度圖,也就是高爲3個象素,寬也是3個象素的圖像,每一個象素的取值能夠是 0-255,表明該像素的亮度,255表明最亮,也就是白色,0表明最暗,即黑色。假如圖像的象素矩陣以下圖所示(這個原始圖把它叫作源圖,Source):
234   38    22
67     44    12
89     65    63
 
這個矩陣中,元素座標(x,y)是這樣肯定的,x從左到右,從0開始,y從上到下,也是從零開始,這是圖象處理中最經常使用的座標系,就是這樣一個座標:
 
  ---------------------->X
  |
  |
  |
  |
  |
Y∨
 
若是想把這副圖放大爲 4X4大小的圖像,那麼該怎麼作呢?那麼第一步確定想到的是先把4X4的矩陣先畫出來再說,好了矩陣畫出來了,以下所示,固然,矩陣的每一個像素都是未知數,等待着咱們去填充(這個將要被填充的圖的叫作目標圖,Destination):
?        ?        ?       ?
?        ?        ?       ?
?        ?        ?       ?
?        ?        ?       ?
如今從最簡單的狀況提及
1.最近鄰插值
該算法是最簡單的插值算法,就只是把放大後缺失的點的像素值用最靠近的原圖的像素值直接填進去就能夠了,好比座標爲(0,0),那麼該座標對應源圖中的座標能夠由以下公式得出:
放大係數t=dstWidth/srcWidth=4/3
srcX=dstX/t, srcY = dstY/t
好了,套用公式,就能夠找到對應的原圖的座標了(0/(4/3),0/(4/3))=>(0,0)
,找到了源圖的對應座標,就能夠把源圖中座標爲(0,0)處的234象素值填進去目標圖的(0,0)這個位置了。
接下來,如法炮製,尋找目標圖中座標爲(1,0)的象素對應源圖中的座標,套用公式:
(1/0.75,0*0.75)=>(0.75,0)
結果發現,獲得的座標裏面居然有小數,這可怎麼辦?計算機裏的圖像但是數字圖像,象素就是最小單位了,象素的座標都是整數,歷來沒有小數座標。這時候採用的一種策略就是採用四捨五入的方法(也能夠採用直接舍掉小數位的方法),把非整數座標轉換成整數,好,那麼按照四捨五入的方法就獲得座標(1,0),完整的運算過程就是這樣的:
(1*0.75,0*0.75)=>(0.75,0)=>(1,0)
那麼就能夠再填一個象素到目標矩陣中了,一樣是把源圖中座標爲(1,0)處的像素值38填入目標圖中的座標。
        
依次填完每一個象素,一幅放大後的圖像就誕生了,像素矩陣以下所示:
234    38     22     22 
67      44     12     12 
89      65     63     63 
89      65     63     63  
這種放大圖像的方法叫作最臨近插值算法,這是一種最基本、最簡單的圖像縮放算法,效果也是最很差的,放大後的圖像有很嚴重的馬賽克,縮小後的圖像有很嚴重的失真;效果很差的根源就是其簡單的最臨近插值方法引入了嚴重的圖像失真。算法

相關文章
相關標籤/搜索