Download presentation
Presentation is loading. Please wait.
1
人機介面 OpenCV簡介 授課教師 開課單位
2
OpenCV 簡介 範例 讀圖&高斯模糊 開啟攝影機 OpenCV 專案 影像差異 歷史移動影像 背景相減 人臉偵測
3
關於OpenCV OpenCV(開放原始碼之電腦視覺)主要是針對在及時計算機視覺庫的一種編程功能。 人機介面(HCI) 物體識別 切割辨識
人臉辨識 手勢辨識 移動偵測 動作認知 場景重構(Structure From Motion) 立體聲和多台攝影機校準及深度計算 移動機器人.
4
OpenCV現況 從英特爾1999年發展OpenCV以來,至今仍在持續更新中 目前最新的版本為3.0 alpha (Nov, 2014)
C, C++ Python 跨平台: Windows, xNIX, MacOS, iOS, Android, etc… 超過2500個函式 安裝與環境設定
5
OpenCV 歷史 動機起源於讓電腦視覺有更低的門檻,並充分利 用 Intel 處理器的運算效能 Timeline:
Gary Bradski, 2009 Gary Bradski (c) 2008
6
哪裡用到OpenCV? Google Maps, Google street view, Google Earth, Books
學術界和工業界研究 安全監控 安全系統 圖像檢索 影像搜尋 電影中的運動結構 機器人
7
應用範例:自動駕駛
8
OpenCV Overview: > 2500 functions Robot support 通用圖像函式 影像金字塔 生物特徵
opencv.willowgarage.com 通用圖像函式 影像金字塔 生物特徵 切割 攝影機校準 特徵擷取 轉換 工具和資料結構 追蹤 機器學習 偵測 辨認 Fitting 矩陣數學
9
OpenCV Structure CV MLL HighGUI CXCORE IPP Aux Image Processing and
Vision Algorithms MLL Statistical Classifiers and Clustering Tools HighGUI GUI, Image and Video I/O CXCORE basic structures and algorithms, XML support, drawing functions IPP Fast architecture-specific low-level functions Aux Experimental or less used routines Gary Bradski, 2009 9 9
10
範例
11
讀圖及高斯模糊
12
讀圖及高斯模糊(處理結果)
13
存取像素
14
結果
15
開啟攝影機
16
影像差異
17
介紹 連續影像相減(Temporal differencing)原理是利用再時間上連續的影像做一對一的像素相減
若是兩者差異為零,就表示此像素不屬於移動物件像素 反之,則此像素為移動物件像素。
18
簡介 由前後Frame相減,可以找出不相同的部位 但無法看出動作的方向
19
Frame Difference 程式碼
20
優點及缺點 優點: 缺點: 計算簡單快速 此法對於環境的改變適應性佳 但是偵測出的移動物件常常會發生內部破碎的情形
移動物件的形狀較不完整,對於後續的移動物件追蹤與辨識將無法提供完整的資訊
21
背景相減
22
介紹 純粹的影格差異雖然計算快,但是移動物體內部都破碎 使用背景相減,是先將要偵測的背景設為參考影像速度一樣快
但萬一背景改變,無法彈性調整 使用Mixture Background Modeling,將背景建立可適性模型,彈性變化背景 速度慢 但背景改變後,仍然可以使用
23
背景相減 無論第幾張影格,皆減去第一張是先建好的參考影格,不一樣的地方即是前景(動作) 相減時,究竟要相差多少才算動作
MOVEMENT_THRESHOLD – 30 改變看看有什麼不一樣 Please refer to our solution -- BackgroundSubtraction
25
混合高斯背景模型 利用背景應為穩定影像的特質 可用混和高斯分配來表示其分布 使用愈多高斯分佈愈貼近現實,但計算愈慢
若有一張新影像不在 現有的分布上,即為 前景,並更新現有分 布,維持可適性
26
混合高斯背景模型 // initialize MoG parameters int totalGaussian = 5; 想模擬的分布數量
int maxGaussian = 5; 找尋前景時,只找前maxGaussian個依weight大小排序後的分布 float stdDeviationInit = 6; 預設的標準差 float stdDeviationThreshold = 3.0; 判斷前景的標準(多少倍標準差之外) float weightThreshold = 0.25; 找尋前景時,只找weight高於此標準的分布 float alpha = 0.01; 背景學習率,愈大背景改變愈快,愈小愈有容忍度。
27
混合高斯背景模型 Please try our solution – GaussianBackgroundModel
目前totalGaussian, maxGaussian一定要一樣 嘗試實作將分布排序,然後可以設定只考慮依weight排序後的前maxGaussian個分布
28
動態歷史圖像
29
簡介 一般Frame Difference只能看到動作的區域還有其大小,不能看出趨勢與方向
若不只單純考慮前一張Frame,而是把多張Frame一起考慮,就可以記錄出移動的歷史軌跡
30
動態歷史圖像(Motion History Image, MHI)
31
動態歷史圖像函式
32
範例 Challenge -- 嘗試將gradient圖標記拿掉 請參照原始碼 motempl.c
Or our solution in MotionHistoryImage 一些變數 MHI_DURATION – 想要追蹤的時間長度(secs) N – 想要計算motion detection的Frame buffer長度(frames) Challenge -- 嘗試將gradient圖標記拿掉
33
人臉偵測
34
介紹 如何偵測具有特徵的物體,例如人臉?
35
挑戰 收集並標示數據是很重要的,但很花時間 如何取得的想要的特徵 如何分類 即使是巢狀或串級的分類 如何測試或檢驗 還好,我們有OpenCV
36
How to use Try our package – FaceDetection
FaceDetect.cmd Usage: facedetect [--cascade="<cascade_path>"] [--nested-cascade[="nested_cascade_path"]] [--scale[=<image scale> [filename|camera_index] FaceDetect.exe 執行辨識的程式
37
前景臉部偵測 Facedetect --cascade="./haarcascades/haarcascade_frontalface_alt.xml” --nested-cascade="./haarcascades/haarcascade_eye.xml” --scale=1.3 先找到在前面的臉 接者尋找眼睛 縮放標記
38
試試其他模組 haarcascade_eye.xml haarcascade_eye_tree_eyeglasses.xml
haarcascade_frontalface_alt.xml haarcascade_frontalface_alt2.xml haarcascade_frontalface_alt_tree.xml haarcascade_frontalface_default.xml haarcascade_fullbody.xml haarcascade_lefteye_2splits.xml haarcascade_lowerbody.xml haarcascade_mcs_eyepair_big.xml haarcascade_mcs_eyepair_small.xml haarcascade_mcs_lefteye.xml haarcascade_mcs_mouth.xml haarcascade_mcs_nose.xml haarcascade_mcs_righteye.xml haarcascade_mcs_upperbody.xml haarcascade_profileface.xml haarcascade_righteye_2splits.xml haarcascade_upperbody.xml
39
如何製作自己的XML 你必須收集與標示一些樣本… 接著training… 產生 xml 檔 接著測試…
Please refer to following link:
40
推薦的參考網站 Open Computer Vision Library (Sourceforge) OpenCV Wiki
OpenCV Wiki (Wikipedia) OpenCV中文網站 優質OpenCV教學網 Learning OpenCV: Computer Vision with the OpenCV Library (Paperback)
Similar presentations