示例程式034 仿射變換

2021-06-21 15:01:26 字數 962 閱讀 1827

什麼是仿射變換:

乙個任意的仿射變換都能表示為 乘以乙個矩陣 (線性變換) 接著再 加上乙個向量 (平移)

所以,能夠用仿射變換來表示:

旋轉 (線性變換)

平移 (向量加)

縮放操作 (線性變換)

簡單的說,仿射變換代表的是兩幅圖之間的 關係 (位置關係).

3. 通常使用2×3的矩陣來進行仿射變換。比如用 a,b矩陣 對 x矩陣 進行仿射變換就是:

t=a·x+b;

矩陣中儲存的是位置座標。

以下面兩幅圖為例:

示例程式034--仿射變換

1與2中的3個點存在一一對應的關係,通過這樣兩組三點求出仿射變換矩陣,就能把仿射變換應用到影象中所有的點,求出仿射變換後的影象。

用到的函式:

getrotationmatrix2d 來獲得乙個 2 \times 3 旋轉矩陣

warpaffine 來實現一些簡單的仿射變換.

程式**及注釋:

// 042 仿射變換.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include "opencv2/highgui/highgui.hpp"

#include "opencv2/imgproc/imgproc.hpp"

#include

#include

using namespace cv;

using namespace std;

/// 全域性變數

char* source_window = "source image";

char* warp_window = "warp";

char* warp_rotate_window = "warp + rotate";

int main( int argc, char** argv )

執行結果:

示例程式034--仿射變換

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

哎慢慢來吧,感覺一大堆東西看不懂.仿射變換就是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矩陣來表示仿射變換 其...