590 likes | 1.61k Views
人機介面 OpenCV 簡介. 授課教師 開課單位. OpenCV. 環境設定 與 Visual Studio 2010 C++ express 整合 電腦視覺資料庫 – OpenCV 更多簡單的範例 讀圖 & 高斯模糊 開啟攝影機 OpenCV 專案 影像差異 歷史移動影像 背景相減 人臉偵測. 關於 OpenCV. OpenCV ( 開放 原始碼之電腦視覺) 主要是針對在及時計算機視覺 庫的一種 編程 功能。 人機介面 (HCI) 物體識別 切割辨識 人臉辨識 手勢辨識 移動偵測 動作認知
E N D
人機介面OpenCV簡介 授課教師 開課單位
OpenCV • 環境設定 • 與Visual Studio 2010 C++ express整合 • 電腦視覺資料庫– OpenCV • 更多簡單的範例 • 讀圖&高斯模糊 • 開啟攝影機 • OpenCV專案 • 影像差異 • 歷史移動影像 • 背景相減 • 人臉偵測
關於OpenCV • OpenCV(開放原始碼之電腦視覺)主要是針對在及時計算機視覺庫的一種編程功能。 • 人機介面(HCI) • 物體識別 • 切割辨識 • 人臉辨識 • 手勢辨識 • 移動偵測 • 動作認知 • 場景重構(Structure From Motion) • 立體聲和多台攝影機校準及深度計算 • 移動機器人.
HI!OpenCV • 從英特爾1999年發展OpenCV以來,現正在積極發展中,目前正持續由Willow Garage支援. • 目前最新的版本為2.4.3(October, 2012) • 所有的原始碼是用C語言編寫,並支援以下語言: • C, C++ • Python • 跨平台: Windows, xNIX, MacOS etc… • 超過2500個函式
OpenCV 導讀 • 發展歷史 • 知名程式 • OpenCV總覽 • 參考資料
OpenCV歷史 • 動機起源於讓電腦視覺有更低的門檻,並充分利用 Intel 處理器的運算效能 • Timeline: Gary Bradski (c) 2008 Gary Bradski, 2009
哪裡用到OpenCV? • Google Maps, Google street view, Google Earth, Books • 學術界和工業界研究 • 安全監控 • 安全系統 • 圖像檢索 • 影像搜尋 • 電影中的運動結構 • 機器人
Robot support OpenCV Overview: > 2500 functions opencv.willowgarage.com 影像金字塔 通用圖像函式 生物特徵 攝影機校準 切割 特徵擷取 工具和資料結構 轉換 追蹤 機器學習 • 偵測辨認 Fitting 矩陣數學
OpenCV Structure CV 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 10
存取像素 http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html#SECTION00053000000000000000
介紹 • 連續影像相減(Temporal differencing)原理是利用再時間上連續的影像做一對一的像素相減 • 若是兩者差異為零,就表示此像素不屬於移動物件像素 • 反之,則此像素為移動物件像素。
簡介 • 由前後Frame相減,可以找出不相同的部位 • 但無法看出動作的方向
優點及缺點 • 優點: • 計算簡單快速 • 此法對於環境的改變適應性佳 • 缺點: • 但是偵測出的移動物件常常會發生內部破碎的情形 • 移動物件的形狀較不完整,對於後續的移動物件追蹤與辨識將無法提供完整的資訊
介紹 • 純粹的影格差異雖然計算快,但是移動物體內部都破碎 • 使用背景相減,是先將要偵測的背景設為參考影像速度一樣快 • 但萬一背景改變,無法彈性調整 • 使用Mixture Background Modeling,將背景建立可適性模型,彈性變化背景 • 速度慢 • 但背景改變後,仍然可以使用
背景相減 • 無論第幾張影格,皆減去第一張是先建好的參考影格,不一樣的地方即是前景(動作) • 相減時,究竟要相差多少才算動作 • MOVEMENT_THRESHOLD – 30 • 改變看看有什麼不一樣 • Please refer to our solution -- BackgroundSubtraction
混合高斯背景模型 • 利用背景應為穩定影像的特質 • 可用混和高斯分配來表示其分布 • 使用愈多高斯分佈愈貼近現實,但計算愈慢 • 若有一張新影像不在現有的分布上,即為前景,並更新現有分布,維持可適性
混合高斯背景模型 • // initialize MoG parameters inttotalGaussian = 5; 想模擬的分布數量 intmaxGaussian = 5; 找尋前景時,只找前maxGaussian個依weight大小排序後的分布 float stdDeviationInit = 6; 預設的標準差 float stdDeviationThreshold = 3.0; 判斷前景的標準(多少倍標準差之外) float weightThreshold = 0.25; 找尋前景時,只找weight高於此標準的分布 float alpha = 0.01; 背景學習率,愈大背景改變愈快,愈小愈有容忍度。
混合高斯背景模型 • Please try our solution – GaussianBackgroundModel • 目前totalGaussian, maxGaussian一定要一樣 • 嘗試實作將分布排序,然後可以設定只考慮依weight排序後的前maxGaussian個分布
簡介 • 一般Frame Difference只能看到動作的區域還有其大小,不能看出趨勢與方向 • 若不只單純考慮前一張Frame,而是把多張Frame一起考慮,就可以記錄出移動的歷史軌跡
範例 • 請參照原始碼 • motempl.c • Or our solution in MotionHistoryImage • 一些變數 • MHI_DURATION – 想要追蹤的時間長度(secs) • N – 想要計算motion detection的Frame buffer長度(frames) • Challenge -- 嘗試將gradient圖標記拿掉
介紹 • 如何偵測具有特徵的物體,例如人臉?
挑戰 • 收集並標示數據是很重要的,但很花時間 • 如何取得的想要的特徵 • 如何分類 • 即使是巢狀或串級的分類 • 如何測試或檢驗 • 還好,我們有openCV
How to use • Try our package – FaceDetection • FaceDetect.cmdUsage: facedetect [--cascade="<cascade_path>"] [--nested-cascade[="nested_cascade_path"]] [--scale[=<image scale> [filename|camera_index] • FaceDetect.exe執行辨識的程式
前景臉部偵測 • Facedetect--cascade="./haarcascades/haarcascade_frontalface_alt.xml”--nested-cascade="./haarcascades/haarcascade_eye.xml”--scale=1.3 • 先找到在前面的臉 • 接者尋找眼睛 • 縮放標記
試試其他模組 • 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
如何製作自己的Xml • 你必須收集一些樣品去檢測… • 接著校導… • 產生 xml 檔 • 接著測試… • Please refer to following link: • http://note.sonots.com/SciSoftware/haartraining.html
推薦的參考網站 • Open Computer Vision Library (Sourceforge) • http://sourceforge.net/projects/opencvlibrary/ • OpenCV Official Forum • http://tech.groups.yahoo.com/group/OpenCV/ • OpenCV Wiki • http://opencv.willowgarage.com/wiki/ (Willowgarage) • http://en.wikipedia.org/wiki/OpenCV(Wikipedia) • OpenCV中文網站 • http://www.opencv.org.cn/index.php/ • 優質OpenCV教學網 • http://yester-place.blogspot.com/ • Learning OpenCV: Computer Vision with the OpenCV Library (Paperback) • http://www.amazon.com/Learning-OpenCV-Computer-Vision-Library/dp/0596516134
參考 • http://vbie.eic.nctu.edu.tw/vol_2/skill_7.htm
參考 • http://vbie.eic.nctu.edu.tw/vol_2/skill_7.htm • http://vbie.eic.nctu.edu.tw/vol_13/tech1.htm
參考 • http://www.cse.ohio-state.edu/~jwdavis/CVL/Research/MHI/mhi.html • http://www.cse.ohio-state.edu/~jwdavis/CVL/Research/MHI/mhi.html
參考 • 特徵檢測專題 • http://www.opencv.org.cn/index.php/%E7%89%B9%E5%BE%81%E6%A3%80%E6%B5%8B%E4%B8%93%E9%A2%98