1. 程式人生 > >【OpenCV3影象處理】仿射變換 透視變換

【OpenCV3影象處理】仿射變換 透視變換

影象處理的仿射變換和透視變換

仿射變換和透視變換更直觀的叫法可以叫做“平面變換”和“空間變換”。一個是二維座標(x,y),一個是三維座標(x,y,z)

仿射變換:二維平面的變換 ; 線性變換 ;已知3對座標點就可以求得變換矩陣

透視變換:三維空間的變換 ; 非線性變換 ;已知4對座標點可以求得變換矩陣

仿射變換(affine transformation)

仿射變換是空間直角座標系的變換,從一個二維座標變換到另一個二維座標,仿射變換是一個線性變換,他保持了影象的“平行性”和“平直性”,即影象中原來的直線和平行線,變換後仍然保持原來的直線和平行線,仿射變換比較常用的特殊變換有平移(Translation)、縮放(Scale)、翻轉(Flip)、旋轉(Rotation)和剪下(Shear)。
用公式可以表示為:

q⃗ =Ap⃗ +b⃗ 
其中,p為變換前原始向量,q為變換後目標向量,A為線性變換矩陣,b為平移變換向量。公式可統一寫成矩陣形式以方便計算:
[q⃗ 1]=[A0b⃗ 1][p⃗ 1]

在影象處理中,我們所謂的向量是二維座標(x,y),所以向量p、q可以如下表示:

q⃗ =[xy]p⃗ =[xy]
因此我們又能將上述矩陣改寫成:
xy1=a1a30a2a40b1b21xy1
其中
T=a1a30a2a40b1b21,A=[a1a3a2a4],b=[b1b2]
T矩陣只有6個引數,所以只要知道3個點對的對應座標,就可以求出T矩陣,也就得到A矩陣和b向量。

仿射變換也可以看成座標系的旋轉和縮放以及平移:

這裡寫圖片描述

P點位置不變,座標系由(Xt,Yt)變換到(Xs,Ys),相應的座標有(Xtp,Ytp)變換成(Xsp,Ysp)。

其中(Xtp,Ytp)與(Xsp,Ysp)的關係如下:
這裡寫圖片描述

OpenCV3中相應的函式:

estimateRigidTransform():計算多個二維點對或者影象之間的最優仿射變換矩陣 (2行x3列),H可以是部分自由度,比如各向一致的切變。
getAffineTransform():計算3個二維點對之間的仿射變換矩陣H(2行x3列),自由度為6.
warpAffine():對輸入影象進行仿射變換

透視變換(Perspective transformation)

透視變換(Perspective Transformation)是將圖片投影到一個新的視平面(Viewing Plane),也稱作投影對映(Projective Mapping)。通用的變換公式為:
這裡寫圖片描述
變換矩陣可以拆成4部分,表示線性變換,比如scaling,shearing和ratotion。用於平移,產生透視變換。所以可以理解成仿射等是透視變換的特殊形式。經過透視變換之後的圖片通常不是平行四邊形(除非對映視平面和原來平面平行的情況)。

OpenCV3中相應的函式:

findHomography: 計算多個二維點對之間的最優單對映變換矩陣 H(3行x3列) ,使用最小均方誤差或者RANSAC方法 。
getPerspectiveTransform():計算4個二維點對之間的透射變換矩陣 H(3行x3列)
warpPerspective(): 對輸入影象進行透射變換
perspectiveTransform():對二維或者三維向量進行透射變換,也就是對輸入二維座標點或者三維座標點進行投射變換。
estimateAffine3D:計算多個三維點對之間的最優三維仿射變換矩陣H (3行x4列)
transform():對輸入的N維向量進行變換,可用於進行仿射變換、影象色彩變換.
findFundamentalMat:計算多個點對之間的基矩陣H。

相關推薦

OpenCV3影象處理仿變換 透視變換

影象處理的仿射變換和透視變換 仿射變換和透視變換更直觀的叫法可以叫做“平面變換”和“空間變換”。一個是二維座標(x,y),一個是三維座標(x,y,z) 仿射變換:二維平面的變換 ; 線性變換 ;已知3對座標點就可以求得變換矩陣 透視變換:三維空間的變換

OpenCV3影象處理Mat類詳解 之 元素的獲取與賦值 ( 對比.at<>()函式 和 .ptr<>()函式)

Mat中畫素的獲取與賦值 計算機視覺中,影象的讀取是影象處理的基礎,影象就是一系列畫素值,OpenCV使用資料結構cv::Mat來儲存影象。cv::Mat是一個矩陣類,矩陣中每一個元素都代表一個畫素,對於灰度影象,畫素用8位無符號數,0表示黑色,255表示白色。對於彩色

OpenCV3影象處理RotatedRect類 詳解

RotatedRect是一個儲存旋轉矩形的類,通常用來儲存最小外包矩形函式minAreaRect( )和橢圓擬合函式fitEllipse( )返回的結果。儲存的值,完全取決在於函式的返回 cl

OpenCV3影象處理影象載入、顯示、儲存

一、影象載入 Mat cv::imread( const String & filename, int flags = IMREAD_COLOR ) 引數一:圖片所在的

OpenCV3影象處理繪圖功能總結(直線,矩形,圓,橢圓,多邊形,文字)

1、直線Line 函式原型: void cv::line ( InputOutputArray img, //影象 Point pt1,

OpenCV3影象處理查詢二值影象的邊緣 ( findContours()函式詳解 )

void cv::findContours ( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode

數字影象處理灰度變換函式(對數變換、反對數變換、冪次變換

// 對比度增強.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include <opencv2/opencv.hpp> #include <math.h> #include <iostream&g

OpenCV影象處理五、影象的幾何變換(下)

5.1 影象的縮放變換 影象的縮放指的是將影象的尺寸變小或變大的過程,也就是減少或增加原影象資料的畫素個數。簡單來說,就是通過增加或刪除畫素點來改變影象的尺寸。當影象縮小時,影象會變得更加清晰,當影象放大時,影象的質量會有所下降,因此需要進行插值處理。 在影象縮放中常常會用

RAW影象處理DxO PhotoLab for Mac破解版

DxO PhotoLab for Mac是一款專業的RAW影象處理軟體,可以讓使用者以最佳影象質量輕鬆生成RAW和JPEG影象,並且DxO PhotoLab Mac版還為使用者提供了一整套智慧輔助校正,讓您可以隨時手動進行微調,有需要的朋友快來看看吧! 下載地址DxO PhotoLab for

數字影象處理作業二 邊緣檢測與追蹤

作業二 邊緣檢測與追蹤 吳政億 151220129 [email protected] (南京大學 電腦科學與技術系, 南京 210093) 邊緣檢測 在邊緣檢測中,我使用了sobel,roberts,prewitt,marr作為運算元,對

數字影象處理作業一 直方圖均衡化

作業一 直方圖均衡化 吳政億 151220129 [email protected] (南京大學 電腦科學與技術系, 南京 210093) 實現細節 單通道直方圖均衡化

數字影象處理作業三 地理衛星雲圖處理

作業三 地理衛星雲圖處理 吳政億 151220129 [email protected] (南京大學 電腦科學與技術系, 南京 210093) 1 實驗要求 對衛星雲圖進行處理,保留經緯線,剝離大陸線邊界。允許應用所有matlab函式

數字影象處理opencv的安裝及vs2017環境的配置

1.安裝opencv 首先是安裝opencv,我是從官網下的,下載opencv,在官網下載最近的版本即可。 我是windows10系統,下載對應Windows的最新版。 下載後解壓就不說了,解壓後如下(每個版本可能解壓後不太一樣): 然後我們需要修改環境變

數字影象處理線性濾波、最大值濾波,最小值濾波、中值濾波、高頻補償濾波(vs2017+openCV)

一、實驗原理 1、線性濾波 ① 不管是低通線性濾波還是高通線性濾波原理都是一樣的,用圖一所示的濾波器模板進行加權處理,將最終得到的R值賦給w5對應的畫素。 ②低通線性濾波和高通線性濾波不同之處就在於: 低通線性濾波w1+w2+…+w9 = 1,且w1~w9全

數字影象處理Intensity Transformations and Histogram Equalization

實驗要求: 該實驗使用強度變換方法對影象進行增強。實驗影象為圖 3.8(a) (1.a) 用公式(3.2-2)所示的對數變換方法進行影象增強。 (1.b) 用公式(3.2-3)形式的指數變換方法進行影象增強。 實驗的目的是用(1.a)和(1.b)中的方法獲得最好的視覺化增

數字影象處理二維(2D)線性插值的應用

應用情況 在使用matlab對影象進行各種操作的時候經常要使用插值進行計算。 例如:影象縮放、影象旋轉、仿射變換等等。 線性插值 先介紹線性插值的概念。 已知兩個點(x1, y1)、(x2, y2),求它們中間橫座標為x的點的y值。 則可以利用如下公式進行插值

OpenCV影象處理十九、數學形態學方法(中)

1.擊中擊不中運算 擊中擊不中(hit or miss)定義在交集為空集的兩個結構元素的膨脹和腐蝕運算的基礎上。設B =(B1,B2)表示結構元素對,且B1 ∩ B2 = ∅ 則結構元素B對集合A的擊中積補種運算,記做  定義為: →運算過程為: (→當且僅當B1平移某一

數字影象處理七.MFC影象增強之影象普通平滑、高斯平滑、Laplacian、Sobel、Prewitt銳化詳解

        程式碼如下:void CImageProcessingView::OnTxzqPtph2() { if(numPicture==0) { AfxMessageBox("載入圖片後才能影象增強(平滑)!",MB_OK,0); return; } AfxMessageBox("影象

python影象處理影象的濾波(ImageFilter類詳解)

在影象處理中,經常需要對影象進行平滑、銳化、邊界增強等濾波處理。在使用PIL影象處理庫時,我們通過Image類中的成員函式filter()來呼叫濾波函式對影象進行濾波,而濾波函式則通過ImageFil

VC影象處理直方圖均衡化

/*img 為輸入原圖 outimg為輸出直方圖 probality為輸出的灰度直方概率,是陣列*/ void Histogram(Mat img,Mat &outImg,float *probality) { outImg.create(500,256,CV_8