【C++ & Opencv】【第卅八天】仿射變換

仿射矩陣其實並不複雜,它只是一個兩行三列的矩陣,用它乘上點座標(x,y),就能實現對點的伸縮、旋轉、平移操作。
複雜的是怎樣求仿射矩陣。
下面這篇文章講的是基本的仿射變換。
感謝原博主(似乎我和原博主是同屆畢業哈):https://blog.csdn.net/windowsyun/article/details/78158747

什麼是仿射變換?
仿射變換就是圖像的線性變換加上平移,用一幅圖表示,就是
在這裏插入圖片描述
由 image1 到 image2 的轉換經過了三個操作

 1.旋轉 (線性變換) 
 2.縮放操作(線性變換)
 3.平移 (向量加)

如果沒有了第3個平移的操作,那它就是線性變換。前兩個筆記已經整理了圖像的旋轉、縮放和平移的各個方法,接下來會介紹仿射變換的矩陣表示和使用方法。

放射變化的矩陣形式

圖像的變換要對圖像的每一個像素點進行操作,假設其中的一個像素點的座標是(x,y),我們用矩陣形式表示:在這裏插入圖片描述
我們通常使用 2 x 3 矩陣來表示仿射變換。

在這裏插入圖片描述

矩陣 A、B 就是變換矩陣

經過仿射變換後的點的矩陣座標是T,我們已經知道放射變換就是線性變換加上平移,用矩陣表示的話就是
在這裏插入圖片描述
也可以寫成
在這裏插入圖片描述
計算可得
在這裏插入圖片描述
其中, [a00,a01;a10,a11]^T 這個矩陣,就是線性變換矩陣,即保持原點不變,對圖像實現縮放、旋轉操作,關於這一點可以看視頻:https://www.bilibili.com/video/av6731067/?p=4 (看P4課)
而 [b00;b10] 實現的是對圖像(x,y)方向的平移。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章