圖像處理--圖像模板匹配NCC算法-->Fast NCC算法的解讀

目錄

前言

一、基礎知識

二、NCC基本公式以及解決問題

1. NCC基本公式

2. 基本公式解讀

三、簡化分母 fuv

1. 要簡化的分母

2. 積分圖

3. 分母拆開化簡

四、簡化分子

1. 要簡化的分子

2. 模板函數的近似

3. 基函數簡單解釋

五、Fast NCC歸一化互相關值

1. 最終公式

2. 復雜性對比

3. 論文中的舉例:

總結


前言

最近在看一篇關于模板匹配的論文,里面的使用模板匹配的算法是改進版的NCC,即Fast NCC,看網上沒有關于Fast NCC的解說,就想著記錄一下自己學習的過程,寫一下自己對這個改進算法的解釋,論文的全稱是《Template Matching using Fast Normalized Cross Correlation》,有感興趣的可以自己去了解一下。(因為有的內容不好打字,下面我會用手寫圖片)

一、基礎知識

從最簡單的初高中知識開始:均值、標準差、方差、協方差、相關系數

二、NCC基本公式以及解決問題

1. NCC基本公式

本文討論的問題是確定給定模式在二維圖像中的位置。設?f(x,y) 表示圖像在點 (x,y) 處的強度值,圖像大小為 Mx × My,其中 x∈{0,…,Mx -1},y∈{0,…,My -1}。模式由給定的模板 t 表示,模板大小為 Nx? × Ny?。計算模板匹配程度高低就是在點 (x,y) 處計算歸一化互相關值,即NCC系數,系數值越高說明越匹配,有系數基本公式:與 “一、基礎知識” 中的相關系數 r 同理

如果圖像越匹配,則圖像和模板越趨向于線性關系(一次函數):

其中

2. 基本公式解讀

三、簡化分母 fuv

1. 要簡化的分母

由上面我們可知:

即模板所在圖像位置,那一塊模板區域圖像的均值,我們可以知道,移動一次模板就需要計算一次模板所在區域圖像的均值,計算時間需要很久,于是就提出了用積分表快速計算 fuv。(因為模板部分方差容易計算就先不管,這里主要是簡化計算圖像部分的方差)

2. 積分圖

(作圖有點粗糙看得懂就行)

推廣到區域積分:

就有了以下公式,只需要三次相加減就可以算出模板區域內的圖像強度均值:

3. 分母拆開化簡

NCC的分母可以拆開變成:

其中:

解釋一下其中的參數:

但是不要忘記還有:

化簡一下:

最后可得:

分母簡化完畢!!!只靠積分表就實現了計算

四、簡化分子

1. 要簡化的分子

分子原式:

可以寫成分子N(u,v)

其中:t'(x-u,y-v) 為

由于 t′ 的均值為零,因此其總和也為零,故有:

所以分子N(u,v)只剩下:

2. 模板函數的近似

展開成K個矩形基函數的加權和,得到近似值,詳細為:

?為加權系數,為基函數。

3. 基函數簡單解釋

基函數在這里可以暫且理解為在一些區域等于1,其他區域都為0,所以可以化簡:

舉個例子,下圖就是在6 <= x <=?14 ^ 8 <=?y <=?12區域為1,其他區域為0的基函數

所以分子N(u,v)可以近似為:

論文中寫了確定基函數有兩種方法,第一種是手動確定,第二種是自動確定。

與上面的分母同理,這里也可以運用積分表:

也成功化簡了分子!!!只需要三次相加減就可以求得分子

五、Fast NCC歸一化互相關值

1. 最終公式

簡化完分子和分母之后,可以得到NCC歸一化的近似值:

最終式子即為:

完成了NCC算法的加速。

2. 復雜性對比

復雜性分析:

舉例說明,可以得出Fast NCC的算法復雜性最低

3. 論文中的舉例:

幾個圖的說明:

(a) 原始圖像? ? ? ? ? (b) 經過Fast NCC算法的交叉相關矩陣(u,v)

(c) 原始模板圖像? ? (d) 原始模板圖像曲面圖

(e) 基函數處理過后的模板圖像? ? ? (f) 處理過后的模板圖像曲面圖


總結

這篇文章對Fast NCC進行了一個解讀,介紹了如何簡化分母和分子,并求得近似值進行加速計算,最后得到了最終Fast NCC的算法公式,其復雜度遠低于直接計算以及FFT,但是其中的基函數還有待考究,后續學習會繼續補充。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93349.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93349.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93349.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

短劇小程序系統開發:賦能創作者,推動短劇藝術創新發展

短劇作為一種新興的藝術形式&#xff0c;具有獨特的魅力和發展潛力。然而&#xff0c;在傳統的發展模式下&#xff0c;短劇創作者面臨著諸多限制和挑戰。短劇小程序系統的開發&#xff0c;為創作者提供了強大的賦能&#xff0c;推動了短劇藝術的創新發展。創作工具豐富&#xf…

Redis知識點+項目+面試八股

基礎篇&#xff1a;講解Redis常用數據結構實戰篇&#xff1a;黑馬點評實戰高級篇&#xff1a;Redis高級知識點原理篇&#xff1a;Redis原理面試篇&#xff1a;Redis八股??第一章&#xff1a;基礎篇??1. Redis介紹Redis是一個key-value的數據庫&#xff0c;key一般是String類…

WPS文字和Word文檔如何選擇多個不連續的行、段

要選擇Word或WPS文字中不連續的多行、多段&#xff0c;使用鼠標加鍵盤即可快速搞定。Word和WPS文字中選擇多行的操作一樣&#xff0c;選擇多段的方法略有不同。選中以后&#xff0c;可以對這些內容進行刪除、復制、剪切、查找、替換、設置格式等操作。一、在Word和WPS文字中選擇…

嵌入式C/C++面試大全

基礎語法 1.在main執?之前和之后執?的代碼可能是什么&#xff1f; main函數執?之前&#xff0c;主要就是初始化系統相關資源&#xff1a; 設置棧指針&#xff0c;其中棧存放的局部變量、函數參數、函數調用的返回地址初始化靜態 static 變量和 global 全局變量&#xff0c;即…

Java應用架構實戰指南:主流模式解析與Spring落地實踐

在Java開發的世界里,選對應用架構不是紙上談兵,而是項目成敗的關鍵。 今天,我想和大家聊聊四種主流架構模式——分層、微服務、事件驅動和六邊形架構。這些模式在實戰中各有千秋,我會結合代碼示例和架構圖,帶大家看清它們的內核。無論你是新手還是老手,這篇文章都能幫你…

重學JS-002 --- JavaScript算法與數據結構(二)JavaScript 基礎知識

文章目錄加入jsjs 的位置控制臺變量關鍵字DOMbutton注釋CSS轉義函數參數對象屬性屬性訪問數組Math加入js 首先創建一個 script 元素。 此元素用于將 JavaScript 加載到 HTML 文件中。 <script src"./script.js"></script>js 的位置 script 標簽位于 HTML…

計算機視覺--opencv(代碼詳細教程)(二)

一、圖片的邊界填充在 OpenCV 中&#xff0c;cv2.copyMakeBorder()是用于給圖像添加邊框&#xff08;邊緣&#xff09;的核心 API&#xff0c;其完整語法和參數說明如下&#xff1a;函數完整定義cv2.copyMakeBorder(src, top, bottom, left, right, borderType, valueNone)參數…

FPGA實現Aurora 64B66B視頻點對點傳輸,基于GTX高速收發器,提供4套工程源碼和技術支持

目錄 1、前言Aurora 64B66B是啥&#xff1f;官方有Example&#xff0c;為何要用你這個&#xff1f;工程概述免責聲明 2、相關方案推薦我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目我這里已有的 GT 高速接口解決方案本方案在Aurora 8B10B上的應用 3、工程詳細設…

【軟件安裝|1】CentOS7最新可用國內 yum 鏡像源配置和Linux版MySQL8.0安裝及其相關知識

文章目錄一.更換yum鏡像源二.安裝并配置MySQL8.0安裝配置相關知識什么是yum&#xff1f;什么是鏡像源&#xff1f;相關知識請看最后&#xff0c;首先來更換yum鏡像源 更換前需要準備好VmwareWorkstation和Finalshell&#xff0c;開啟虛擬機&#xff0c;切換到root用戶 Vmware和…

【深度學習】深度學習的四個核心步驟:從房價預測看機器學習本質

文章目錄基礎概念與原理第一步&#xff1a;準備數據 - 構建學習的基礎數據生成與特征工程&#xff08;選擇對預測有用的特征&#xff09;數據集劃分的重要性第二步&#xff1a;設計模型 - 建立數學表達線性回歸模型的數學表達損失函數的設計哲學第三步&#xff1a;訓練優化 - 自…

Java使用Apache POI讀取Excel文件

一、下載jar包 Apache POI有提供下載地址&#xff1a;Apache Archive Distribution Directory&#xff0c;直接打開鏈接并選擇所需的版本下載即可(雙擊last modified可按最新更新時間排序)&#xff0c;本文章以poi-bin-4.1.1-20191023.zip為例&#xff0c;進入官網下載鏈接后&…

VLMs開發——基于Qwen2.5-VL 實現視覺語言模型在目標檢測中的層級結構與實現方法

概述 目標檢測作為計算機視覺領域的核心任務&#xff0c;傳統方法依賴于 YOLO 等視覺模型對預定義類別進行位置預測。然而&#xff0c;此類方法受限于預訓練類別體系&#xff0c;難以實現靈活的視覺交互。視覺語言模型&#xff08;Vision-Language Models, VLMs&#xff09;的…

Spring Boot + Redis + 布隆過濾器防止緩存穿透

? 項目概述 在高并發系統中&#xff0c;緩存穿透 是一個經典問題&#xff1a;當惡意請求或業務邏輯查詢一個數據庫中不存在的 Key&#xff0c;由于緩存中也沒有&#xff0c;請求會直接打到數據庫&#xff0c;導致數據庫壓力激增&#xff0c;甚至宕機。 本項目使用 Spring Bo…

電子電路學習日記

這里的 K 表示 千歐&#xff08;kilo-ohm&#xff09;&#xff0c;而 F 在很多國產 EDA 軟件&#xff08;比如立創EDA、Altium 的一些中文封裝庫&#xff09;里用來標注精度&#xff08;公差&#xff09;&#xff0c; F 代表 1% 精度&#xff08;英文 Fine tolerance&#xff0…

oracle 怎么實現讀一致性

? Oracle 數據塊讀一致性判斷流程&#xff08;正確版&#xff09; 假設&#xff1a;Query SCN 查詢開始的 SCN&#xff08;Query SCN&#xff09; lastSubbmit SCN 行中最新的提交scn Row SCN 行最后修改的 SCN&#xff08;存儲在行頭&#xff0c;通過 ITL 推導&#xff09…

ISTA為什么要加上軟閾值激活函數?r若沒有L1 正則化也要加其他激活函數嗎?

一、加上軟閾值函數&#xff08;Soft-thresholding&#xff09;是因為 LISTA&#xff08;以及它的前身 ISTA&#xff09;本質上是在求解一個 帶 L1 正則化的稀疏優化問題&#xff1a; min?x12∥y?Ax∥22λ∥x∥1 \min_x \frac{1}{2} \|y - Ax\|_2^2 \lambda \|x\|_1 xmin?2…

線程P4 | 線程安全問題及解決方法

何為線程安全&#xff1f;要談及何為線程安全&#xff0c;總得說來&#xff0c;我們可以用一句話來概況&#xff1a;如果在多線程環境下代碼運行結果和我們預期是相符的&#xff0c;即和單線程環境下的運行結果相同&#xff0c;那么我們就稱這個程序是線程安全的&#xff0c;反…

水印消失術!JavaAI深度學習去水印技術深度剖析

一、飛算JavaAI平臺概述1.1 飛算JavaAI定位與技術特色 飛算JavaAI是國內領先的智能化Java開發平臺&#xff0c;通過AI技術賦能軟件開發全流程&#xff0c;特別針對小程序、Web應用等輕量級開發場景提供*零基礎編程→高質量交**的一站式解決方案。其核心優勢體現在&#xff1a; …

醋酸釓:醫學影像與科技創新中的重要角色

醋酸釓是一種由釓元素和醋酸根離子組成的化合物。釓是稀土金屬之一&#xff0c;常常用于醫學影像、核磁共振成像&#xff08;MRI&#xff09;以及某些工業應用。醋酸釓作為釓的鹽之一&#xff0c;具有許多獨特的性質&#xff0c;尤其在醫學和科學研究領域表現突出。一、醋酸釓的…

插入排序專欄

插入排序&#xff08;Insertion Sort&#xff09;是一種簡單直觀的排序算法&#xff0c;其思想源于我們日常生活中整理撲克牌的方式。本文將詳細解析插入排序的工作原理&#xff0c;通過 Java 實現代碼進行分析&#xff0c;深入探討其時間復雜度的計算過程&#xff0c;并闡述其…