• 沒有找到結果。

模板匹配於景深測量方法

3-1 三角測量法

測量一個物體與物體之間距離最簡單的方法是,直接拿捲尺接觸 二個目標物進行測量。然而很多時候,如果目標物過於巨大或無法直 接接觸目標物進行測量等情況時,只能採用間接方法來進行測量,此 時三角測量法即派上用場。

三角測量法是利用己方已知的距離與觀測角度,畫一個或二個以 上的三角形,代入三角函數等相關公式來計算目標物與己方的距離。

舉凡天文學家對恆星距離的測量、軍方使用的光學測距機等,通通都 是應用三角測量法的典型例子。

圖 1 三角測量法 1

如圖 1 所示,假設有一座金字塔其高度為TH̅̅̅̅,設線段TH̅̅̅̅為 x 公 尺。測量者在在距離金字塔塔底中心(H 點)y 公尺處(B 點),拿望

遠鏡觀測塔頂得到仰角 45°,測量者往後面步行 100 公尺到達(C 點)

圖 2 三角測量法 2

圖 2 為傳統三角測量法,假設測量者想測量線段DC̅̅̅̅的長度𝑑,在 不與目標物 D 點直接碰觸的情況下,要求出距離𝑑需要知道三個已知 條件,分別是 A 點角度 α、B 點角度 β、AB̅̅̅̅線段長度𝑙。

其中𝑙線段又可以拆解為AC̅̅̅̅線段與CB̅̅̅̅線段。

𝑙 = 𝑑

tan𝛼+ 𝑑

tan𝛽 (5)

把 tan𝜃 = sin𝜃

cos𝜃 的公式代入(5)式並把𝑑提出來可求出(6)式

𝑙 = 𝑑 (cos𝛼

sin𝛼 +cos𝛽

sin𝛽) (6)

接著對(6)式通分可求出(7)式

𝑙 = 𝑑 (cos𝛼sin𝛽

sin𝛼sin𝛽 +cos𝛽sin𝛼

sin𝛼sin𝛽) (7)

對準標定的測量點,把前述的 α 角與 β 角求出來。但是使用雙鏡頭 攝影機時,由於攝影機是固定不動的,所以不能像一般三角測量法一 樣可以輕易求得 A 點與 B 點的角度,因此得改採其他適合雙攝影機鏡 頭的三角測量法來測量景深。

圖 3 雙鏡頭測量示意圖

如圖 3 所示,雙鏡頭的軸心距離為 B,鏡頭的焦距為 f,目標物 O 點投影到左鏡頭的像距為 𝑥𝐿,目標物 O 點投影到右鏡頭的像距為𝑥𝑅, 目標物 O 點與雙鏡頭的垂直距離 D 為物距(景深)。其中 M 是攝影機 鏡頭的平面,N 是攝影機的感光平面。感光平面是一種積體電路,由 電荷耦合感光元件(Charge Coupled Device,簡稱 CCD)組成,可以 把映照在感光平面上的影像即時轉換成一系列數位訊號。

根據之前圖 2 公式的推導,DC̅̅̅̅線段𝑑與跟其垂直的AB̅̅̅̅線段𝑙成正

3-3 模板匹配法

模板匹配法(template matching)是一種用於尋找影像裡面與模 板匹配度最高區域的演算法。首先先輸入一張大小(w, h)模板

(template)接著再輸入大小(W, H)的攝影機影像。模板匹配函數 會讓模板對影像由上到下由左到右,進行相關運算後生成大小(W-w+1, H-h+1)的結果圖(result)。電腦在進行匹配的動作時會根據模板匹 配方法,從結果圖當中尋找影像裡與模板最匹配區域的(x, y)座標,

以此把要尋找的目標物在影像中給定位出來。以下圖示分別為攝影機 影像(image)、模版圖(template image),以及結果圖(result image)。

圖 4 攝影機影像 圖 5 模板圖

圖 6 結果圖

首先在圖 4 裡面抓取一個範圍,生成圖 5 的模板圖(template image)。接著把圖4 與圖 5 放入 OpenCV 官方內建的 matchTemplate() 函數裡,生成圖6 的結果圖(result image)。

即可開始進行模板匹配的動作。接著再依據找到座標點,在原始影像 中畫一個舉行方框更新原始影像,如圖 7 所示。

OpenCV matchTemplate 函數原始宣告定義如下。

CV_EXPORTS_W void matchTemplate( InputArray image, InputArray templ, OutputArray result, int method );

OpenCV 官方提供 6 種方法來計算結果圖(result image)。在這 些公式當中,R、I、T 符號代表的意義如下:

R 代表結果圖(result image)

I 代表原始攝影機輸入影像(image)

T 代表模板圖(template image)

(1) CV_TM_SQDIFF (Sum of Squared Difference) 平方差匹配法。這個方法的最佳匹配值為 0。

R(𝑥, 𝑦) = ∑(T(𝑥, 𝑦) − I(𝑥 + 𝑥, 𝑦 + 𝑦))2

𝑥𝑦

(13)

(2) CV_TM_SQDIFF_NORMED

正規化平方差匹配法,這個方法是CV_TM_SQDIFF 方法的正規 化表示式。這個方法的最佳匹配值為0。

R(𝑥, 𝑦) = ∑𝑥𝑦(T(𝑥, 𝑦) − I(𝑥 + 𝑥, 𝑦 + 𝑦))2

√∑𝑥𝑦T(𝑥, 𝑦′)2∙ ∑𝑥𝑦I(𝑥 + 𝑥, 𝑦 + 𝑦)2

(14)

(3) CV_TM_CCORR(Cross Correlation)

相關匹配法。這個方法的最佳匹配值為最大值。但研究者實際跑 程式時,這個方法(CV_TM_CCORR)一直無法抓出正確的模板座標。

R(𝑥, 𝑦 −) = ∑(T(𝑥, 𝑦) ∙ I(𝑥 + 𝑥, 𝑦 + 𝑦))

𝑥𝑦

(15)

(4) CV_TM_CCORR_NORMED

正規化相關匹配法。這個方法是CV_TM_CCORR 方法的正規化 表示式。這個方法的最佳匹配值為最大值。

R(𝑥, 𝑦) = ∑𝑥𝑦(T(𝑥, 𝑦) ∙ I(𝑥 + 𝑥, 𝑦 + 𝑦))

√∑𝑥𝑦T(𝑥, 𝑦′)2∙ ∑𝑥𝑦I(𝑥 + 𝑥, 𝑦 + 𝑦)2

(16)

(5) CV_TM_CCOEFF

相關係數匹配法。這個方法的最佳匹配值為 1,最差匹配值為-1,

跟模板完全無關匹配值為 0。

R(𝑥, 𝑦) = ∑(T′(𝑥, 𝑦) ∙ I′(𝑥 + 𝑥, 𝑦 + 𝑦)) (17)

𝑥𝑦

(6) CV_TM_CCOEFF_NORMED

正規化相關係數匹配法。這個方法是 CV_TM_CCOEFF 方法的正規 化表示式。這個方法的最佳匹配值為 1,最差匹配值為-1,跟模板完

相關文件