仿射變換函式warpAffine 旋轉

2021-07-25 10:32:17 字數 1861 閱讀 1686

理論

翻開任意一本影象處理的書,都會講到影象的幾何變換,這裡面包括:仿射變換(affine transformation)、投影變換(projecttive transformation)。前者針對的是平面上的物體位姿變化,如水平/垂直方向位移、旋轉、縮小/放大,常見的應用有orc字元識別。後者針對的是三維空間中的位置變化,受限於物體依然是平面的,也稱為二維投影變換,常見的應用有車牌識別。

影象變換:以上所有變換均可以通過矩陣描述,將輸入影象與變換矩陣進行矩陣乘法得到變換後的影象座標。顯然,這種方式非常適合程式設計實現。

opencv仿射變換函式說明

opencv提供了,從變換矩陣計算,到影象變換,每個流程的一攬子解決方案。

以opencv 3.0為例,參考幾何變換模組說明:

1、getaffinetransform

[cpp]view plain

copy

mat getaffinetransform(inputarray src, inputarray dst)  

該函式需要已知變換前與變換後的座標,返回相應的變換矩陣,至於是何種變換無需事先知道。適用於目標檢測場合,通過檢測得到的特徵點進行影象匹配。

2、getrotationmatrix2d

[cpp]view plain

copy

mat getrotationmatrix2d(point2f center, double angle, double scale)  

已知旋轉中心座標(座標原點為影象左上端點)、旋轉角度(單位為度°,順時針為負,逆時針為正)、放縮比例,返回旋轉/放縮矩陣。與getaffinetransform相比,無需知道變換後坐標,適用於一般情況下的影象變換。

3、warpaffine

[cpp]view plain

copy

void warpaffine(inputarray src, outputarray dst, inputarray m, size dsize, int flags=inter_linear, int bordermode=border_constant, const scalar& bordervalue=scalar())  

根據etaffinetransform或getrotationmatrix2d得到的變換矩陣,計算變換後的影象。

src為輸入影象

dst為變換後影象,型別與src一致。

m為變換矩陣,需要通過其它函式獲得,當然也可以手動輸入。

dsize為輸出影象的大小

flags,插值演算法,詳細如下:

[cpp]view plain

copy

enum interpolationflags;  

bordermode,邊界處理方式

[cpp]view plain

copy

enum bordertypes ;  

opencv實現影象旋轉(其它仿射變換的流程與此一致)

[cpp]view plain

copy

mat src;  

mat dst(src.size(),src.type());  

...  

cv::point2f center(x0,y0);  

double ang = -30;  

cv::mat rotmat = cv::getrotationmatrix2d(center,ang,1);  

cv::warpaffine(src,dst,rotmat,src.size());  

順時針旋轉30度

剛性仿射變換演算法 仿射變換

哎慢慢來吧,感覺一大堆東西看不懂.仿射變換就是affine transformation 這是乙個跟影象相關的變換,影象變換是通過矩陣變換來實現的。影象的幾個基本變換有平移 縮放 旋轉 仿射 透視。剛性變換 就像這個題目這樣顯示的,就是非常強硬的變換,在這個二維平面上開始是怎麼樣,後來就是怎麼樣 仿...

仿射變換transform

void viewdidload void clickmeaction 2 仿射變換比例 uiview animatewithduration 1animations 3 仿射變換旋轉 uiview animatewithduration 1animations 4 三種變換的結合 1 transl...

warpAffine OPENCV 仿射變換原理

在opencv中,目前並沒有現成的函式直接用來實現影象旋轉,它是用仿射變換函式cv warpaffine來實現的,此函式目前支援4種插值演算法,最近鄰 雙線性 雙三次 蘭索斯插值,如果傳進去的引數為基於畫素區域關係插值演算法 inter area 則按雙線性插值。通常使用2 3矩陣來表示仿射變換 其...