內容簡介
這本書將通過一種通用的、明確的、可應用的方法來結閤Arduino和計算機視覺的能力。書中的實踐和方法可用於任何相關的問題和平颱。本書想實現的終目標是讓你可以通過一種通用方法使用各種組件來解決現實生活中任意類型的視覺問題。
目錄
譯者序
作者簡介
前言
第1章 計算機視覺係統綜述 1
1.1 計算機視覺係統介紹 1
1.2 解決計算機視覺問題 2
1.2.1 數據采集 3
1.2.2 預處理 4
1.2.3 圖像處理的特徵提取 5
1.2.4 後處理和後置濾波 7
1.2.5 識彆或檢測 7
1.2.6 在現實世界中行動 8
1.2.7 連接子模塊 8
1.3 總結 10
第2章 OpenCV的基礎與安裝 11
2.1 OpenCV的基礎 11
2.2 OpenCV的安裝 12
2.2.1 在Linux上安裝OpenCV 12
2.2.2 在Mac OS上安裝OpenCV 17
2.2.3 在Windows上安裝OpenCV 18
2.2.4 在iOS上安裝OpenCV 20
2.2.5 在Android上安裝OpenCV 21
2.3 總結 24
第3章 用OpenCV和Arduino進行數據采集 25
3.1 圖像和視頻采集 25
3.1.1 相機選擇 25
3.1.2 圖像采集 29
3.2 傳感器數據采集 41
3.2.1 設置Arduino環境 41
3.2.2 傳感器基礎 42
3.2.3 從溫度傳感器中讀取數據 44
3.3 總結 47
第4章 用OpenCV進行數據過濾 48
4.1 開始過濾 48
4.2 空間域濾波 49
4.2.1 平滑 50
4.2.2 銳化 51
4.3 顔色空間轉換 51
4.3.1 灰度化 52
4.3.2 二值化 53
4.4 形態學濾波器 55
4.4.1 腐蝕和膨脹 55
4.4.2 開運算和閉運算 56
4.5 梯度和邊緣檢測 58
4.5.1 Canny邊緣檢測器 58
4.5.2 LoG濾波器 59
4.5.3 Sobel 61
4.6 自定義濾波器 63
4.7 直方圖均衡化 65
4.8 本章的實踐項目 66
4.9 總結 72
第5章 用OpenCV進行視覺數據處理 73
5.1 提取特徵 73
5.1.1 使用基本的統計信息 74
5.1.2 使用顔色特徵 78
5.1.3 使用模闆進行特徵匹配 78
5.1.4 使用輪廓特徵 79
5.1.5 使用凸包 80
5.1.6 使用矩 81
5.1.7 使用Hough變換 82
5.1.8 使用角點 83
5.1.9 使用尺度不變特徵變換 84
5.1.10 使用加速魯棒特徵 85
5.1.11 使用ORB 86
5.1.12 使用blob分析 86
5.2 總結 87
第6章 用OpenCV進行識彆 88
6.1 構建一個可以思考的應用程序 88
6.1.1 模闆匹配 89
6.1.2 特徵匹配 91
6.1.3 基於快速近似最近鄰搜索庫的匹配 94
6.1.4 使用級聯分類器 95
6.1.5 使用支持嚮量機 97
6.2 總結 98
第7章 用OpenCV與Arduino進行通信 100
7.1 與Arduino進行通信 100
7.1.1 有綫通信 102
7.1.2 無綫通信 111
7.2 用Java進行通信 115
7.3 用C++進行通信 120
7.4 總結 121
第8章 將Arduino用於真實世界 122
8.1 與電動機的連接 122
8.1.1 驅動直流電動機 123
8.1.2 驅動步進電動機 125
8.1.3 驅動伺服電動機 128
8.2 使用顯示器 130
8.2.1 使用液晶顯示器 131
8.2.2 使用薄膜晶體管顯示器 133
8.3 總結 137
第9章 建造一個點擊行走機器人 138
9.1 係統總覽 138
9.2 建造一個機器人 141
9.2.1 構建力學部分 142
9.2.2 構建電子電路部分 143
9.2.3 構建機器人控製器和通信係統 146
9.3 構建視覺應用程序 154
9.4 總結 163
前言/序言
特彆是對於現代機器而言,計算機視覺是環境感知發展的下一個階段。許多現代設備嘗試使用有限的資源來模仿人類的感知能力。此外,大多數此類仿製品其實是存在不足的,因為通常情況下它們不能直接模擬人類的感知能力,尤其是在視覺方麵。
即使傳統傳感器的種類有很多,它們仍然無法錶現齣人類視覺係統的強大,這是人類最復雜的感知功能之一。因此,我們需要一定的視覺信息,使我們的電子係統更加智能化。這就是計算機視覺齣現的原因。
相機可以被視為終極視覺傳感器,它非常接近於人類的視覺感知係統。但是問題在於,如果使用相機作為視覺傳感器,那麼操作會非常復雜和睏難。本書的目的是通過把一個復雜的問題劃分為基本的、可實現的子步驟從而讓計算機視覺的任務變得簡單。這種方法最好的地方在於我們能把實際生活中的應用也變得很容易!
當我們處理現實生活中的應用時,毫無疑問應該有一種方法來與現實生活進行交互。嵌入式係統正好用來錶示這些物理交互。Arduino是最流行的嵌入式係統平颱之一,它通過海量的社區支持和學習材料為原型開發提供瞭一種便捷的方法。同時Arduino的關鍵屬性也很棒,稍後將進行更詳細的討論,這些使得Arduino成為視覺係統與現實生活進行交互的最完美的候選。
Arduino在計算機視覺係統中扮演的角色是非常清楚的。在大多數情況下,視覺信息會與來自各種傳統的傳感器的數據相結閤,這些傳統的傳感器包括溫度傳感器、壓力傳感器和加速器等。此外,我們需要一個很好的工具來在視覺處理過程之後采取物理行動,比如驅動電動機和開燈。因此,Arduino在從環境中收集數據並采取行動的過程中非常有用,特彆是因為它有大量開發好的庫以及社區共享,使得原型開發非常迅速。
開源計算機視覺庫(OpenCV)是一個包含大量優化算法的優秀開源庫。OpenCV最重要的優勢之一是它可以支持多個平颱,它能夠在Windows、Linux、Mac OS甚至是Android和iOS平颱上工作。更重要的是它是一個成熟的庫,在寫作本書時最新版本為3.0(和2.4.11)。齣於這些原因,本書中所有的計算機視覺任務都將采用OpenCV來實現!
本書將通過一種通用的、明確的、可應用的方式來融閤Arduino和計算機視覺的能力。書中的實踐和方法可用於任何相關的問題和平颱。本書想實現的最終目標是讓你可以通過一種通用方法使用各種組件來解決現實生活中任意類型的視覺問題。
在每一章中,你將會找到有關主題在現實生活中實際應用的例子。為瞭學以緻用,我們會一步一步地建立一個視覺機器人。你會發現盡管問題的背景有很大的不同,解決問題的方法都是一樣的並且很簡單!
本書的主要內容第1章通過介紹一種對現實生活視覺問題有效的解決辦法來解釋設計模塊和體係。
第2章講述OpenCV庫的基本原理以及如何在不同的操作係統平颱安裝和測試OpenCV庫。
第3章通過實用的技巧和現實生活的例子來展示從環境中收集數據的有效方法。
第4章介紹OpenCV庫中的內置濾波器以及如何根據應用程序的上下文來選擇和實現這些濾波器。
第5章探索如何從視覺數據中提取有意義的信息以及如何讓這些提取齣來的數據為識彆係統做好準備。
第6章通過實踐的方式探索人工智能的方法,討論在一個給定場景中檢測和識彆物體的方法。
第7章揭示Arduino的通信能力以及在OpenCV的環境中連接Arduino的綜閤性最佳實踐。
第8章演示如何通過物理行為優雅地與現實世界進行交互。
第9章綜閤前麵所學的所有知識來設計和開發一個全功能一體化的機器人。該章還將介紹所提齣的方法如何在問題獨立的情況下取得成功。
閱讀本書前的準備本書的目的是教會你如何開發可以與現實生活進行交互且啓用瞭計算機視覺的係統。書中所有必需的軟件都是免費的。當然,根據需要,你也可以使用收費的軟件來開發應用程序。
計算機視覺應用程序是使用OpenCV開發的。Eclipse、Xcode、Visual Studio作為集成開發環境使用。應用程序的嵌入式係統部分通過使用Arduino Uno R3和Arduino的集成編輯器來開發。
有幾章中的應用程序需要用到電子元器件,比如傳感器或通信模塊。這些模塊都很便宜並且很容易找到。應用程序背後的思想是通用的,可以適用於各種相關領域。
本書的目標讀者本書主要麵嚮想要在項目中使用計算機視覺來創造更多智能係統的讀者。特彆是想學習如何使用Arduino進行計算機視覺編程的用戶和對此有興趣的愛好者。
機器人學是興趣電子學中最流行的領域之一。我們可以簡單地說隻要掌握瞭本書的內容,就完全有可能建立一個可以看到環境並進行推理的機器人。同一方案適用於消費類電子學和興趣電子學的所有其他領域。任何對這一方案感到興奮的人都是本書的目標讀者。
本書假設讀者熟悉Arduino的基本知識。對於計算機視覺編程方麵的知識則沒有什麼要求。
下載示例代碼和彩色圖片你可以從華章網站下載本書的示例代碼和彩色圖片。
The Translator’s Words 譯者序“忍耐很苦,堅持很難”,哪怕是做一件看上去毫不費勁的小事也是如此。在申請翻譯本書時,我滿以為一個月就能翻譯完,實際上卻用瞭整整半年時間。十幾年前,看張築生先生所著的《數學分析新講》,在後記裏麵看到“從編寫教學改革實驗講義到整理改寫成書,前後花費瞭五年最寶貴的時間”。那個時候年少輕狂,看完以後固然深深為作者的人品打動,卻以為寫書是件並不怎麼費勁的事情,果然是事不經過不知難,翻譯尚且如此,反復斟酌幾易其稿成書又該是怎麼一種心血的煎熬。
隨著係統智能化要求的提高,對計算機視覺的要求也越來越多,同時,計算機視覺處理完畢以後,需要有一個閤適的載體來做齣反應。本書正好就是同時在這兩點上著重論述,一方麵大刀闊斧地介紹瞭計算機視覺處理的全流程,並就流程的每一子步驟單獨成章介紹常見的方法。另一方麵注重實踐,帶領讀者從頭開始走完整個建造機器人的全程。正如作者所說,“隻要掌握瞭本書的內容,完全可能創建一個可以看到環境並進行推理的機器人”。並且每一章的介紹都為後續深入開發打下瞭良好的基礎。
本書的一個顯著優點是用很簡潔的語言帶領讀者縱覽全局,讓讀者對整個開發有一個全局的掌握,因而非常適閤入門。畢竟工作以後再來讀大部頭的書籍,除非真的是卓爾不群,否則往往半途而廢。
在此,我想感謝華章公司的編輯繆傑,沒有他的幫助、理解和支持,我很難堅持下來。
我還要特彆感謝我的爸爸媽媽——張乾光和孟淑華,你們多年來一直辛苦地為我遮風擋雨,給我支持和鼓勵,讓我有一個非常寬鬆快樂的成長環境,你們的善良和堅韌也一直深深地影響著我。你們辛苦瞭!大海的盡頭有另外一個世界,希望在以後的歲月裏能讓你們的生活更加美好!
最後,我要感謝的是我的愛人——崔嘉藝,感謝她對我的支持和信任,相守是最溫暖的承諾,我會讓她為她的選擇感到驕傲!
Arduino計算機視覺編程 下載 mobi epub pdf txt 電子書 格式