天天看點

《Arduino計算機視覺程式設計》一導讀

《Arduino計算機視覺程式設計》一導讀

特别是對于現代機器而言,計算機視覺是環境感覺發展的下一個階段。許多現代裝置嘗試使用有限的資源來模仿人類的感覺能力。此外,大多數此類仿制品其實是存在不足的,因為通常情況下它們不能直接模拟人類的感覺能力,尤其是在視覺方面。

即使傳統傳感器的種類有很多,它們仍然無法表現出人類視覺系統的強大,這是人類最複雜的感覺功能之一。是以,我們需要一定的視覺資訊,使我們的電子系統更加智能化。這就是計算機視覺出現的原因。

相機可以被視為終極視覺傳感器,它非常接近于人類的視覺感覺系統。但是問題在于,如果使用相機作為視覺傳感器,那麼操作會非常複雜和困難。本書的目的是通過把一個複雜的問題劃分為基本的、可實作的子步驟進而讓計算機視覺的任務變得簡單。這種方法最好的地方在于我們能把實際生活中的應用也變得很容易!

當我們處理現實生活中的應用時,毫無疑問應該有一種方法來與現實生活進行互動。嵌入式系統正好用來表示這些實體互動。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章綜合前面所學的所有知識來設計和開發一個全功能一體化的機器人。該章還将介紹所提出的方法如何在問題獨立的情況下取得成功。

譯者序

作者簡介

前言

<a href="https://yq.aliyun.com/articles/89776">第1章 計算機視覺系統綜述</a>

<a href="https://yq.aliyun.com/articles/89776">1.1 計算機視覺系統介紹</a>

<a href="https://yq.aliyun.com/articles/89778">1.2 解決計算機視覺問題</a>

1.2.1 資料采集

1.2.2 預處理

1.2.3 圖像處理的特征提取 5

1.2.4 後處理和後置濾波

1.2.5 識别或檢測

1.2.6 在現實世界中行動

1.2.7 連接配接子子產品

<a href="https://yq.aliyun.com/articles/89779">1.3 總結</a>

<a href="https://yq.aliyun.com/articles/89781">第2章 opencv的基礎與安裝</a>

<a href="https://yq.aliyun.com/articles/89781">2.1 opencv的基礎</a>

<a href="https://yq.aliyun.com/articles/89801">2.2 opencv的安裝</a>

2.2.1 在linux上安裝opencv

2.2.2 在mac os上安裝opencv

2.2.3 在windows上安裝opencv

2.2.4 在ios上安裝opencv

2.2.5 在android上安裝opencv

<a href="https://yq.aliyun.com/articles/89803">2.3 總結</a>

<a href="https://yq.aliyun.com/articles/89828">第3章 用opencv和arduino進行資料采集</a>

<a href="https://yq.aliyun.com/articles/89828">3.1 圖像和視訊采集</a>

3.1.1 相機選擇

3.1.2 圖像采集

<a href="https://yq.aliyun.com/articles/89833">3.2 傳感器資料采集</a>

3.2.1 設定arduino環境

3.2.2 傳感器基礎

3.2.3 從溫度傳感器中讀取資料

<a href="https://yq.aliyun.com/articles/89835">3.3 總結</a>

第4章 用opencv進行資料過濾

4.1 開始過濾

4.2 空間域濾波

4.2.1 平滑

4.2.2 銳化

4.3 顔色空間轉換

4.3.1 灰階化

4.3.2 二值化

4.4 形态學濾波器

4.4.1 腐蝕和膨脹

4.4.2 開運算和閉運算

4.5 梯度和邊緣檢測

4.5.1 canny邊緣檢測器

4.5.2 log濾波器

4.5.3 sobel

4.6 自定義濾波器

4.7 直方圖均衡化

4.8 本章的實踐項目

4.9 總結

第5章 用opencv進行視覺資料處理

5.1 提取特征

5.1.1 使用基本的統計資訊

5.1.2 使用顔色特征

5.1.3 使用模闆進行特征比對

5.1.4 使用輪廓特征

5.1.5 使用凸包

5.1.6 使用矩

5.1.7 使用hough變換

5.1.8 使用角點

5.1.9 使用尺度不變特征變換

5.1.10 使用加速魯棒特征

5.1.11 使用orb

5.1.12 使用blob分析

5.2 總結

第6章 用opencv進行識别

6.1 建構一個可以思考的應用程式

6.1.1 模闆比對

6.1.2 特征比對

6.1.3 基于快速近似最近鄰搜尋庫的比對

6.1.4 使用級聯分類器

6.1.5 使用支援向量機

6.2 總結

第7章 用opencv與arduino進行通信

7.1 與arduino進行通信

7.1.1 有線通信

7.1.2 無線通信

7.2 用java進行通信

7.3 用c++進行通信

7.4 總結

第8章 将arduino用于真實世界

8.1 與電動機的連接配接

8.1.1 驅動直流電動機

8.1.2 驅動步進電動機

8.1.3 驅動伺服電動機

8.2 使用顯示器

8.2.1 使用液晶顯示器

8.2.2 使用薄膜半導體顯示器

8.3 總結

第9章 建造一個點選行走機器人

9.1 系統總覽

9.2 建造一個機器人

9.2.1 建構力學部分

9.2.2 建構電子電路部分

9.2.3 建構機器人控制器和通信系統

9.3 建構視覺應用程式

9.4 總結

繼續閱讀