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

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

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

