序言
在影象處理中,對影象進行二維變換有仿射變換(affine transformation),透視變換(perspective transformation)(應該還有其他變換,但是我用到的比較多的是這兩種變換)。
一、仿射變換
1、概念
仿射變換(affine transformation)是空間直角座標系的變換,從乙個二維座標變換到另乙個二維座標,仿射變換是乙個線性變換,他保持了影象的「平行性」和「平直性」,即影象中原來的直線和平行線,變換後仍然保持原來的直線和平行線,仿射變換比較常用的特殊變換有平移(translation)、縮放(scale)、翻轉(flip)、旋轉(rotation)和剪下(shear)。
圖1.仿射變換
2、仿射變換的變換公式推導
在opencv提供的仿射變換中,變換的公式是乙個2*3的矩陣,如下:
a是仿射變換2*3矩陣,m是2*2矩陣,表示座標軸的旋轉和縮放,b是2*1矩陣,是座標軸平移矩陣。
座標變換如下:
可以看出,a矩陣只有6個引數,所以只要知道3個點之間的仿射變換,就可以求出a矩陣。
3、 仿射變換座標繫法推導
仿射變換也可以看成座標系的旋轉和縮放以及平移:
p點位置不變,座標系由(xt,yt)變換到(xs,ys),相應的座標有(xtp,ytp)變換成(xsp,ysp)。
其中(xtp,ytp)與(xsp,ysp)的關係如下:
4、opencv仿射變換程式實現
#include
#include
#include
#include
using namespace std;
using namespace cv;
void main()
二、透視變換
透視變換(perspective transformation)是指利用透視中心、像點、目標點三點共線的條件,按透視旋轉定律使承影面(透視面)繞跡線(透視軸)旋轉某一角度,破壞原有的投影光線束,仍能保持承影面上投影幾何圖形不變的變換。
圖2.透視變換
公式推導及應用詳見
三、二者的關係
從這兩天的學習和應用中初步的總結下兩者的異同吧
仿射變換:二維空間的變換 ; 線性變換 ;已知3對座標點就可以求得變換矩陣
透視變換:三維空間的變換 ; 非線性變換 ;已知4對座標點可以求得變換矩陣
上篇中w及w'的問題需要使用
齊次座標
,即用三維向量(x, y, w)表示二維向量,仿射變換中w從來不變,這樣可以把它當作為1,但透視變換中通常齊次元素wc
並不為1,所以為了對映回真實平面需要進行齊次除法,即每個元素都除以w
詳見 參考
仿射變換VS透視變換
序言 在影象處理中,對影象進行二維變換有仿射變換 affine transformation 透視變換 perspective transformation 應該還有其他變換,但是我用到的比較多的是這兩種變換 一 仿射變換 1 概念 仿射變換 affine transformation 是空間直角座...
仿射變換與透視變換
仿射變換與透視變換是機器視覺中繞不開的幾何知識之一.我以前在做相機標定的時候研究了一下,現在寫出來,免得以後忘記.1.透視變化 透視變換與透視投影密切相關.我們先來理解一下什麼是透視投影,所謂透視投影,通俗地講就是 遠小近大 前段時間,一張在網上流行.如果你明白了透視原理,就不會出現 道理我都懂,可...
仿射變換與透視變換
旋轉 線性變換 平移 向量加 縮放 線性變換 錯切,反轉 仿射變換是一種二維座標到二維座標之間的線性變換,它保持了二維圖形的 平直性 直線經過變換之後依然是直線 和 平行性 二維圖形之間的相對位置關係保持不變,平行線依然是平行線,且直線上點的位置順序不變 任意的仿射變換都能表示為乘以乙個矩陣 線性變...