1. 程式人生 > >KLT(Kanade-Lucas-Tomasi Feature Tracker) 程式碼分析

KLT(Kanade-Lucas-Tomasi Feature Tracker) 程式碼分析

因為研究需要,仔細看了下程式碼,看看有什麼可以利用的地方。

整體來說Kanade-Lucas-Tomasi Feature Tracker的方法就是首先找去特徵點,之後用光流去跟蹤的方法。

上有原始碼,整個的流程跟Opencv差不多。

我們以官網上的原程式中的example1進行分析:(剩下的幾個例子整體流程都差不多,僅僅是目的不一樣)

首先都是建立兩個結構體:

tc就是跟蹤的中用到的一些引數在選特徵點的時候也有用到。

fl就是我們說到的特徵點了,包括了特徵值和特徵點在影象中的位置。

之後使用:

使用上面的函式選取特徵點

使用這個函式在img2中尋找對應的特徵點。

一次迴圈就可以實現跟蹤了。

那麼出現了一個問題:特徵點是怎麼定義的:

我們分析KLTSelectGoodFeatures這個函式:

函式中又使用了:


這個函式,函式中首先見了了一個pointlist的分量,並分配了記憶體空間:

為什麼要*3呢?其實pointlist中存放了影象中點的位置x,y和特徵值的大小val。

特徵值是什麼呢?這個特徵就是對應畫素點的梯度值。

程式碼中的特徵值取得時每個畫素點臨域梯度值的加權值。

之後程式來到了函式:

這裡通過比較每個畫素點val和對應閾值的大小來提取特徵點:

min_eigenvalue就是所使用的閾值,在tc中定義

那麼程式的修改,我們需要根據自己的特徵對這個閾值進行修改,同時對featurelist進行如上的修改,其實主要還是x,y,val三個值的修改。

不對的地方請大家指正。

相關推薦

KLT(Kanade-Lucas-Tomasi Feature Tracker) 程式碼分析

因為研究需要,仔細看了下程式碼,看看有什麼可以利用的地方。 整體來說Kanade-Lucas-Tomasi Feature Tracker的方法就是首先找去特徵點,之後用光流去跟蹤的方法。 上有原始碼,整個的流程跟Opencv差不多。 我們以官網上的原程式中的examp

Kanade-Lucas-Tomasi Feature Tracker 程式碼分析

因為研究需要,仔細看了下程式碼,看看有什麼可以利用的地方。 整體來說Kanade-Lucas-Tomasi Feature Tracker的方法就是首先找去特徵點,之後用光流去跟蹤的方法。 上有原始碼,整個的流程跟Opencv差不多。 我們以官網上的原程式中的exampl

KLT跟蹤演算法(Kanade-Lucas-Tomasi Tracking Method)

1.光流 光流的概念是Gibson在1950年首先提出來的。它是空間運動物體在觀察成像平面上的畫素運動的瞬時速度,是利用影象序列中畫素在時間域上的變化以及相鄰幀之間的相關性來找到上一幀跟當前幀之間存在的對應關係,從而計算出相鄰幀之間物體的運動資訊的一種方法。一

光流(四)--Kanade-Lucas-Tomasi(KLT)目標跟蹤

原文: http://www.cnblogs.com/moondark/archive/2012/05/12/2497391.html 近來在研究跟蹤,跟蹤的方法其實有很多,如粒子濾波(pf)、meanshift跟蹤,以及KLT跟蹤或叫Lucas光流法,這些方法各自有各自的

clk子系統 - 程式碼分析

通過clk驅動框架可以看出,clk主要分core和hardware兩層,而core層的主要函式是clk_register,它是把clk註冊到系統中,而hardware層的註冊函式因種類而異,不過最終都會統一呼叫clk_register來註冊,本文只拿gate來舉例;另外本文介紹下

2018/11/03-棧、x86架構和暫存器-《惡意程式碼分析實戰》

  棧用於函式的記憶體、區域性變數、流控制結構等被儲存在棧中。棧是一種用壓和彈操作來刻畫的資料結構,向棧中壓入一些東西,然後再把他們彈出來。它是一種先入後出(LIFO)的結構。   x86架構有對棧的內建支援。用於這種支援的暫存器包括ESP和EBP。其中,ESP是棧指標,包含了指向棧頂的記憶體地址。一些東西

2018/10/03-字串指令(重複指令、操作資料緩衝區指令)、rep與movx指令-《惡意程式碼分析實戰》

  重複指令是一組操作資料緩衝區的指令。資料緩衝區通常是一個位元組陣列的形式,也可以是單字或者雙字。(Intel'稱這些指令為字串指令)   最常見的資料緩衝區操作指令是movsx、cmps、stosx和scasx,其中x可以是b、w後者d,分別表示位元組、字和雙字。這些指令對任何形式的資料都有效。   

2018/10/03-函式呼叫約定、cdecl、stdcall、fastcall- 《惡意程式碼分析實戰》

  cdecl是最常用的約定之一,引數是從右到左按序被壓入棧,當函式完成時由呼叫者清理棧,並且將返回值儲存在EAX中。   stdcall約定是被呼叫函式負責清理棧,其他和cdecl非常類似。   fastcall呼叫約定跨編譯器時變化最多,但是它總體上在所有情況下的工作方式都是相似的。在fastcall

SQL注入的過濾程式碼分析

SQL注入:在使用者的輸入沒有為轉義字元過濾時,就會發生這樣這種形式的注入式攻擊。所以在在有SQL查詢語句的網頁中對字元的過濾時很重要的。 在沒有任何過濾時,是很危險的,使用者可以在提交的資料中,插入自己想要插入攻擊程式碼。 mysql_real_escape_strin

《惡意程式碼分析實戰》--第三章:動態基礎分析

一、虛擬網路環境配置 配置環境:伺服器端kali2.0 客戶端win7 1、配置inetsim kali自帶inetsim,因此只需配置就可以了(但是好像不配置也是可以的……) 配置連結:http://www.cnblogs.com/hyq20135317/p/5515675.h

《惡意程式碼分析實戰》--第一章:靜態分析基礎技術

**請參考大神的連結:https://blog.csdn.net/baidu_41108490/article/details/80298973#commentBox Lab1-1 這裡我只是記錄我的學習過程** 2、用PEtools開啟,檢視日期 .exe .dll

QEMU 程式碼分析:BIOS 的載入過程

DW原文連結 QEMU 是一個廣泛使用的開源計算機模擬器和虛擬機器,它提供了虛擬機器硬體的虛擬化功能,其使用的某些特定硬體的韌體則由一些開源專案提供。本文將介紹 QEMU 程式碼中使用到的 BIOS,通過分析 QEMU 程式碼,講解 BIOS 是如何載入到虛擬機器的實體記憶體。  

LwIP例項程式碼分析

//開發環境IAR int APP_Main(void) { #if C_USE_MCU_STM32F4xx  /* Ethernet configuration --------------------------------------*/ Ethernet_Initial(); w

Ceilometer Compute Agent 原理和程式碼分析

本部落格所有文章採用的授權方式為 自由轉載-非商用-非衍生-保持署名 ,轉載請務必註明出處,謝謝。 宣告: 本部落格歡迎轉發,但請註明出處,保留原作者資訊 部落格地址:孟阿龍的部落格 所有內容為本人學習、研究、總結。如有雷同,實屬榮幸 注: 本文以Opens

2018/11/06-異常-《惡意程式碼分析實戰》

  異常機制允許一個程式在普通執行流之外處理事件。多數時間裡,異常是由錯誤引起的,諸如除零錯誤。當一個異常發生時,執行轉移到處理這個異常的特殊例程。有些異常,比如除零異常,是由硬體丟擲的;其他的,比如無效記憶體訪問,是由作業系統丟擲的。你也可以在程式碼中使用RaiseException呼叫,顯示地丟擲一個異常

FreeRTOS程式碼分析之:全域性連結串列

注:有序插入:則根據xItemValue值從小到大(MAX:0xFF),排序插入        無序插入:按照插入的時間先後順序,從第一個節點到最後一個節點(vListEnd),依次插入 有序插入的執行時間較長,先後順序即代表了執行的順序,如CurrentTimer

2018/11/08-偵錯程式-《惡意程式碼分析實戰》

  偵錯程式是用來檢測或測試其他程式執行的以來軟體或硬體。由於剛完成的程式包含錯誤,因此偵錯程式在軟體開發過程中可以大顯身手。偵錯程式讓你能夠洞察程式在執行過程中做了什麼。偵錯程式的目的是允許開發者監控程式的內部狀態和執行。   從偵錯程式獲得程式的資訊可能比較困難,但並不意味著不可能,可以從反彙編器中獲得

RocksDB Persistent Read Cache部分程式碼分析

【github Wiki搜尋Persistent Read cache詳細描述】 第二種優勢:直接拿走不影響使用   設計時不考慮針對某種裝置 三個主要部分: Block Lookup Index:maps a given LSM block address to a cac

PVS-Studio C/C++/C++11 靜態程式碼分析工具

  靜態程式碼分析儀是一種檢測程式碼缺陷、分析對比 商業程式碼的工具,它分析原始碼和它生成的目標 檔案,但並不實際執行原始碼。應用於對安全性、 穩定性要求很高的領域,比如航天、國防、工業 控制、金融等就需要嚴格的程式碼分析工具。PVS-Studio 能發現程式碼中一些潛

優達學城-神經網路之預測共享單車使用情況 程式碼分析

優達學城-神經網路之預測共享單車使用情況 程式碼分析 標籤(): 機器學習 程式碼來自於優達學城深度學習納米學位課程的第一個專案 https://cn.udacity.com/course/deep-learning-nanodegree-foundation–nd101