Opencv暑期歷程 Day6 仿射變換

2021-08-22 06:13:37 字數 2017 閱讀 2532

仿射變換是指在向量空間中進行一次線性變換(乘以乙個矩陣)並加上乙個平移(加上乙個向量),變換為另乙個向量空間的過程。在有限維的情況下,每個仿射變換可以由乙個矩陣a和乙個向量b給出,它可以寫作a和乙個附加的列b。乙個仿射變換對應於乙個矩陣和乙個向量的乘法,而仿射變換的復合對應於普通的矩陣乘法,只要加入乙個額外的行到矩陣的底下,這一行全部是0除了最右邊是乙個1,而列向量的底下要加上乙個1.

affine transform描述了一種二維仿射變換的功能,它是一種二維座標之間的線性變換,保持二維圖形的「平直性」(即變換後直線還是直線,圓弧還是圓弧)和「平行性」(其實是保持二維圖形間的相對位置關係不變,平行線還是平行線,而直線上的點位置順序不變,另特別注意向量間夾角可能會發生變化)。仿射變換可以通過一系列的原子變換的復合來實現包括:平移(translation)、縮放(scale)、翻轉(flip)、旋轉(rotation)和錯切(shear).

事實上,仿射變換代表的是兩幅圖之間的關係,我們通常使用2x3矩陣來表示仿射變換如下:

考慮到我們要使用矩陣a和b對二維向量

得到如下結果:

三種常見形式:

現在有兩幅影象(如下圖),影象二是影象一經過放射變化得來的。那問題來了,我們怎麼從這兩個影象資訊裡挖掘出兩圖之間的對映關係?

很簡單,只要在影象一種拿出三個點(1,2,3),影象二也拿出對應的三個點(1,2,3),就可以求出兩圖間的對映關係!

接下來用**實現一下。

opencv通過兩個函式的組合使用來實現仿射變換:

warpaffine函式

void cv::warpaffine     (   inputarray      src,

outputarray dst,

inputarray m,

size dsize,

int flags = inter_linear,

int bordermode = border_constant,

const scalar & bordervalue = scalar()

)

引數解釋. src: 輸入影象

. dst: 輸出影象,尺寸由dsize指定,影象型別與原影象一致

. m: 2x3的變換矩陣

. dsize: 指定影象輸出尺寸

. flags: 插值演算法識別符號,有預設值inter_linear,如果插值演算法為warp_inverse_map, warpaffine函式使用如下矩陣進行影象轉換

getrotationmatrix2d函式

mat cv::getrotationmatrix2d     (   point2f     center,

double angle,

double scale

)

引數解釋. center: point2f型別,表示原影象的旋轉中心

. angle: double型別,表示影象旋轉角度,角度為正則表示逆時針旋轉,角度為負表示逆時針旋轉(座標原點是影象左上角)

. scale: 縮放係數

函式計算如下矩陣:

其中那麼好了,接下來我們就試試吧。

opencv裡有兩個方法,乙個是用三點來確定變換矩陣,一種是直接指定旋轉的角度和比例來確定變換矩陣。我個人覺得用第二種比較方便與直觀。

//#include "stdafx.h"

#include#include#includeusing namespace std;

using namespace cv;

//仿射變換實驗

int main()

2019暑期金華集訓 Day6 計算幾何

內積不等式 a,b 2 le a,a b,b 其中 a,b 表示 a cdot b 好像是廢話?a times b a b sin theta 二維叉積 a times b x 1y 2 x 2y 1 三維叉積 a times b left begin i j k ax ay az bx by bz...

2019 遊記 中山紀念中學暑期遊Day6

今天的安排是 聽課!資料結構 專題,花了一早上和一下午,晚上在搞乙個兄弟自己出的題目 賊坑 於是時間又沒了qaq.真心覺得時間怎麼都不夠用啊咧.早上還是沒有早起成功,於是匆匆趕往食堂,居然有公尺漢堡 公尺飯夾雞肉 吃得還算滿意qwq 來到報告廳,座位不出所料的被佔滿了,可是還是get到乙個c位 人品...

上課記錄 Day6

html css和bootstrap框架的關係是什麼 下列 布局合理嗎?不合理的話,應該怎麼改進 不合理 名字跟暱稱應該各分為一塊 名字 暱稱 絕對路徑和相對路徑的差別是什麼 col md 6 col xs 6這兩個類分別表示什麼含義 col md push 6 col md offset 6 co...