2008年12月18日 星期四

Chapter 6 Image Geometry

6.1 Interpolation of Data
Interpolation這東西叫做"插值",其實也就是所謂的內插法,內插技巧是資料分析時常用的工具,尤其在尋求等距之對應資料作為比對時,常需利用內插法尋求實際對應之值。
當然內插法亦可用來尋求資料間之中間對應值。
這個章節提到兩種內插法
nearest-neighbor interpolation(近鄰/相鄰插值法)
範例為,一個固定長度上的4點要add為8點
假設原來4點的間隔各為1,那麼總長度就是3
可算出增加為8個點後的間隔為3/7
由此可得出x與x'的關係式為1/3(7x-4) & 1/7(3x'+4)
不過由於找到的點明顯都不是那麼的漂亮(6.2那圖),因此我們必須經由xi附近已知的點xj來推測出f(xi)'
這個方法就叫做nearest-neighbor interpolation


linear interpolation(線性插值法)
這個插值法將會將原定的4個點先做連線
接著再將預計插入的新點(x'那些)
向Y軸垂直延伸看是對齊到原先4點連線的線上,即可知道f(xi)'是多少。
這個方法就叫做linear interpolation

6.2
這裡主要介紹bilinear interpolation(雙線性插值法)
雙線性插值法是一種非常常見且簡單的圖像放大法,同時可以讓圖像顯的平滑而不是鋸齒狀,它的原理為,把臨近的四個點像素與相對應的貢獻系數相乘後相加
具體書上的做法為
將圍繞新點(x',y')的原來四點連成一個矩形。
在矩形中的點(x',y')延著軸線伸找到與矩形邊相交的兩點
即得到(x,y')、(x+1,y')兩點
藉由橫邊的比例與線兩邊的點可以推算出(x,y')、(x+1,y')的比例
藉由直邊的比例與剛才求出的線兩邊的點(x,y')、(x+1,y')來算出(x',y')。

看不懂? 沒關係XD
知道這東西在搞圖像縮放其實也就夠了

6.3
General Interpolation
這邊介紹的插值法比較讓人迷惑(?)
如果我們希望在x1與x2之間插補一個x',並假設x'-x1=λ
然後定義一個interpolation function R(u)
f(x') = R(-λ)f(x1)+R(1-λ)f(x2)。
如此我們就能根據u值的落點得到R(u)的結果
因該啦-3-

這裡還另外提到了幾種例子
包含
R0(u)nearest-neighbor interpolation
R1(u)bilinear interpolation
R3(u)cubic interpolation

6.4
linear filtering(最佳線性濾波器)
這是一個簡潔又暴力的影像放大方法
不過所造成的效果卻是比較糟糕
本身運用到5章的濾波器
linear filtering將會對你的影像矩陣做zero-interleave,即在原矩陣行列之間加零
接著影像將會透過這個filter直接得到放大兩倍效果


6.5
這章節主在在談縮小,概念很簡單,這種縮小法總稱為image minimization
一種消除間隔中的值的方法為subsampling


6.6
這章節是關於影像旋轉的探討
首先書上直接先假設我們影像矩陣可以直接透過這個簡單的國中公式完成
[x']=[cosθ -sinθ][x]
[y']=[sinθ cosθ][y]
若我們的矽塔(θ),是一個直角的話,則這也將是成立的
[x]=[cosθ -sinθ][x']
[y]=[sinθ cosθ][y']

理論上來說,這是正確的,但是卻不能適用於影像旋轉上
可以想像一個5*5大小的正方形圖畫,我們將他旋轉45度變為一個菱形
但是畫框仍然是正方形的,如果我們將菱形的畫硬塞入正方形的畫框,那麼畫的角角就會被畫框給遮住

就跟地心引力一樣,不可抗拒的,不管你怎麼轉,影像本身數據儲存必定是為一個直角方格圖的子集合,

所以呢,為了完全顯示我們旋轉後的畫,我們必須要根據旋轉角度準備更大的"畫框"來存放旋轉後的影像
因此,我們將[x,y]旋轉θ度後為[x',y']後再旋轉θ度回來為取得[x",y"]
需介於原來的圖片的長(a)、寬(b)之間。
0≤ x'cosθ+y'sinθ≤a
0≤-x'sinθ+y'cosθ≤b
這樣我們得到旋轉後需要多大的"畫框"大小來裝我們旋轉後的影像


6.7
這章節比較是在說故事
在16-17世紀就有在使用的一種影像技術,anamorphosis(失真)
將一些影像進行拉長或是扭曲
MATLAB中可以透過rgb2gray指令來修正這類的影像

沒有留言:

張貼留言