Vision-based User Interface Programming in Java一書簡介

1.概述
《Vision-based User Interface Programming in Java》這本書介紹瞭如何用java做攝像頭程序和遊戲,可以作爲一個計算機視覺的啓蒙讀物。
作者是泰國的Dr. Andrew Davison,這本書的在線瀏覽網址是
[url]http://fivedots.coe.psu.ac.th/~ad/vbi/index.html[/url]

不過計算機視覺對數學要求很高,裏面還有許多理論,要想完全喫透還是需要參考一些別的書籍和論文。

這本書依賴於OpenCV和JavaCV早期版本,所以要想運行書中的程序,請注意軟件的版本如下。

[url=http://opencv.org/]OpenCV[/url] 2.4.5
[url=https://code.google.com/p/javacv/]JavaCV[/url] 0.5

2. 各章簡單介紹

Chapter 1. What is a VBI?
VBI介紹,沒有網絡版本

Chapter 2. Webcam Snaps Using JavaCV
使用JavaCV實現攝像頭拍照

一上來簡單介紹了OpenCV,JavaCV
然後一個簡單的HelloWorld程序用JavaCV顯示一張圖片
最後實現攝像頭拍照

並且介紹了3個測試攝像頭的工具
[url=http://batchloaf.wordpress.com/commandcam/]CommandCam[/url]
[url=http://support.microsoft.com/kb/311272]DevCon[/url]
[url=http://www.ffmpeg.org/]FFmpeg[/url]

Chapter 3. Webcam Snaps Using VLC
使用[url=http://caprica.github.io/vlcj/]vlcj[/url]實現攝像頭拍照
首先一個簡單的程序介紹如何用vlcj播放各種格式的視頻
然後實現攝像頭拍照

Chapter VBI-3.5. Webcam Snaps Using JMF
使用JMF實現攝像頭拍照
JMF比較老了,所以參考參考就行。

Chapter 4. Motion Detection
解釋瞭如何用攝像頭來檢測場景的變化或移動。因爲這是視頻系統的基本需求,所以作者介紹了3種不同的方法來實現這個功能。
第一種方法,基於連貫的視頻幀的圖像差異比較
第二種方法,使用背景前景分割
第三種方法,光流法

Chapter VBI-4.5. A Motion-tracking Missile Launcher
一個程序實現了導彈發射器瞄準人的頭部,併發射導彈。當然這個導彈只是一個玩具。

Chapter 5. Blobs Drumming
擊鼓遊戲。需要使用顏色鮮豔的方形道具(塑料片)來觸碰鼓達到擊鼓的效果。屏幕被分爲9個鼓,當道具的中心點落入9個鼓中的一個時,PC的音箱會發出相應的鼓聲。本人用一本全天藍色封面的大詞典試驗成功。
首先介紹輪廓尋找技術,如何檢測出道具的輪廓。需要用到HSVSelector程序先將道具的顏色識別出來。

Chapter 6. Hand and Finger Detection
手掌與5根手指檢測
需要一副純色的手套作爲道具。
同樣首先需要用到HSVSelector程序先將道具的顏色識別出來。
這個程序在我的電腦上沒有試驗成功,手指的識別率比較低。

Chapter 7. Finger Tracking with TopCodes
手指追蹤。把TopCodes貼在手指上,達到鼠標的移動和點擊效果。
[url=http://users.eecs.northwestern.edu/~mhorn/topcodes/]TopCodes[/url]可以識別出多達99種圖案。

Chapter 8. Fingerprint Recognition
指紋識別
用到[url=http://sourceforge.net/projects/biometricsdk/]biometricsdk[/url]來建立指紋模板,作指紋比對。

Chapter 9. Face Detection and Tracking
人臉檢測與跟蹤
這個功能是OpenCV自帶的,用到哈爾算法來檢測人臉,用到人臉數據庫文件haarcascade_frontalface_alt.xml

Chapter 10. Face Recognition
人臉識別,這一章比上一章更進了一步,用特徵臉(eigenfaces)技術識別人臉,包含三個部分:
第一部分,Colt PCA
PCA(Principal Components Analysis)主成分分析,是一種分析、簡化數據集的技術。主成分分析經常用於減少數據集的維數,同時保持數據集中的對方差貢獻最大的特徵。這是通過保留低階主成分,忽略高階主成分做到的。這樣低階成分往往能夠保留住數據的最重要方面。
[url=http://acs.lbl.gov/software/colt/]colt[/url]是一組高性能的科學和數學計算的 Java 庫。不過有點老了。
作者用colt實現了一個簡單的PCA算法。
第二部分,JavaFaces2
重構了[url=http://code.google.com/p/javafaces/]javafaces[/url]代碼,爲特徵臉生成一個cache文件
第三部分,最後的成果,可以人臉識別了

Chapter 11. Eye Tracking
眼睛跟蹤
也是用哈爾算法來檢測眼睛,用到眼睛數據庫文件

Chapter 12. Facial Features Recognition
第一部分,用哈爾算法來檢測臉、眼睛、鼻子、嘴
第二部分,用[url=http://www.luxand.com/facesdk/]FaceSDK[/url]檢測臉部的66個座標
FaceSDK很強大,遺憾的是需要註冊才能試用,且有試用期限制。

Chapter 13. OCR and Sudoku
光學字符識別(Optical Character Recognition, OCR)是指對文本資料的圖像文件進行分析識別處理,獲取文字及版面信息的過程。
這章講了一個例子,識別數獨圖片,轉換成文字,並且將這個數獨解答出來。
[url=https://code.google.com/p/tesseract-ocr/]tesseract[/url]是一個老牌的文字識別組件,可能是最好的文字識別工具。
[url=http://tess4j.sourceforge.net/]tess4j[/url]是對tesseract的java封裝
[url=http://jocr.sourceforge.net/]gocr[/url]是簡單的文字識別,可以命令行調用

Chapter 14. QR Codes
這章講了如何把網址轉換成二維碼,以及反向操作。
QR碼(全稱爲快速響應矩陣碼;英語:Quick Response Code)是二維條碼的一種,於1994年由日本DENSO WAVE公司發明。
[url=https://github.com/zxing/zxing]zxing[/url] 不僅支持二維碼,還支持多種條形碼

Chapter 15. Augmented Reality with NyARToolkit
增強現實(Augmented Reality, AR), 是一種實時地計算攝影機影像的位置及角度並加上相應圖像的技術,目標是在屏幕上把虛擬世界套在現實世界並進行互動。
這種技術估計由1990年提出。隨着隨身電子產品運算能力的提升,預期增強現實的用途將會越來越廣。
首先可以在線觀賞2個例子(番羽土嗇)
[url=https://www.layar.com/]Layar[/url]
[url=http://www.wikitude.com/]Wikitude[/url]
然後介紹了[url=http://www.hitl.washington.edu/artoolkit/]ARToolKit[/url]以及[url=http://nyatla.jp/nyartoolkit/wp/?page_id=198]NyARToolkit[/url]
最後用這些類庫實現了一個demo,可以識別一張海報,並在海報上加上虛擬3D圖像。

Chapter 16. Depth Processing
這章首先講了3D電影的簡單原理,就是需要2個攝像頭來拍攝,左右各一個。這樣可以辨識出物體距離屏幕的距離。
然後分別用紅色和藍色過濾,配合3D紅藍眼鏡觀看,就成了3D電影了。
PLY是一種電腦檔案格式,全名爲多邊形檔案(Polygon File Format)或 史丹佛三角形檔案(Stanford Triangle Format)。
史丹佛大學的 The Digital Michelangelo Project計劃採用PLY格式儲存極高分辨率之米開朗基羅的作品"大衛"雕塑。
該格式主要用以儲存立體掃描結果的三維數值,透過多邊形片面的集合描述三維物體,與其他格式相較之下這是較爲簡單的方法。它可以儲存的資訊包含顏色、透明度、表面法向量、材質座標與資料可信度,並能對多邊形的正反兩面設定不同的屬性。
[url=http://meshlab.sourceforge.net/]MeshLab[/url]是立體網狀處理軟件。此軟件可管理面和處理大量的非結構化網格,並提供編輯、清理、修復及查覈等功能,可對模型進行渲染及轉檔。

Chapter 17. Networked Cameras
介紹了網絡攝像頭原理。簡單來說就是客戶端將圖像切成若干方塊,每次將和上次不一樣的圖片發到服務端即可。服務端可以理解成監控中心了,收集各個客戶端發來的信息然後還原圖像。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章