opencv 表格識別之表格透視矯正(二)

表格矯正(二)

上一篇文章中給出了一種對錶格進行矯正的方法,但是隻能用於只有一個表格的情況,對於有多個表格的情況的矯正的方法,將在這篇文章中給出。
單個表格矯正:opencv 表格識別之表格透視矯正(一)

一, 函數的介紹

(1)Homography(…)函數返回映射關係H(3*3的矩陣)

//! computes the best-fit perspective transformation mapping srcPoints to dstPoints.
CV_EXPORTS_W Mat findHomography( 
				InputArray srcPoints, 
				InputArray dstPoints,
                                 	int method=0, 
                                 	double ransacReprojThreshold=3,
                                 	OutputArray mask=noArray());

srcPoints,dstPoints是兩視圖中匹配的點
method 是計算單應矩陣所使用的方法,是一個枚舉值。
ransacReprojThreshold 是允許的最大反投影錯誤,只在使用RANSAC方法時有效。
mask指出匹配的點是不是離羣值,用來優化匹配結果。

在這裏,我們只用前兩個 參數,也就是待矯正的圖像的四個點,與模板圖像的四個點(這四個點我們取圖像中最大的表格的四個角,因爲最大的表格比較好找),找出這兩個點的映射關係,再通過warpPerspective(…)函數對待矯正的圖像進行H映射。

(2)warpPerspective(…)對圖像進行變換

void warpPerspective(InputArray src, 		 //輸入圖像
 OutputArray dst,					//輸出圖像 
 lnputArray M,						//透視變換矩陣
 Size dsize, 						//輸出圖像的大小
 int flags=INTER_LINEAR,				//輸出圖像的插值方法
 int borderMode=BORDER_CONSTANT, 	//邊界的處理方法
  const Scalar& borderValue=Scalar())	//邊界的顏色

透視變換矩陣就是H。

二,具體步驟

第一張是模板圖像,第二張是待矯正的圖像,我們要找出模板圖像的最大的表格,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章