1. 程式人生 > >基於KLT演算法的MATLAB人臉識別例項分析

基於KLT演算法的MATLAB人臉識別例項分析

找到需要識別的臉
faceDetector = vision.CascadeObjectDetector();

讀取一段錄影並從中獲取需識別的臉
videoFileReader = vision.VideoFileReader(‘tilted_face.avi’);
videoFrame = step(videoFileReader);
bbox = step(faceDetector, videoFrame);

在被檢測的臉周圍構建框架
videoFrame = insertShape(videoFrame, ‘Rectangle’, bbox);
figure; imshow(videoFrame); title(‘Detected face’);

將框架轉化為一系列的4個點,即使被識別的臉發生旋轉也能夠被看到
bboxPoints = bbox2points(bbox(1, :));
這裡寫圖片描述
在臉部區域識別特徵點
points = detectMinEigenFeatures(rgb2gray(videoFrame), ‘ROI’, bbox);
(指定被保留特徵值的最小值,一般為1 )

顯示特徵點
figure, imshow(videoFrame), hold on, title(‘Detected features’);
plot(points);
這裡寫圖片描述
建立一個點的蹤跡將錯誤進行雙向限制,以使它即使在噪聲存在時也能正常表示
pointTracker = vision.PointTracker(‘MaxBidirectionalError’, 2);

用初始化框架的點的位置初始化蹤跡
points = points.Location;
initialize(pointTracker, points, videoFrame);

初始化一個視訊播放器顯示結果
videoPlayer = vision.VideoPlayer(‘Position’,…
[100 100 [size(videoFrame, 2), size(videoFrame, 1)]+30]);

複製點用於之前的點和現在的框架之間進行幾何轉換
oldPoints = points;
while ~isDone(videoFileReader)

建立下一個框架
videoFrame = step(videoFileReader);

跟隨點的蹤跡,注意有幾個點可能會丟失
[points, isFound] = step(pointTracker, videoFrame);
visiblePoints = points(isFound, :);
oldInliers = oldPoints(isFound, :);
if size(visiblePoints, 1) >= 2 % need at least 2 points

在之前的點和新的點之間進行幾何轉換並建立邊界線
[xform, oldInliers, visiblePoints] = estimateGeometricTransform(…
oldInliers, visiblePoints, ‘similarity’, ‘MaxDistance’, 4);

執行邊界點的轉換
bboxPoints = transformPointsForward(xform, bboxPoints);

在被追隨的物體周圍插入邊界框
bboxPolygon = reshape(bboxPoints’, 1, []);
videoFrame = insertShape(videoFrame, ‘Polygon’, bboxPolygon, …
‘LineWidth’, 2);
(reshape表示重新調整矩陣的行數、列數、維數)

顯示被追隨的點
videoFrame = insertMarker(videoFrame, visiblePoints, ‘+’, …
‘Color’, ‘white’); (在影象或視訊中插入標記)

重置點
oldPoints = visiblePoints;
setPoints(pointTracker, oldPoints); (設定跟隨點,用於點需要重新檢測且很多點丟失在跟蹤過程中,可以使用此方法。)
end

用視訊播放器顯示被註釋的視訊框架
step(videoPlayer, videoFrame);
end

清空
release(videoFileReader);
release(videoPlayer);
release(pointTracker);
這裡寫圖片描述

相關推薦

基於KLT演算法MATLAB人臉識別例項分析

找到需要識別的臉 faceDetector = vision.CascadeObjectDetector(); 讀取一段錄影並從中獲取需識別的臉 videoFileReader = vision.VideoFileReader(‘tilted_

Linux系統下利用OpenCV實現人臉檢測和基於LBPH演算法人臉識別

        本文主要的目的是進行人臉檢測和人臉識別。實驗環境為Ubuntu16.04 LTS虛擬機器版,技術為OpenCV,語言為c++。其中人臉檢測的主要過程是從一張圖片中檢測出人臉可以是一個或者是多個,然後用矩形或者圓形線圈標註出來。人臉識別是基於LBPH演算法實現

利用Python實現基於PCA演算法人臉識別

        前面的文章中提到,利用opencv+python的組合可以方便的提取出影象中的人臉。當然,opencv自帶的提取演算法還是有很大缺陷的,不過並不妨礙我們的應用。接下來,利用python對已經獲許的人臉圖片進行訓練,從而可以識別出人臉。本文利用的PCA演算法,

基於協同表徵的人臉識別(CRC)演算法

1.標準的基於協同表徵的人臉識別(CRC)問題流程如下: (1)構建訓練樣本字典矩陣A和測試樣本y。假設訓練用的人臉庫中有a個人,每人b張人臉影象。對每張影象進行特徵提取。特徵提取的方法有:基於影象畫素點數值的方法,基於支援向量機的方法,基於子空間分析的方法,基於馬爾科夫鏈模型的方法,基於集合特

基於opencv2.0的haar演算法人臉識別為例的訓練分類器xml的方法

基於opencv2.0的haar演算法以人臉識別為例的訓練分類器xml的方法 基於opencv2.0的演算法 第一步 採集樣本        1、 將正負樣本分別放在兩個不同的資料夾下

用主成分分析(PCA)演算法人臉識別

詳細資料可以參考https://www.cnblogs.com/xingshansi/p/6445625.html一、概念主成分分析(PCA)是一種統計方法。通過正交變換將一組可能存在相關性的變數轉化為一組線性不相關的變數,轉換後的這組變數叫主成分。二、思想PCA的思想是將n

基於神經網路的人臉識別演算法的優缺點

優點:神經網路在人臉識別上的優勢就是在於可以通過學習,從而獲得對於人臉影象規則隱形的一種表達,避免進行復雜的特徵提取,有利於硬體的實現。 缺點:該演算法不易解釋,由於神經元的數目較多,運算時間較長,並

基於PCA和SVM人臉識別之二.MATLAB實現

此文章中MATLAB實現均根據《數字影象處理與機器視覺----Visual c++ 與MATLAB實現》一書,我所獲得的基礎知識也大多源於此書,感謝!                          下面將我根據教程建立的工程以及敲擊的程式碼塊一一奉上,供日後參閱。建立以專

基於opencv的haar演算法人臉識別為例的訓練分類器xml的方法

第一步 採集樣本 1、 將正負樣本分別放在兩個不同的資料夾下面        分別取名pos和neg,其中pos用來存放正樣本影象,neg用來存放負樣本    注意事項:1、正樣本要統一切成24*24畫素(或者其他)的格式,建議儲存成灰度圖,節省空間           

基於“視訊影象”的人臉識別演算法

視訊人臉識別遇到的困難和挑戰,具體來說有以下幾種:1、視訊影象質量比較差:視訊影象一般是在戶外(或室內,但是採集條件比較差)獲取的,通常沒有使用者的配合,所以視訊人臉影象經常會有很大的光照和姿態變化。另外還可能會有遮擋和偽裝。2、人臉影象比較小:同樣,由於採集條件比較差,視訊人臉影象一般會比基於靜態影象的人臉

基於百度AI人臉識別技術的Demo

-a import arr readfile red ets 2.0 路徑 之前 編寫demo之前首先瀏覽官方API:http://ai.baidu.com/docs#/Face-API/top 下面是源碼: package com.examsafety.test;

微信好友大揭秘,使用Python抓取朋友圈數據,通過人臉識別全面分析好友,一起看透你的“朋友圈”

類型 get ads pid 地圖 文本文 .json image pack 微信:一個提供即時通訊服務的應用程序,更是一種生活方式,超過數十億的使用者,越來越多的人選擇使用它來溝通交流。 不知從何時起,我們的生活離不開微信,每天睜開眼的第一件事就是打開微信,關註著朋友圈裏

基於Qt的OpenCV人臉識別(一)

        OpenCV對影象處理非常專業,具有很多模組。但是其GUI模組(即highgui),互動性非常差,就連按鈕也得用滑動條來實現。而Qt這個強大的c++圖形庫很好的避免了這個缺點,因此筆者基於Qt平臺,呼叫OpenCV庫,來進行OpenCV的人

基於Qt的OpenCV人臉識別(二)

經過上篇的qt環境配置,現在可以進行開發了。首先進行總體的介面設計,介面的控制元件選擇及介面如下: 單擊開啟攝像頭按鈕右鍵,轉到槽,OpenCV開啟攝像頭操作槽函式程式碼如下: //開啟攝像頭 void Widget::on_btn_open_clicked() { //開

微信好友大揭祕,使用Python抓取朋友圈資料,通過人臉識別全面分析好友,一起看透你的“朋友圈”

微信:一個提供即時通訊服務的應用程式,更是一種生活方式,超過數十億的使用者,越來越多的人選擇使用它來溝通交流。 不知從何時起,我們的生活離不開微信,每天睜開眼的第一件事就是開啟微信,關注著朋友圈裡好友的動態,而朋友圈中或虛或實的狀態更新,似乎都在證明自己的“有趣

用Python抓取朋友圈資料,通過人臉識別全面分析好友!看透朋友圈

微信:一個提供即時通訊服務的應用程式,更是一種生活方式,超過數十億的使用者,越來越多的人選擇使用它來溝通交流。 不知從何時起,我們的生活離不開微信,每天睜開眼的第一件事就是開啟微信,關注著朋友圈裡好友的動態,而朋友圈中或虛或實的狀態更新,似乎都在證明自己的“有趣”,尋找那份

基於深度學習的人臉識別技術綜述

簡介:人臉識別是計算機視覺研究領域的一個熱點,同時人臉識別的研究領域非常廣泛。因此,本技術綜述限定於:一,在LFW資料集上(Labeled Faces in the Wild)獲得優秀結果的方法; 二,是採用深度學習的方法。 前言 LFW資料集(Labeled Fa

加權歐氏距離KNN演算法實現人臉識別(Python實現)

前沿: 本實踐是純屬小白練手入門小專案,希望未來可以手動自己用神經網路來識別人臉。共勉,加油! 題目內容: 針對標準人臉樣本庫,選擇訓練和測試樣本,對基本的knn分類演算法設計智慧演算法進行改進,能夠對測試樣本識別出身份。 題目要求: 1) 選擇合適的編碼

基於深度學習的人臉識別AI技術謎與思(十四)--臉型識別

所有圖片源自網路,無意冒犯,如覺不適,通知後立即刪除。 本文在頭條號和百家號同步首發 前言 2017年12月25日,百度大腦人臉模組再一次升級,由原來的1.6.9.0升級為2.0.0.0,自此之後,我們的人臉識別就採用最新的版本了。大公司時刻充滿了焦慮感和

基於深度學習的人臉識別綜述

本文轉載自 https://xraft.github.io/2018/03/21/FaceRecognition/ (作者:Caleb Ge (葛政)),如有侵權請告知刪除。 (下文中的“我”均為原文作者) 另附有查詢的其他參考連結: 論文介紹方面連結: 1、https://