999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenCV的仿射變換研究與應用

2016-02-23 12:19:28管焱然管有慶
計算機技術與發展 2016年12期

管焱然,管有慶

(1.東華大學,上海 201620;2.南京郵電大學,江蘇 南京 210003)

基于OpenCV的仿射變換研究與應用

管焱然1,管有慶2

(1.東華大學,上海 201620;2.南京郵電大學,江蘇 南京 210003)

仿射變換是一種常用的圖像幾何變換。使用仿射變換矩陣能夠方便地描述圖像的線性變換以及平移等非線性變換。介紹了仿射變換的數學原理,并借助OpenCV函數庫的內部函數對仿射變換的算法進行具體分析。通過在原圖像和目標圖像上分別找出三個不共線的點,并利用這兩組三點間的一一映射構建方程組,并求解得出一個2×3的仿射變換矩陣M;再根據所求得的仿射變換矩陣M,對圖像上每一個點進行變換,在這個過程中可采用最近鄰插值算法、線性插值算法、三次樣條插值算法和蘭索斯插值算法進行實現。給出了一個圖像實例對仿射變換進行說明。

圖像處理;仿射變換;矩陣;OpenCV;算法

0 引 言

在向量空間中,一個線性變換可以用一個矩陣去乘以一個向量的方式來表示,這種方法在計算機處理圖像變換的過程中極為常用。然而一種常見的幾何變換卻不屬于線性變換,那就是平移。

為了擴充線性變換,實現更多的功能,需要引入仿射變換的概念,并找到合適的數學方式來描述這一變換。

仿射變換在計算機圖像處理中有著重要的作用,在模式識別、圖像配準、圖像增強、圖像恢復、特征提取、圖像編碼壓縮等方面都需要應用到。文獻[1]研究了一種基于仿射變換的形狀配準模糊算法;文獻[2]通過仿射變換圖像間的關系,提出了一種頻域分析法;文獻[3]利用仿射變換的相關性質,提出了一種用于人臉識別的參數回歸算法;文獻[4]研究了仿射變換在增強現實中的應用;文獻[5]研究了極坐標系下的仿射變換及其在圖像拼接和遙感圖像配準方面的應用;文獻[6-7]研究了仿射變換的目標跟蹤算法;文獻[8-10]研究了仿射變換的特征和性質;文獻[11-12]研究了仿射變換在加密中的應用。

文中在介紹仿射變換數學原理的基礎上詳細分析了OpenCV內部函數處理仿射變換的算法,并調用OpenCV內部函數實現了圖像的仿射變換。

1 仿射變換

1.1 平面上仿射變換的定義

定義1(仿射變換的幾何定義):平面上的點之間的映射如果滿足下列條件:

(1)任何共線的三點的象仍是共線的三點;

(2)任何共線三點的簡比(注:共線三點A,B,C組成的兩個有向線段AC和BC的量的比AC/BC稱為A,B,C的簡比)不變。

則此映射稱為平面上的仿射變換。

定義2(仿射變換的代數定義):R2到自身的一個變換f,如果對于R2中任意向量v(x,y),與它的象f(v)=v'(x',y')之間的關系由式(1)確定,則變換f叫做R2上的仿射變換;式(1)稱為仿射變換公式。

(1)

1.2 仿射變換的基本性質

由仿射變換的幾何定義可知,仿射變換具有如下基本性質[13]:

(1)保持二維圖形的平直性,即共線點經過仿射變換仍為共線點。

(2)保持二維圖形的平行性,即平行直線經過仿射變換仍為平行直線,但向量間的夾角可能會改變。

(3)保持共線三點的簡比,即保持兩平行線段的比值不變。

1.3 用線性變換表示仿射變換

由式(1)可知,在二維平面上,并非所有的仿射變換都是線性的。當式(1)中a13或a23不為0時,該公式所確定的變換f就是非線性的,因為此時對于R2中的任意兩個向量v1和v2,f(v1+v2)≠f(v1)+f(v2)。

然而,可以用線性變換來表示仿射變換。對于R2中的任意點(x,y),可以用R3中的齊次坐標(x,y,1)來表示,這時可以將式(1)表示的仿射變換用矩陣乘法來實現:

(2)

將式(2)抽象為分塊矩陣的形式:

(3)

(4)

其中,M就是一個仿射變換矩陣,在OpenCV的內部函數中就是通過計算這樣的仿射變換矩陣,并以此為參數來實現二維圖形的仿射變換。

2 幾種典型的仿射變換

通過觀察式(1)可以發現,二維平面上任意一個向量v(x,y)到v'(x',y')的仿射變換都可以拆分成一個線性變換和一個平移,即乘以一個矩陣再加上一個向量:

v'=Av+b

(5)

不難發現,像平移(Translation)、縮放(Scale)、翻轉(Flip)、旋轉(Rotation)和錯切(Shear)等等常見的二維圖形的幾何變換都是仿射變換的特例。

2.1 平 移

2.2 縮 放

2.3 翻 轉

2.4 旋 轉

二維平面上任意一點以點(x0,y0)為中心逆時針旋轉θ弧度的旋轉可以由兩次平移和一次繞原點旋轉復合而成,即該點先按(-x0,-y0)進行平移,然后繞原點逆時針旋轉θ弧度,最后按(x0,y0)進行平移。這樣,經計算得到實現旋轉的矩陣A=

2.5 錯 切

二維圖形的錯切指的是圖形上的點沿著某一指定方向產生不等量移動而引起圖形變形的一種變換。錯切變換的一個典型例子就是平行四邊形因其不穩定性而產生的形變,即以平行四邊形的一條邊不動然后拖動另一對邊的頂點,這種變換就叫錯切。

可以發現,仿射變換也具有傳遞性,也就是說任意兩個仿射變換相復合的變換仍是一個仿射變換。

3 OpenCV的內部函數對仿射變換的處理

OpenCV中對于仿射變換的處理涉及三個函數,分別是getAffineTransform、getRotationMatrix2D和warp

圖1 典型仿射變換示例圖

Affine。其中,getAffineTransform和getRotationMatrix2D的功能均為返回一個2×3的仿射變換矩陣,warpAffine的功能是以求得的仿射變換矩陣為參數來實現從原圖像到目標圖像的仿射變換。這里,將探討OpenCV的內部函數如何求得一個仿射變換的變換矩陣以及如何高效地完成仿射變換。

一個仿射變換矩陣大致可以通過兩種方法求得,分別如下:

(1)對于一個有著特殊幾何性質的變換,可以根據該變換的具體性質直接求出其變換矩陣,就像求平移、縮放、翻轉、旋轉和錯切等變換的變換矩陣一樣。函數getRotationMatrix2D就是通過這一方法直接求出繞任意點旋轉的仿射變換矩陣,其具體算法基本同2.4中所述一致。

(2)對于一個一般的仿射變換,并不知道其具體性質,或者該變換沒有明顯的性質,因此也就無法直接求出其仿射變換矩陣。然而,對于任何一個給定的仿射變換,如果知道原圖像和目標圖像上點的坐標,并將其代回式(1)中,就可以求解出實現該變換的變換矩陣。使用這種方法時只需在原圖像和目標圖像上分別找三個不共線的點,并利用這兩組三點間的一一映射構建方程組,就足以求解出一個2×3的仿射變換矩陣。函數getAffineTransform就是利用這種方法求解出了一個一般的仿射變換矩陣。

下面對getAffineTransform、getRotationMatrix2D和warpAffine進行具體分析。

3.1 getAffineTransform

該函數出現在imgwarp.cpp的第6 275行。其形參表為:getAffineTransform(const Point2f src[],const Point2f dst[])。其中,src為const Point2f類數組,表示原圖像上的三組點;dst為const Point2f類數組,表示目標圖像上的三組點。函數的算法流程如圖2所示。

顯然,該函數并沒有將原圖像和目標圖像上的三點坐標直接代入式(1)中并聯立方程組求解。下面,描述該函數求解仿射變換矩陣的算法過程:

圖2 getAffineTransform算法流程圖

(4)調用OpenCV內部函數solve求解線性方程組AX=B。這樣,求解出的矩陣X中的各元素就是仿射變換矩陣M中的各元素。

3.2 getRotationMatrix2D

該函數出現在imgwarp.cpp的第6 275行。其形參表為:getRotationMatrix2D(Point2f center,double angle,double scale)。其中,center為Point2f類型,表示旋轉中心點;angle為double類型,表示旋轉角度,其值為正數時表示逆時針旋轉;scale為double類型,表示縮放因子。

該函數的功能就是返回一個以center為旋轉中心逆時針旋轉angle角度并進行scale倍縮放的仿射變換矩陣,其算法流程無需多言。唯一需要注意的是,由于OpenCV默認的平面直角坐標系比較特殊,它選取屏幕左上角為原點,屏幕右端為x軸正方向,屏幕下端為y軸正方向,故該函數計算出的仿射變換矩陣的形式與2.4中有所不同,為M=

3.3 warpAffine

該函數出現在imgwarp.cpp的第5 562行。其形參表為:warpAffine(InputArray _src,OutputArray _dst,InputArray _M0,Size dsize,int flags,int borderType,const Scalar& borderValue)。其中,_src為InputArray類型,表示原圖像;_dst為OutputArray類型,表示目標圖像;_M0為InputArray類型,表示2×3的仿射變換矩陣;dsize為Size類型,表示目標圖像的尺寸;flags為int類型,是插值方法的標識符,可選的插值方法和開關選項包括INTER_NEAREST(最近鄰插值)、INTER_LINEAR(線性插值)、INTER_AREA(區域插值)、INTER_CUBIC(三次樣條插值)、INTER_LANCZOS4(蘭索斯插值)、CV_WARP_FILL_OUTLIERS(填充所有輸出圖像的像素,如果部分像素落在輸入圖像的邊界外,那么它們的值設定為fillval)、CV_WARP_INVERSE_MAP(指定仿射變換矩陣是輸出圖像到輸入圖像的反變換,因此可以直接用來做像素插值。否則,函數從仿射變換矩陣得到反變換。),其默認值為INTER_LINEAR(線性插值);borderType為int型,表示邊界像素模式,其默認值為BORDER_CONSTANT;borderValue為const Scalar&類型,是在恒定邊界情況下取的值,默認值為0。函數算法流程如圖3所示。

圖3 warpAffine算法流程圖

該函數的功能是應用式(3)實現從原圖像到目標圖像的仿射變換。在對圖像上每一個點進行變換的過程中,該函數支持四種插值算法,分別是最近鄰插值算法、線性插值算法、三次樣條插值算法和蘭索斯插值算法。當插值方法的標識符為區域插值算法時,函數默認按線性插值算法執行。

4 仿射變換的應用實例

通過調用OpenCV的內部函數可以很輕松地實現圖像的仿射變換。下面給出一個仿射變換的實例。

首先輸入一個原圖像,如圖4(a)所示。使用getAffineTransform函數得到的變換矩陣對原圖像進行扭曲(warp),如圖4(b)所示。也可以使用getRotationMatrix2D函數得到的變換矩陣對原圖像進行旋轉(Rotate),如圖4(c)所示。甚至可以在對原圖像經過扭曲的基礎上再進行旋轉,或在對原圖像進行旋轉的基礎上再進行扭曲,如圖4(d)所示。

圖4 仿射變換的實例

5 結束語

介紹了仿射變換的數學原理、算法流程以及應用實例,較為詳細地對計算機處理仿射變換的方式進行了數學上的推導,并以OpenCV函數庫為研究對象,詳細解讀了其中涉及仿射變換的三個函數,最后給出了用OpenCV內部函數處理圖像仿射變換的實例。事實上,在計算機圖形學的實際應用中,仿射變換的用處極為廣泛,在一些需要圖像進行幾何變換的過程中都離不開仿射變換的使用。

[1] Xue Z,Shen D G,Teoh E K.An efficient fuzzy algorithm for aligning shapes under affine transformation[J].Pattern Recognition,2001,34(6):1171-1180.

[2] Lucchese L.A frequency domain technique based on energy radial projections for robust estimation of global 2D affine transformations[J].Computer Vision and Image Understanding,2001,81(1):72-116.

[3] Li X,Xu Y D,Lv Qi.Affine-transformation parameters regression for face alignment[J].IEEE Signal Processing Letters,2016,23(1):55-59.

[4] 明德烈,柳 健,田金文.仿射變換在增強現實中的應用[J].系統仿真學報,2001,13(S1):286-289.

[5] Luca L,Simone L,Guido M C.Estimation of two-dimensional affine transformations through polar curve matching and its application to image mosaicking and remote-sensing data registration[J].IEEE Transactions on Image Processing,2006,15(10):3008-3019.

[6] 張召悅,魏孝強,楊 晗.基于SIFT和仿射變換的航空器起飛圖像跟蹤方法[J].航空計算技術,2016,46(1):82-84.

[7] 李培華,肖莉娟.基于MeanShift的相似性變換和仿射變換目標跟蹤算法[J].中國圖象圖形學報,2011,16(2):258-266.

[8] 柏 森,曹長修.亞仿射變換的性質及其應用[J].計算機輔助設計與圖形學學報,2003,15(2):205-208.

[9] 汪文英,張冬明,張勇東,等.利用仿射變換的快速空間關系驗證[J].計算機輔助設計與圖形學學報,2010,22(4):625-631.

[10] 葛 娟,曹偉國,周 煒,等.一種顏色仿射變換下的局部特征描述子[J].計算機輔助設計與圖形學學報,2013,25(1):26-33.

[11] 何 冰.基于仿射變換的圖像置亂改進新算法[J].計算機與數字工程,2011,39(3):121-124.

[12] 文昌辭,王 沁,丁 華,等.基于三維仿射變換的數字圖像置亂算法[J].北京科技大學學報,2012,34(12):1478-1482.

[13] Lay D C.Linear algebra and its applications[M].3rd ed.[s.l.]:Pearson Education,2002.

Research and Application of Affine Transformation Based on OpenCV

GUAN Yan-ran1,GUAN You-qing2

(1.Donghua University,Shanghai 201620,China;2.Nanjing University of Posts and Telecommunications,Nanjing 210003,China)

Affine transformation is a kind of frequently used geometric image transformation in the field of computer image processing.An affine transformation matrix can be used to describe any linear transformation and one kind of nonlinear transformation.It gives an introduction to the mathematical principles of affine transformation and makes an analysis of the algorithms of affine transformation basing on the OpenCV function library.If one image is related to another by an affine transformation,three pairs of corresponding points of the two images are needed to solve for the 2×3 affine transformation matrixM,whichisusedtoapplythetransformationtothesourceimage.Aseriesofinterpolationalgorithmscanbeemployedsuchasnearestneighborinterpolation,linearinterpolation,cubicsplineinterpolationandLanczosinterpolationtoimplementtheaffinetransformation.Anexampleisgivenconcerningaffinetransformationofanimage.

image processing;affine transformation;matrix;OpenCV;algorithm

2016-02-26

2016-06-08

時間:2016-11-22

江蘇省高校自然科學研究計劃項目(05KJD520146)

管焱然(1994-),男,研究方向為計算機應用;管有慶,副研究員,碩士生導師,研究方向為數據庫、通信軟件和下一代網絡等。

http://www.cnki.net/kcms/detail/61.1450.TP.20161122.1227.032.html

TP

A

1673-629X(2016)12-0058-06

10.3969/j.issn.1673-629X.2016.12.013

主站蜘蛛池模板: 福利在线一区| 国产精品污视频| 一本大道香蕉高清久久| 亚洲首页国产精品丝袜| 精品国产免费第一区二区三区日韩| 亚洲性视频网站| 国产精品成人免费视频99| 亚洲日韩高清在线亚洲专区| 伊人激情综合网| 中国国产A一级毛片| 超清人妻系列无码专区| 久久亚洲国产视频| 国产爽歪歪免费视频在线观看| 国产欧美亚洲精品第3页在线| 亚洲国产成人久久精品软件| 91亚洲国产视频| 91福利免费视频| 国产高颜值露脸在线观看| 国产成人久视频免费| 国产无码网站在线观看| 成人精品在线观看| 亚洲精品动漫在线观看| 又爽又大又光又色的午夜视频| 日本三级精品| 国产熟睡乱子伦视频网站| 亚洲高清免费在线观看| 亚洲综合日韩精品| 国产精品欧美日本韩免费一区二区三区不卡| 成人国产精品2021| 色香蕉影院| 97超爽成人免费视频在线播放| 91偷拍一区| 无码中文字幕乱码免费2| 亚洲三级片在线看| 免费国产福利| 视频一区视频二区中文精品| 久久99国产综合精品1| 国产在线精彩视频二区| 18禁不卡免费网站| 国产综合色在线视频播放线视| 欧美日韩久久综合| 天天综合网亚洲网站| 亚洲精品无码在线播放网站| 国产制服丝袜91在线| 狠狠亚洲五月天| 91精品日韩人妻无码久久| 日韩午夜伦| av无码久久精品| 丁香六月激情综合| 又爽又黄又无遮挡网站| 91无码视频在线观看| 欧美国产日韩在线观看| 成人午夜免费观看| 国产丝袜啪啪| 欧美啪啪视频免码| 中文字幕啪啪| 国产美女无遮挡免费视频网站| 亚洲欧美色中文字幕| 国产主播一区二区三区| 91色在线视频| 欧美日本不卡| 福利在线不卡| 亚洲精品无码抽插日韩| 四虎永久免费地址在线网站| 久久精品亚洲中文字幕乱码| 中国一级特黄大片在线观看| 国产精品自在拍首页视频8 | 在线视频亚洲色图| 国产欧美一区二区三区视频在线观看| 日韩国产欧美精品在线| 成色7777精品在线| 日韩在线成年视频人网站观看| 久久9966精品国产免费| 亚洲日韩国产精品综合在线观看| 欧美伊人色综合久久天天| 扒开粉嫩的小缝隙喷白浆视频| 婷婷综合色| 在线观看91香蕉国产免费| 色综合天天操| 色天堂无毒不卡| 亚洲欧美日韩天堂| 99精品影院|