OpenCV中的透視變換介紹
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
本文轉(zhuǎn)自:opencv學(xué)堂
透視變換是將圖像從一個視平面投影到另外一個視平面的過程,所以透視變換也被稱為投影映射(Projection Mapping)。我們知道在圖像的仿射變換中需要變換矩陣是一個2x3的兩維平面變換矩陣,而透視變換本質(zhì)上空間立體三維變換,根據(jù)其次坐標(biāo)方差,要把三維坐標(biāo)投影到另外一個視平面,就需要一個完全不同的變換矩陣M,所以這個是透視變換跟OpenCV中幾何仿射變換最大的不同。
OpenCV中透視變換的又分為兩種:
- 密集透視變換
- 稀疏透視變換
我們經(jīng)常提到的對圖像的透視變換都是指密集透視變換,而稀疏透視變換在OpenCV的特征點(diǎn)匹配之后的特征對象區(qū)域標(biāo)識中經(jīng)常用到。一般情況下密集透視變換warpPerspective函數(shù)常與函數(shù)getPerspectiveTransform一起使用實(shí)現(xiàn)對圖像的透視校正。而稀疏透視變換perspectiveTransform經(jīng)常與findhomography一起使用。
warpPerspective - 實(shí)現(xiàn)圖像透視變換
-src
參數(shù)表示輸入圖像
-dst
參數(shù)表示輸出圖像
-M
參數(shù)表示透視變換矩陣(3x3)
-dsize
參數(shù)表示輸出圖像大小
-flags
參數(shù)表示插值方法,一般為線性或者最近鄰插值
-borderMode
參數(shù)表示對邊緣的處理方法,有默認(rèn)值
一般不用設(shè)。
-borderValue
參數(shù)表示邊緣的填充演示,默認(rèn)是黑色
getPerspectiveTransform - 獲取透視變換矩陣
-src
參數(shù)表示輸入透視變換前圖像四點(diǎn)坐標(biāo)
-dst
參數(shù)表示輸入透視變換后圖像四點(diǎn)坐標(biāo)
返回值類型Mat
該函數(shù)返回透視變換矩陣M大小為3x3
限于篇幅,我們這里只會演示圖像透視變換,至于稀疏透視變換相關(guān)API演示以后會單獨(dú)寫一篇文章介紹,運(yùn)行效果如下

左邊是原圖,右邊是透視校正之后的圖像。
相關(guān)代碼如下:

主要根據(jù)輸入的坐標(biāo)點(diǎn)獲取透視變換矩陣,然后利用透視變換矩陣實(shí)現(xiàn)圖像透視校正,這個在實(shí)際工作中非常有用!
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

