OpenCv 模板匹配

2021-08-26 09:30:25 字數 2015 閱讀 7391

模板匹配是一項在一幅影象中尋找與另一幅模板影象最匹配(相似)部分的技術.

實現:

定義:標準化是將不同變化範圍的值對映到相同的固定範圍中,常見的是 [0,1],此時亦稱歸一化,也可以是[-1,1]範圍。

形式:

min_max標準化:

也稱為離差標準化,是對原始資料的線性變換,使結果值對映到[0 - 1]之間。轉換函式如下:

2.z-score標準化方法

這種方法給予原始資料的均值(mean)和標準差(standard deviation)進行資料的標準化。經過處理的資料符合標準正態分佈,即均值為0,標準差為1,轉化函式為:

作用:

1.無量綱化

例如房子數量和收入,從業務層知道這兩者的重要性一樣,所以把它們全部歸一化,這是從業務層面上作的處理。

2.避免數值問題

不同的資料在不同列資料的數量級相差過大的話,計算起來大數的變化會掩蓋掉小數的變化。

3.一些模型求解的需要

例如梯度下降法,如果不歸一化,當學習率較大時,求解過程會呈之字形下降。學習率較小,則會產生直角形路線,不管怎麼樣,都不會是好路線。

4.時間序列

進行log分析時,會將原本絕對化的時間序列歸一化到某個基準時刻,形成相對時間序列,方便排查。

5.收斂速度

加快求解過程中引數的收斂速度。

例子:

假設有兩個變數,都是均勻分布,x1範圍是[10000,20000],x2範圍是[1,2]。有很多處於同一直線上的點,我們稱這條直線為l。如果現在我們要做乙個分類的話,x2幾乎可以被忽略,x2很無辜的被乾掉了,僅僅因為所謂量綱的問題。即便x2不被乾掉,現在繼續求解,來做梯度下降。 很顯然,如果某一步我們求得的下降方向不在直線l上,幾乎可以肯定肯定這步不會下降。這就會導致不收斂,或者收斂很慢。

#include#includeusing namespace std;

using namespace cv;

mat src1,src2, dst;

int value = 0;

int max_value = 5;

void demo(int, void*);

int main()

namedwindow("src",cv_window_autosize);

namedwindow("output",cv_window_autosize);

createtrackbar("trackbar","output",&value,max_value,demo);

demo(0, 0);

//imshow("output", dst);

waitkey(0);

return 0;

}void demo(int, void*)

else

rectangle(dst,rect(loc.x,loc.y,src2.cols,src2.rows),scalar(0,0,255),2,line_aa);

rectangle(src1,rect(loc.x, loc.y, src2.cols, src2.rows), scalar(255, 255, 255), 2, line_aa);

imshow("output",dst);

imshow("src", src1);

}

OpenCV模板匹配

include include opencv2 opencv.hpp using namespace std using namespace cv int main int argc,char argv load reference image img imread argv 1 always ch...

opencv模板匹配

模板匹配是一種用於在源影象s中尋找定位給定目標影象t 即模板影象 的技術。其原理很簡單,就是通過一些相似度準則來衡量兩個影象塊之間的相似度similarity s,t 2.用途 模板匹配方法常用於一些平面影象處理中,例如印刷中的數字 工業零器件等小尺寸目標影象識別分類。3.方法 模板匹配中,源影象和...

模板匹配opencv

模板匹配,就是在一幅影象中尋找另一幅模板影象最匹配 也就是最相似 的部分的技術。說的有點抽象,下面給個例子說明就很明白了。在上面這幅全明星照中,我們想找出姚明頭像的位置,並把它標記出來,可以做到嗎?可以,這就是模板匹配的要做的事情。其實模板匹配實現的思想也是很簡單很暴力的,就是拿著模板 姚明頭像 在...