《深入OpenCV Android應用開發(fā)》以在Android 平臺上開發(fā)OpenCV 應用為重點,詳細介紹了計算機視覺技術的理論及其在移動平臺的應用!渡钊隣penCV Android應用開發(fā)》由淺入深,囊括了從基本的開發(fā)環(huán)境部署,到基礎的圖像處理算法,再到目標檢測、人臉檢測、目標追蹤、圖像拼接等高級圖像分析技術,以及用于圖像分類的機器學習算法等各方面的知識。
《深入OpenCV Android應用開發(fā)》雖然篇幅不多,但內容十分豐富,從理論到實踐,從精辟的數(shù)學公式到翔實的源代碼,從系統(tǒng)的算法解釋到實用的編程技巧,完全能夠滿足讀者從入門到進階的求知需要!渡钊隣penCV Android應用開發(fā)》適合于有一定Java 和Android 開發(fā)基礎,并對計算機視覺技術感興趣的入門讀者,亦可作為從事Android 圖像編程的開發(fā)人員,以及熟悉OpenCV 開發(fā)并有意一試身手的編程愛好者的參考手冊。
掌握在Android平臺實現(xiàn)計算機視覺算法的藝術,開發(fā)穩(wěn)健、高效的應用!
◎理解如何利用OpenCV處理圖像
◎利用多種高水準的特征匹配算法在圖像和視頻中檢測特定目標,比如SIFT、SURF和ORB
◎執(zhí)行圖像變換,例如改變顏色、空間、縮放,以及應用高斯模糊等濾波器
◎用移動電話的攝像頭與現(xiàn)實世界交互
◎在OpenCV Android編程當中探索人臉檢測、目標檢測和圖像拼接
◎利用機器學習算法構建更智能的應用
◎學會調試程序,并理解數(shù)據(jù)的內部存儲方式,以便創(chuàng)造*優(yōu)的定制算法
前言
本書能立刻為你在Android 平臺上使用OpenCV 助一臂之力。書中既從概念上闡述了多種計算機視覺算法,也介紹了這些算法在Android 平臺上的實現(xiàn)。如果你希望在現(xiàn)有的或新開發(fā)的Android 應用中實現(xiàn)計算機視覺模塊,那么本書正是一份寶貴的資料。
本書內容安排
第1 章 為圖像添加效果。本章介紹在計算機視覺應用中廣泛使用的一些基礎的預處理算法。同時,本章也會說明如何將OpenCV 整合到現(xiàn)有項目中。
第2 章 檢測圖像的基本特征。本章講解圖像基本特征的檢測,比如邊緣、角點、直線和圓等。
第3 章 檢測目標。本章進一步探討特征檢測,即利用更復雜的算法來檢測和描述圖像的特征,以保證能與其他目標的特征唯一匹配。
第4 章 深入目標檢測:級聯(lián)分類器。本章講解對更具一般性目標的檢測,比如在圖像和視頻中檢測人臉或眼睛。
第5 章 追蹤視頻中的目標。本章介紹一種運動檢測器——光流法的概念,并利用Lucas-Kanade-Tomasi 追蹤器在視頻中追蹤目標。
第6 章 利用圖像對齊和拼接。本章介紹圖像對齊和圖像拼接的基本概念,并以此合成全景圖像。
第7 章 OpenCV 機器學習使應用煥發(fā)生機。本章講解如何在計算機視覺應用中利用機器學習。在這一章中,我們會了解一些常用的機器學習算法,以及它們在Android 上的應用。
第8 章 疑難解答和最佳實踐。本章列舉一些開發(fā)者在開發(fā)應用過程中容易遇到的錯誤和問題,同時也介紹一些提高應用效率的優(yōu)秀經驗。
第9 章 開發(fā)一個文檔掃描應用。本章利用在前面章節(jié)中介紹的一些算法構建一個完整的框架,使其無論以何種角度拍攝圖像都能掃描文檔。
閱讀本書需要什么
本書涉及的內容要求機器至少有1GB 的內存。目前,Windows、OS X 和Linux 操作系統(tǒng)都支持Android 開發(fā)。
本書的讀者對象
如果你是一位Java 與Android 開發(fā)者,并且希望通過學習OpenCV Android 應用編程的新特性來提升自己的能力,那么本書就是為你量身打造的!
約定
在本書中,你會發(fā)現(xiàn)不同的信息呈現(xiàn)不同的格式。這里我們舉例說明這些格式,并解釋它們的含義。
正文中的代碼、數(shù)據(jù)庫表名、文件夾名、文件名、文件擴展名、文件路徑、偽URL、用戶輸入和Twitter 句柄等都采用以下格式:
“創(chuàng)建一個名為Application.mk 的文件,并將以下代碼復制到該文件內。”代碼塊是這樣安排的:
。紆ser-permission android:name="android.permission.CAMERA"/>
<user-feature android:name="android.hardware.camera"
android:required="false"/>
。紆ser-feature android:name="android.hardware.camera.autofocus"
android:required="false"/>
<user-feature android:name="android.hardware.camera.front"
android:required="false"/>
。紆ser-feature android:name="android.hardware.camera.
front.autofocus" android:required="false"/>
新術語和重要詞匯以黑體顯示。
警告或重要的事項以這種方式表示。
提示和技巧像這樣表示。
下載本書的彩色圖片
我們另外提供了一個PDF 文件,該文件中包含了本書用到的截屏和圖表的彩色版本。彩色圖片有助于你更好地理解輸出結果所產生的變化。PDF 文件可以在這里下載:https://www.packtpub.com/sites/default/files/downloads/8204OS_ImageBundle.pdf。
下載示例代碼
你可以從http://www.broadview.com.cn 的“下載專區(qū)”,下載所有已購買的博文視點書籍的示例代碼文件1。
勘誤表
雖然我們已經盡力謹慎地確保內容的準確性,但錯誤仍然存在。如果你發(fā)現(xiàn)了書中的錯誤,包括正文和代碼中的錯誤,請告訴我們,我們會非常感激。這樣,你不僅幫助了其他讀者,也幫助我們改進后續(xù)的出版。如發(fā)現(xiàn)任何勘誤,可以在博文視點網站相應圖書的頁面提交勘誤信息。一旦你找到的錯誤被證實,你提交的信息就會被接受,我們的網站也會發(fā)布這些勘誤信息。你可以隨時瀏覽圖書頁面,查看已發(fā)布的勘誤信息。
Salil Kapur,Microsoft 軟件工程師,在位于彼拉尼(Pilani)的博拉理工學院(BirlaInstitute of Technology and Science)獲得計算機科學專業(yè)學士學位。
他對編程充滿熱情,并滿懷激情不斷嘗試新技術。他的興趣領域是計算機視覺、網絡和可擴展系統(tǒng)。他也是一位開源愛好者,對諸如SimpleCV、BinPy 和Krita 等庫都有所貢獻。
在工作之余,他把大部分時間都花在Quora 和Hacker News 上。他愛好籃球和極限飛盤。他的聯(lián)系方式是salilkapur93@gmail.com。
Nisarg Thakkar,軟件開發(fā)者,可以稱得上是技術狂熱者。他主要用C++和Java 編程,對Android 應用開發(fā)和基于OpenCV 的計算機視覺應用開發(fā)有著豐富的經驗。他對OpenCV項目也做出了貢獻,并且在閑暇之時參與其開發(fā)工作。他的興趣領域是立體視覺、虛擬現(xiàn)實,還有將Android 平臺用于非商業(yè)性項目,以幫助無法承擔傳統(tǒng)解決方案的開發(fā)者。
在大學期間,他曾是移動應用俱樂部的Subcoordinator,也是兩個創(chuàng)業(yè)項目的共同發(fā)起人。這兩個項目都是他與朋友們合作開發(fā)的,其一為賓館開發(fā)Android 應用,另一項目至今仍致力于為Android 平臺開發(fā)更優(yōu)秀的聯(lián)系人管理應用。
Nisarg Thakkar 目前就讀于彼拉尼的博拉理工學院K. K. Birla Goa 校區(qū),預計于2016年5 月獲得計算機科學專業(yè)榮譽工學學位。他的聯(lián)系方式是nisargtha@gmail.com。
岳翰,網名John Hany,現(xiàn)居成都,計算機圖形學研究者,技術博客博主。他對編程充滿熱情,總是很興奮地嘗試新技術。他的興趣領域是計算機視覺、網絡和可擴展系統(tǒng)。
目錄
1 為圖像添加效果 1
入門 1
部署OpenCV 2
在OpenCV中存儲圖像 4
OpenCV中的線性濾波器 5
均值模糊方法 7
高斯模糊方法 13
中值模糊方法 14
創(chuàng)建自定義核 16
形態(tài)學運算 17
閾值化 20
自適應閾值 21
小結 22
2 檢測圖像的基本特征 23
創(chuàng)建應用 23
邊緣和角點檢測 28
高斯差分技術 28
Canny邊緣檢測器 31
Sobel算子 33
Harris角點檢測 36
霍夫變換 37
霍夫直線 38
霍夫圓 40
輪廓 41
項目――檢測圖像中的數(shù)獨 43
小結 45
3 檢測目標 47
特征是什么? 47
尺度不變特征變換 49
理解SIFT的原理 49
OpenCV中的SIFT 58
匹配特征與檢測目標 60
暴力匹配器 61
基于FLANN的匹配器 61
匹配點 62
檢測目標 66
加速穩(wěn)健特征 66
SURF檢測器 67
SURF描述子 68
OpenCV中的SURF 70
ORB 71
oFAST:FAST關鍵點定向 72
rBRIEF:旋轉可知的BRIEF 73
OpenCV中的ORB 75
BRISK 75
尺度空間關鍵點檢測 76
關鍵點描述 77
OpenCV中的BRISK 79
FREAK 80
視網膜采樣模式 80
由粗到精的描述子 80
跳視搜索 81
方向 81
OpenCV中的FREAK 81
小結 82
4 深入目標檢測:級聯(lián)分類器 83
級聯(lián)分類器簡介 83
Haar級聯(lián)分類器 84
LBP級聯(lián)分類器 85
用級聯(lián)分類器檢測人臉 86
HOG描述子 94
項目――快樂相機 97
小結 98
5 追蹤視頻中的目標 99
光流法 99
Horn?Schunck方法 100
Lucas?Kanade方法 101
在Android上查看光流場 104
圖像金字塔 110
高斯金字塔 111
拉普拉斯金字塔 113
基本的二維變換 120
全局運動估計 121
Kanade-Lucas-Tomasi追蹤器 124
查看OpenCV中的KLT追蹤器 124
小結 126
6 利用圖像對齊和拼接 127
圖像拼接 127
特征檢測和匹配 128
圖像匹配 129
光束法平差 131
自動全景校直 132
增益補償 133
多頻段融合 134
用OpenCV進行圖像拼接 134
小結 145
7 OpenCV機器學習使應用煥發(fā)生機 147
光學字符辨識 147
k-最近鄰算法用于OCR 148
支持向量機用于OCR 158
求解數(shù)獨 160
識別數(shù)獨中的數(shù)字 160
小結 162
8 疑難解答和最佳實踐 163
錯誤排除 163
權限錯誤 163
用Logcat調試代碼 166
最佳實踐 167
在Android中操縱圖像 168
在多個Activity之間操縱數(shù)據(jù) 170
小結 172
9 開發(fā)一個文檔掃描應用 173
讓我們開始吧 174
算法 176
在Android上的實現(xiàn) 177
小結 188