1. 程式人生 > >Emgu 模板匹配函式MatchTemplate理解

Emgu 模板匹配函式MatchTemplate理解

簡介
最近做一個識別護照護照號碼OCR的專案,需要識別一張影象的護照號碼,每張圖片的號碼的位置有些變化,這樣就不好擷取護照號碼的影象,好在護照號碼的以“ED”開頭,長度,寬度固定.於是可以使用Emgu的模板匹配函式MatchTemplate來匹配字串“ED”,以確定護照號碼的開始位置,擷取圖片,然後使用Tesseract OCR來識別擷取的圖片中的護照號碼.

MatchTemplate介面:
void MatchTemplate(IInputArray image, IInputArray templ, IOutputArray result, TemplateMatchingType method, IInputArray mask = null);
引數解釋:
image-被匹配的影象矩陣(W*H)
templ-模板影象矩陣(w*h)
result-匹配結果矩陣((W-w)(H-h)):templ影象和image的卷積即temp在image影象上面從左到右,從上往下滑動,所以矩陣的大小是((W-w)

(H-h)),result矩陣存放的資料是每個位置的影象的匹配度.
method-影象的匹配度計算方法:
method=TemplateMatchingType.Sqdiff,使用平方差的方法計算匹配度,很顯然匹配度越高,平方差的和就越小,如果完全匹配,則平方差的和就為0,使用MinMaxLoc計算矩陣最大 最小值的時候,需要取最小值的位置座標.
這裡寫圖片描述

method=TemplateMatchingType.CcorrNormed,使用歸一化相關係數匹配法計算匹配度.這個公式使用使用餘弦相似度計算兩個影象矩陣的相似度.詳情參考(https://blog.csdn.net/u012160689/article/details/15341303

),所以,匹配度越高,相關係數就越大,如果完全匹配,則相關係數為1(0度夾角的餘弦值為1,完全相似),使用MinMaxLoc計算矩陣最大 最小值的時候,需要取最大值的位置座標.
這裡寫圖片描述
- 程式碼

        /// <summary>
        /// 獲取匹配影象的位置
        /// </summary>
        /// <param name="Src">被匹配的源影象</param>
        /// <param name="Template">模板影象</param>
        /// <returns>
匹配位置</returns>
Rectangle GetMatchPos(Mat Src,Mat Template) { Mat MatchResult = new Mat();//匹配結果 CvInvoke.MatchTemplate(Src, Template, MatchResult, Emgu.CV.CvEnum.TemplateMatchingType.CcorrNormed);//使用相關係數法匹配 Point max_loc = new Point(); Point min_loc = new Point(); double max = 0, min = 0; CvInvoke.MinMaxLoc(MatchResult, ref min, ref max, ref min_loc, ref max_loc);//獲得極值資訊 DisplayInfo("\r\nX:" + max_loc.X + " Y:" + max_loc.Y + " 最大相似度:" + max + " 最小相似度:" + min); return new Rectangle(max_loc,Template.Size); }

執行效果:
護照號碼

就這樣完成了一張圖片的護照號碼的擷取,但是有時由於翻頁的機構的問題,多翻了一頁,導致圖片裡邊沒有護照號碼,需要提示人工翻到資料頁,這時就需要使用最大相似度max判斷圖片是否包含護照號碼,經過多個樣本測試,相似度小於0.98就表示該圖片裡邊沒有護照號碼,翻頁機構出問題了.

相關推薦

Emgu 模板匹配函式MatchTemplate理解

簡介 最近做一個識別護照護照號碼OCR的專案,需要識別一張影象的護照號碼,每張圖片的號碼的位置有些變化,這樣就不好擷取護照號碼的影象,好在護照號碼的以“ED”開頭,長度,寬度固定.於是可以使用Emgu的模板匹配函式MatchTemplate來匹配字串

Atitti 模板匹配 List matchTemplate(

個人說明 提供相關技術諮詢,以及解決方案編制,編制相關標準化規範草案,軟體培訓與技術點體系建設,知識圖譜體系化,提供軟體行業顧問佈道,12年的軟體行業背景,歡迎有志於軟體行業的同仁們互相交流,群名稱:標準化規範工作組草案,群   號:518818717, 聯絡方式: [

OpenCV 模板匹配 cv::matchTemplate

轉:http://blog.sina.com.cn/s/blog_b0935ba90102wy93.html 今天使用到opencv的matchTemplate運算元,查詢資料,學習了一下。 對官方資料進行翻譯註釋,加深理解,詳情可見:matchTemplate英文資料。 模板匹配

OpenCV3之——模板匹配matchTemplate()

模板匹配是一項在一幅影象中尋找與另一幅模板影象最相似部分的技術。  #include <opencv2/opencv.hpp> #include <opencv2/features2d/features2d.hpp> #include <ios

OpenCV3——matchTemplate影象模板匹配

參考文章: 其他: 1,功能介紹 matchTemplate函式主要應用於,尋找一張圖片在另一張圖片中的位置。 先看一個實際測試示例,在一張普通圖片中找到其中的水印位置。下圖依次為水印template圖——圖1,測試圖—

使用Opencv中matchTemplate模板匹配方法跟蹤移動目標

模板匹配是一種在影象中定位目標的方法,通過把輸入影象在實際影象上逐畫素點滑動,計算特徵相似性,以此來判斷當前滑塊影象所在位置是目標影象的概率。 在Opencv中,模板匹配定義了6種相似性對比方式:     CV_TM_SQDIFF 平方差匹配法:計算影象畫素間的距離之和,最

【opencv學習之三十】簡單模板匹配matchTemplate

opencv實現了一部分通過模板與目標影象進行尋找最佳匹配的方面matchTemplat();這個方法網上有很多講解,基本思想是將模板影象在目標影象上滑動逐一對比,通過統計的基本方法進行匹配,比如方差檢驗,相關性檢驗等方法來尋找最佳匹配;話不多多說吧,從網上找到的一些實驗程式

opencv 模板匹配matchTemplate研究之一

 #include"opencv2\core\core.hpp" #include"opencv2\highgui\highgui.hpp" #include"opencv2\imgproc\imgproc.hpp" #include<iostream> using namespace std;

C++學習之建構函式理解--模板形式的建構函式不會遮掩編譯器生成的預設建構函式

我們都知道編譯器會為我們定義預設的空引數建構函式和複製建構函式,其實複製建構函式和一般的帶引數的建構函式的區別也就僅僅在與此(我認為),也就是在不顯示定義複製建構函式的時候,系統會為我們合成一個預設的複製建構函式。 1.定義一般的建構函式時,系統還是會為我們生成一個預設的複

使用Python+OpenCV進行圖像模板匹配(Match Template)

more 查看 AR 簡單 highlight 以及 face ims import 2017年9月22日 BY 藍鯨 LEAVE A COMMENT 本篇文章介紹使用Python和OpenCV對圖像進行模板匹配和識別。模板匹配是在圖像中尋找和識別模板的一種簡單的方法。

OpenCV——模板匹配

.com 分享圖片 pen alt open mage png inf enc OpenCV——模板匹配

函式模板函式模板例項化、函式模板過載

模板是泛型程式設計的基礎。所謂泛型程式設計就是編寫與型別無關的邏輯程式碼,是一種複用的方式。模板分為模板函式和模板類。 如果是交換兩個資料,我們會定義對應型別的函式,比如要交換int型別資料,我們會定義int型別swap函式,如果是交換double型別資料,會再定義double型別交換函式。

C++:舉例說明如何使用enable_if和模板函式指標引數

下面的這個例子主要實現如下功能:  當引數為資料型別時,呼叫std::to_string()方法將數值轉化為字串並輸出。  當引數為std::string型別時,直接使用std::string的值輸出。  當引數為物件時,如果物件中含有std::s

2018.9.14 關於對JS函式理解的總結

  今天是2018.9.14星期五,下午16:00整,今天是我們公司是雙休的,也就是說週末放假兩天!今天下午我的內心的是很浮躁的,看著螢幕裡面的程式碼,心卻早已飛向遠方。我知道這樣很不好,但是就是有那麼一段時間很煩躁的。真的希望我能改掉這個壞毛病。時間過得真快,轉眼間來到公司當實習生已經半

三十三、python學習之Flask框架(五)模板:WTF表單、CSRF跨站請求偽造、模板特有函式&變數

一、WTF表單: 1.web表單: Web 表單是 Web 應用程式的基本功能。預設開啟CSRF保護功能 它是HTML頁面中負責資料採集的部件。表單有三個部分組成:表單標籤、表單域、表單按鈕。表單允許使用者輸入資料,負責HTML頁面資料採集,通過表單將使用者輸入的資料提交給伺服器

一套基於模板匹配的語音識別技術。提取語音的特徵,並建立模板庫,可以將語音識別技術應用於機器人

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

第十天模板匹配,卷積基本概念

卷積具體介紹這篇文章是我看的最好的:https://blog.csdn.net/qq_39521554/article/details/79083864                    

影象處理--模板匹配

模板匹配   首先模板不是用來 精確定位的,只能用來粗定位。先粗定位,然後在你的當前圖中扣取 和模板一樣大小的區域,然後再進行精確定位。 問題1   對於有縮放和旋轉的目標你們是怎麼定位的呢?   輪廓;匹配;模板匹配 問題2   用ORB特徵匹配,怎麼確定匹配到的就是我

模板匹配-TPS

【1】matlab程式碼https://www.mathworks.com/matlabcentral/fileexchange/24315-warping-using-thin-plate-splines 【2】 url:https://blog.csdn.net/victoriaw/ar

c++中虛擬函式理解

虛擬函式的作用,事實上就是實現了多型性,就是實現以共同的方法,但因個體差異而採用不同的策略。下面有程式碼例項來描述: class A{ public: void print(){ cout<<”This is A”<<endl;} }; class B:publ