Mat屬於矩陣類型,與其他兩者比較,更重於計算,雖然縮放與旋轉的公式及演算法並不算複雜,但未來可能需要更複雜的矩陣計算,故使用此類型讀取圖片。
影像縮放
在影像中最簡單的演算法Nerest Neighbor。
先將空間放為原本的w2/w1倍(x、y如左公式),
並依比例選取等比例中最接近的坐標當作此格畫素。
下圖為放大的例子。
● Nerest Neighbor演算法實作結果
第二種方法是Bilinear,則是拿相鄰四個像素平均當作此格的畫素作線性內插
此方法與Nerest Neighbor相比較為複雜,但Nerest Neighbor會有些許的鋸齒狀(畫質較差)
● 放大1.5倍解析度比較(左為Bilinear、右為Nerest Neighbor)
旋轉
由於使用Mat的關係,使用矩陣旋轉更為容易
右圖為旋轉公式
依矩陣形式:
┌ A B C ┐
└ D E F ┘
矩陣前半
┌ A B
└ D E 為旋轉矩陣
後半
C ┐
F ┘ 為圖位置及旋轉中心的校正
● 圖片旋轉實作結果
參考資料:
NNI演算法:
http://blog.yam.com/chu24688/article/44769723
http://cg2010studio.wordpress.com/2012/02/19/%E7%B8%AE%E6%94%BE%E6%BC%94%E7%AE%97%E6%B3%95-scaling-algorithm/
資料結構介紹:
http://yester-place.blogspot.tw/2008/07/cvmat.html
http://blog.csdn.net/wuxiaoyao12/article/details/7305848
線性平移公式:
http://zh.wikipedia.org/wiki/%E5%8F%8C%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC






沒有留言:
張貼留言