亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OpenCV的仿射變換研究與應(yīng)用

        2016-02-23 12:19:28管焱然管有慶
        計算機技術(shù)與發(fā)展 2016年12期
        關(guān)鍵詞:圖形學(xué)共線插值

        管焱然,管有慶

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

        基于OpenCV的仿射變換研究與應(yīng)用

        管焱然1,管有慶2

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

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

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

        0 引 言

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

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

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

        文中在介紹仿射變換數(shù)學(xué)原理的基礎(chǔ)上詳細分析了OpenCV內(nèi)部函數(shù)處理仿射變換的算法,并調(diào)用OpenCV內(nèi)部函數(shù)實現(xiàn)了圖像的仿射變換。

        1 仿射變換

        1.1 平面上仿射變換的定義

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

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

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

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

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

        (1)

        1.2 仿射變換的基本性質(zhì)

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

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

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

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

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

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

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

        (2)

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

        (3)

        (4)

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

        2 幾種典型的仿射變換

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

        v'=Av+b

        (5)

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

        2.1 平 移

        2.2 縮 放

        2.3 翻 轉(zhuǎn)

        2.4 旋 轉(zhuǎn)

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

        2.5 錯 切

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

        可以發(fā)現(xiàn),仿射變換也具有傳遞性,也就是說任意兩個仿射變換相復(fù)合的變換仍是一個仿射變換。

        3 OpenCV的內(nèi)部函數(shù)對仿射變換的處理

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

        圖1 典型仿射變換示例圖

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

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

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

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

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

        3.1 getAffineTransform

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

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

        圖2 getAffineTransform算法流程圖

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

        3.2 getRotationMatrix2D

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

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

        3.3 warpAffine

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

        圖3 warpAffine算法流程圖

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

        4 仿射變換的應(yīng)用實例

        通過調(diào)用OpenCV的內(nèi)部函數(shù)可以很輕松地實現(xiàn)圖像的仿射變換。下面給出一個仿射變換的實例。

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

        圖4 仿射變換的實例

        5 結(jié)束語

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

        [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] 明德烈,柳 健,田金文.仿射變換在增強現(xiàn)實中的應(yīng)用[J].系統(tǒng)仿真學(xué)報,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].航空計算技術(shù),2016,46(1):82-84.

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

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

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

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

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

        [12] 文昌辭,王 沁,丁 華,等.基于三維仿射變換的數(shù)字圖像置亂算法[J].北京科技大學(xué)學(xué)報,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

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

        管焱然(1994-),男,研究方向為計算機應(yīng)用;管有慶,副研究員,碩士生導(dǎo)師,研究方向為數(shù)據(jù)庫、通信軟件和下一代網(wǎng)絡(luò)等。

        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

        猜你喜歡
        圖形學(xué)共線插值
        小議共線向量問題
        向量的共線
        平面幾何中三點共線的常見解法
        基于Sinc插值與相關(guān)譜的縱橫波速度比掃描方法
        三點共線向量式的巧妙應(yīng)用
        一種改進FFT多譜線插值諧波分析方法
        基于四項最低旁瓣Nuttall窗的插值FFT諧波分析
        突出實踐需求的GIS專業(yè)《計算機圖形學(xué)》課程優(yōu)化改革
        Blackman-Harris窗的插值FFT諧波分析與應(yīng)用
        第7屆國際圖象圖形學(xué)學(xué)術(shù)會議
        丝袜美腿一区二区三区| 粗一硬一长一进一爽一a视频| 中文字幕日本av网站| 女人的精水喷出来视频| 日本熟妇色xxxxx欧美老妇| 99精品热6080yy久久| 亚洲一区久久久狠婷婷| 一区二区三区高清在线观看视频| 国产日产综合| av无码小缝喷白浆在线观看 | 最新亚洲人成网站在线观看| 亚洲色大成网站www久久九| 乱伦一区二| 色老板在线免费观看视频日麻批| 桃红色精品国产亚洲av| av午夜久久蜜桃传媒软件| 亚洲偷自拍另类图片二区| 最新亚洲视频一区二区| 亚洲中文无码av永久| 久久精品国产第一区二区三区| 欧美乱人伦中文字幕在线不卡| 国产精品女丝袜白丝袜美腿| av无码电影一区二区三区| 国产成人精品成人a在线观看| 色yeye免费视频免费看| 日韩精品中文字幕免费人妻| 亚洲综合av大全色婷婷| 亚洲日韩精品无码专区网站| av网站免费线看| 中日韩字幕中文字幕一区| 亚洲天堂一区二区三区| 丰满少妇弄高潮了www| 一道久在线无码加勒比| 日本一区二区视频免费观看| 日本久久精品中文字幕| 女邻居的大乳中文字幕| 久久无码一一区| 亚洲不卡av二区三区四区| 成年站免费网站看v片在线| 国产不卡一区二区三区免费视 | 丝袜美腿诱惑一二三区|