【導讀】計算機視覺是一門對圖像中信息進行自動提取的學科。信息的內容相當廣泛,包括三維模型、照相機位置、目標檢測與識別,以及圖像內容的分組與搜索等。本書中,我們使用廣義的計算機視覺概念,包括圖像扭曲、降噪和增強現實等。計算機視覺有時試圖模擬人類視覺,有時使用數據和統計方法,而有時幾何是解決問題的關鍵。如果你想對計算機視覺的基本理論和算法有一個基本的了解,這個動手的介紹是理想的起點。您將學習對象識別、3D重建、立體成像、增強現實和其他計算機視覺應用程序的技術,并學習用Python編寫的示例。
前言
今天,圖像和視頻無處不在,在線照片分享網站和社交網絡上的圖像有數十億之多。幾乎對于任意可能的查詢圖像,搜索引擎都會給用戶返回檢索的圖像。實際上,幾乎所有手機和計算機都有內置的攝像頭,所以在人們的設備中,有幾 G 的圖像和視頻是一件很尋常的事。
計算機視覺就是用計算機編程,并設計算法來理解在這些圖像中有什么。計算機視覺的有力應用有圖像搜索、機器人導航、醫學圖像分析、照片管理等。
本書旨在為計算機視覺實戰提供一個簡單的切入點,讓學生、研究者和愛好者充分理解其基礎理論和算法。本書中的編程語言是 Python,Python 自帶了很多可以免費獲取的強大而便捷的圖像處理、數學計算和數據挖掘模塊,可以免費獲取。
寫作本書的時候,我遵循了以下原則。
鼓勵探究式學習,讓讀者在閱讀本書的時候,在計算機上跟著書中示例進行練習。
推廣和使用免費且開源的軟件,設立較低的學習門檻。顯然,我們選擇了 Python。
保持內容完整性和獨立性。本書沒有介紹計算機視覺的全部內容,而是完整呈現并解釋所有代碼。你應該能夠重現這些示例,并可以直接在它們之上構建其他應用。
內容追求廣泛而非詳細,且相對于理論更注重鼓舞和激勵。
總之,如果你對計算機視覺編程感興趣,希望它能給你帶來啟發。
各章概覽
第 1 章“基本的圖像操作和處理”介紹用來處理圖像的基本工具及本書用到的核心 Python 模塊,同時涵蓋了很多貫穿全書的基礎示例。
第 2 章“局部圖像描述子”講解檢測圖像興趣點的方法,以及怎樣使用它們在圖像間尋找相應點和區域。
第 3 章“圖像到圖像的映射”描述圖像間基本的變換及其計算方法。涵蓋從圖像扭曲到創建全景圖像的示例。
第 4 章“照相機模型與增強現實”介紹如何對照相機建模、生成從三維空間到圖像特征的圖像投影,并估計照相機視點。
第 5 章“多視圖幾何”講解如何對具有相同場景、多視圖幾何基本面的圖像進行處理,以及怎樣從圖像計算三維重建。
第 6 章“圖像聚類”介紹一些聚類方法,并展示如何基于相似性或內容對圖像進行分組和組織。
第 7 章“圖像搜索”展示如何建立有效的圖像檢索技術,以便能夠存儲圖像的表示,并基于圖像的視覺內容搜索圖像。
第 8 章“圖像內容分類”描述了圖像內容分類算法,以及怎樣使用它們識別圖像中的物體。
第 9 章“圖像分割”介紹了通過聚類、用戶交互或圖像模型,將圖像分割成有意義區域的不同技術。
第 10 章“OpenCV”展示怎樣使用常用的 OpenCV 計算機視覺庫 Python 接口,以及如何處理視頻及攝像頭的輸入。
前言
計算機是如何解決問題的?你的小GPS怎么能在無數可能的路線中找到最快的到達目的地的路線,而且只需要幾秒鐘?當你在網上購物時,如何保護你的信用卡號碼不被人截獲? 這些問題的答案,以及其他許多問題的答案,就是算法。我寫這本書是為了為你解開算法的奧秘。我與人合著了教科書《算法導論》。這是一本神奇的書(當然,我是有偏見的),但它在某些方面相當專業。這本書不是算法導論。甚至都不是教科書。它既不廣泛也不深入計算機算法領域,它沒有規定地教授設計計算機算法的技術,它包含為讀者解決一個問題或練習。那么這本書到底是什么呢? 這是一個你可以開始的地方,如果
一些關于計算機算法的書是概念性的,很少有技術細節。有些書充滿了技術上的精確性。有些介于兩者之間。每一種類型的書都有自己的位置。我會把這本書放在中間類別。是的,它有一些數學,而且在某些地方變得相當精確,但我避免深入討論細節(除了可能在書的最后,我無法控制自己)。 我覺得這本書有點像一道開胃菜。假設你去一家意大利餐館點了一份開胃菜,吃完再決定是否點剩下的菜。它來了,你吃了它。也許你不喜歡開胃菜,決定不點別的。也許你喜歡它,但是它讓你覺得很飽,所以你不需要點其他東西。也許你喜歡開胃菜,但它并沒有填飽你的肚子,你期待著這頓飯剩下的部分。把這本書當作開胃菜,我希望能得到后兩種結果中的一種: 要么你讀了這本書,感到滿意,覺得沒必要再深入研究算法的世界; 或者你非常喜歡你在這里讀到的東西,想要了解更多。每一章的結尾都有一個標題為“進一步閱讀”的章節,它將引導你閱讀深入主題的書籍和文章。
你能從這本書中學到什么?
我不能告訴你你將從這本書中學到什么。以下是我想讓你從這本書中學到的東西:
目錄
首先加速介紹R生態系統、編程語言和工具,包括R腳本和RStudio。通過使用許多例子和項目,這本書教你如何將數據導入R,以及如何使用R處理這些數據。一旦基礎扎實,《實用R 4》的其余部分將深入具體的項目和例子,從使用R和LimeSurvey運行和分析調查開始。接下來,您將使用R和MouselabWeb執行高級統計分析。然后,您將看到在沒有統計信息的情況下R如何工作,包括如何使用R自動化數據格式化、操作、報告和自定義函數。
本書的最后一部分討論了在服務器上使用R;您將使用R構建一個腳本,該腳本可以運行RStudio服務器并監視報表源的更改,以便在發生更改時向用戶發出警報。這個項目包括定期電子郵件提醒和推送通知。最后,您將使用R創建一個定制的個人最重要信息的每日綱要報告,例如天氣報告、每日日歷、待辦事項等等。這演示了如何自動化這樣一個過程,以便用戶每天早上導航到相同的web頁面并獲得更新的報告。
你將學到什么
這本書是給誰的
通過這個緊湊的實用指南,開始使用Python進行數據分析。這本書包括三個練習和一個用正確的格式從Python代碼中獲取數據的案例研究。使用Python學習數據分析還可以幫助您使用分析發現數據中的意義,并展示如何可視化數據。
每一節課都盡可能是獨立的,允許您根據需要插入和退出示例。如果您已經在使用Python進行數據分析,那么您會發現您希望知道如何使用Python來完成許多事情。然后,您可以將這些技術直接應用到您自己的項目中。
如果您不使用Python進行數據分析,那么本書從一開始就帶您了解基礎知識,為您在該主題中打下堅實的基礎。當你閱讀完這本書的時候,你會對如何使用Python進行數據分析有更好的理解。
你將學到什么
這本書是給誰的
想學習使用Python進行數據分析的同學。建議您具有Python方面的經驗,但不是必需的,因為您需要具有數據分析或數據科學方面的經驗。
有興趣的數據科學專業人士可以通過本書學習Scikit-Learn圖書館以及機器學習的基本知識。本書結合了Anaconda Python發行版和流行的Scikit-Learn庫,演示了廣泛的有監督和無監督機器學習算法。通過用Python編寫的清晰示例,您可以在家里自己的機器上試用和試驗機器學習的原理。
所有的應用數學和編程技能需要掌握的內容,在這本書中涵蓋。不需要深入的面向對象編程知識,因為工作和完整的例子被提供和解釋。必要時,編碼示例是深入和復雜的。它們也簡潔、準確、完整,補充了介紹的機器學習概念。使用示例有助于建立必要的技能,以理解和應用復雜的機器學習算法。
對于那些在機器學習方面追求職業生涯的人來說,Scikit-Learn機器學習應用手冊是一個很好的起點。學習這本書的學生將學習基本知識,這是勝任工作的先決條件。讀者將接觸到專門為數據科學專業人員設計的蟒蛇分布,并將在流行的Scikit-Learn庫中構建技能,該庫是Python世界中許多機器學習應用程序的基礎。
你將學習
這本書是給誰的
作為布爾邏輯的替代
雖然邏輯是理性推理的數學基礎和計算的基本原理,但它僅限于信息既完整又確定的問題。然而,許多現實世界的問題,從金融投資到電子郵件過濾,本質上是不完整或不確定的。概率論和貝葉斯計算共同提供了一個處理不完整和不確定數據的框架。
不完全和不確定數據的決策工具和方法
貝葉斯編程強調概率是布爾邏輯的替代選擇,它涵蓋了為真實世界的應用程序構建概率程序的新方法。本書由設計并實現了一個高效概率推理引擎來解釋貝葉斯程序的團隊編寫,書中提供了許多Python示例,這些示例也可以在一個補充網站上找到,該網站還提供了一個解釋器,允許讀者試驗這種新的編程方法。
原則和建模
只需要一個基本的數學基礎,本書的前兩部分提出了一種新的方法來建立主觀概率模型。作者介紹了貝葉斯編程的原理,并討論了概率建模的良好實踐。大量簡單的例子突出了貝葉斯建模在不同領域的應用。
形式主義和算法
第三部分綜合了已有的貝葉斯推理算法的工作,因為需要一個高效的貝葉斯推理引擎來自動化貝葉斯程序中的概率演算。對于想要了解貝葉斯編程的形式主義、主要的概率模型、貝葉斯推理的通用算法和學習問題的讀者,本文提供了許多參考書目。
常見問題
第四部分連同詞匯表包含了常見問題的答案。作者比較了貝葉斯規劃和可能性理論,討論了貝葉斯推理的計算復雜性,討論了不完全性的不可約性,討論了概率的主觀主義和客觀主義認識論。
貝葉斯計算機的第一步
創建一個完整的貝葉斯計算框架需要新的建模方法、新的推理算法、新的編程語言和新的硬件。本書著重于方法論和算法,描述了實現這一目標的第一步。它鼓勵讀者探索新興領域,例如仿生計算,并開發新的編程語言和硬件架構。
《算法精解:C語言描述》,機械工業出版社出版,外文書名:Mastering Algorithms with C。作者:(美)Kyle Loudon (作者),? 肖翔 (譯者),? 陳舸 (譯者) 。《算法精解:C語言描述》是數據結構和算法領域的經典之作,十余年來,暢銷不衰!全書共分為三部分:部分首先介紹了數據結構和算法的概念,以及使用它們的原因和意義,然后講解了數據結構和算法中最常用的技術——指針和遞歸,最后還介紹了算法的分析方法,旨在為讀者學習這本書打下堅實的基礎;第二部分對鏈表、棧、隊列、集合、哈希表、堆、圖等常用數據結構進行了深入闡述;第三部分對排序、搜索數值計算、數據壓縮、數據加密、圖算法、幾何算法等經典算法進行了精辟的分析和講解。
本書的眾多特色使得它在同類書中獨樹一幟:具體實現都采用正式的C語言代碼而不是偽代碼,在很多數據結構和算法的實現過程中,有大量細節問題是偽代碼不能解決的;每一章都有精心組織的主題和應用;全部示例來自真實的應用,不只是一般的練習;對每種數據結構、算法和示例都進行了詳細分析;每一章的末尾都會有一系列問題和對應的回答,旨在強調這一章的重要思想……
本書中的代碼尤為值得強調:所有實現都采用C語言編寫,所有代碼都優先用于教學目的,所有代碼都在4種平臺上經過完整測試,頭文件記錄了所有公共的接口,命名規則適用于全書所有的代碼,所有的代碼都包含大量注釋……
《O’Reilly精品圖書系列·算法精解:C語言描述》內容包括: · 數據結構和算法的概念,以及使用它們的原因和意義 · 指針和遞歸 · 算法分析 · 常用數據結構:鏈表、棧、隊列、集合、哈希表、樹、堆、優先級隊列以及圖 · 排序和搜索 · 數值計算 · 數據壓縮 · 數據加密 · 圖算法 · 幾何算法
數據結構和算法的更新、創新方法
這個權威的指南由其領域的專家組成的作者團隊編寫,它甚至解釋了最困難的數學概念,這樣您就可以清楚地理解c++中的數據結構和算法。
權威的作者團隊采用面向對象的設計范式,使用c++作為實現語言,同時還提供基本算法的直覺和分析。
在Python中獲得操作、處理、清理和處理數據集的完整說明。本實用指南的第二版針對Python 3.6進行了更新,其中包含了大量的實際案例研究,向您展示了如何有效地解決廣泛的數據分析問題。在這個過程中,您將學習最新版本的panda、NumPy、IPython和Jupyter。
本書由Python panda項目的創建者Wes McKinney編寫,是對Python中的數據科學工具的實用的、現代的介紹。對于剛接觸Python的分析人員和剛接觸數據科學和科學計算的Python程序員來說,它是理想的。數據文件和相關材料可以在GitHub上找到。
【導讀】 機器學習和圖像處理基礎實戰,可以使讀者深入了解圖像處理的基本知識以及各種圖像處理方法和算法,使用各種Python庫的應用程序以及使用機器學習方法的實時用例實現。
本書首先討論了不同操作系統的安裝環境,介紹了基本的圖像處理方法,它使用兩個庫Scikit Image和OpenCV深入研究各種圖像處理算法以及它們在Python中的實際實現。接下來,提出了用于圖像處理和分類的機器學習和深度學習方法。解釋了諸如Adaboost,XG Boost,卷積神經網絡等用于圖像特定應用的概念。并將所有概念均使用真實場景進行演示。
作者介紹: Santanu Pattanayak目前在GE Digital工作,是一名工作數據科學家,并且是《使用TensorFlow進行深度學習:Python中高級人工智能的數學方法》的作者。他擁有大約12年的工作經驗,在數據分析/數據科學領域有8年的經驗,并且具有開發和數據庫技術的背景。
內容大綱
內容簡介: chapter 1:
本章內容主要介紹了運行本書代碼中的環境設置,主要包括:
Anaconda
OpenCV
Keras
本書代碼大部分都以Anaconda為開發環境,分別介紹了windows系統、MacOS系統、Ubuntu系統的安裝方法。
chapter 2:
在本章中,我們將精確地介紹什么是圖像及其相關屬性。主要包括:
chapter 3:
本章的前半部分討論了Python的基本概念,這些概念對應用圖像處理技術很有用。 本章的后半部分介紹了Python的圖像處理庫:Scikit Learn。 在上一章中研究的所有概念以及其他一些概念都可以使用Scikit Learn在Python中應用。
chapter 4:
現在,我們已經了解了使用Scikit圖像庫的基本圖像處理技術,繼續介紹其更高級的方面。 在本章中,我們使用最全面的計算機視覺庫之一OpenCV,并研究以下概念:
我們通過研究一些最廣泛使用的圖像處理算法來開始本章的內容,然后繼續進行圖像處理中的機器學習實現。 本章概述如下:
使用比例不變特征變換(SIFT)算法的特征映射
使用隨機樣本共識(RANSAC)算法進行圖像配準
使用人工神經網絡進行圖像分類
使用卷積神經網絡(CNN)進行圖像分類
使用機器學習進行圖像分類