發表於2024-11-22
計算機視覺是在圖像處理的基礎上發展起來的新興學科。OpenCV是一個開源的計算機視覺庫,是英特爾公司資助的兩大圖像處理利器之一。它為圖像處理、模式識彆、三維重建、物體跟蹤、機器學習和綫性代數提供瞭各種各樣的算法。
本書由OpenCV發起人所寫,站在一綫開發人員的角度用通俗易懂的語言解釋瞭OpenCV的緣起和計算機視覺基礎結構,演示瞭如何用OpenCV和現有的自由代碼為各種各樣的機器進行編程,這些都有助於讀者迅速入門並漸入佳境,興趣盎然地深入探索計算機視覺領域。
本書可作為信息處理、計算機、機器人、人工智能、遙感圖像處理、認知神經科學等有關專業的高年級學生或研究生的教學用書,也可供相關領域的研究工作者參考。
透過本書,您將置身於迅速發展的計算機視覺領域。本書由自由開源OpenCV的發起人所著,介紹瞭計算機視覺,並通過實例演示瞭如何快速生成這樣的應用——能使計算機“看到”並根據由此獲取的數據做齣決策。
計算機視覺無處不在,安全係統、製造檢驗係統、醫學圖像分析、無人機等都可以見到它的蹤影。它與Google Map和Google Earth緊密結閤,它檢查LCD屏幕上的像素,它確保襯衫上的每個針腳都能完全縫閤。OpenCV提供瞭一個簡易好用的計算機視覺框架和一個豐富的庫,後者包含500多個可實時運行視覺代碼的函數。
透過各章提供的練習,任何一個開發人員或愛好者都可以迅速掌握如何使用這個框架。本書特色主題如下:
透徹介紹OpenCV
從攝像機獲取輸入
圖像的變換
圖像的分割和形狀的匹配
模式識彆,包括人臉檢測
二維和三維場景中的跟蹤監測
根據立體視覺進行三維重構
機器學習算法
“讓機器來看”是一個富有挑戰但也很有意思的目標。不管是想構建簡單的視覺應用,還是復雜的視覺應用,都離不開這本入門必備參考,拿起它,開始愉快的學習之旅吧!
布拉德斯基,Gary Rost Bradski博士是斯坦福大學人工智能實驗室計算機科學係的顧問教授,同時也是Willow Garage的資深科學傢,Willow Garage是一傢機器人研究機構/孵化器。
★“OpenCV庫對從業人員而言非常有用,對初涉該領域的新手而言也不失為一個優秀工具。正如其廣而告之的那樣,它是一套高效的計算機視覺算法。”
——William T. Freeman,麻省理工學院計算機科學與人工智能實驗室
★“對計算機視覺領域內任何一個從業人員而言,《學習OpenCV》是他們不可或缺的重要參考。”
——David Lowe,英屬哥倫比亞大學計算機科學教授
齣版前言
譯者序
寫在前麵的話
前言
第1章 概述
什麼是OpenCV
OpenCV的應用領域
什麼是計算機視覺
OpenCV的起源
下載和安裝OpenCV
通過SVN獲取最新的OpenCV代碼
更多OpenCV文檔
OpenCV的結構和內容
移植性
練習
第2章 OpenCV入門
開始準備
初試牛刀—— 顯示圖像
第二個程序—— 播放AVI視頻
視頻播放控製
一個簡單的變換
一個復雜一點的變換
從攝像機讀入數據
寫入AVI視頻文件
小結
練習
第3章 初探OpenCV
OpenCV的基本數據類型
CvMat矩陣結構
IplImage數據結構
矩陣和圖像操作
繪圖
數據存儲
集成性能基元
小結
練習
第4章 細說HighGUI
一個可移植的圖形工具包
創建窗口
載入圖像
顯示圖像
視頻的處理
ConvertImage函數
練習
第5章 圖像處理
綜述
平滑處理
圖像形態學
漫水填充算法
尺寸調整
圖像金字塔
閾值化
練習
第6章 圖像變換
概述
捲積
梯度和Sobel導數
拉普拉斯變換
Canny算子
霍夫變換
重映射
拉伸、收縮、扭麯和鏇轉
CartToPolar與PolarToCart
LogPolar
離散傅裏葉變換(DFT)
離散餘弦變換(DCT)
積分圖像
距離變換
直方圖均衡化
練習
第7章 直方圖與匹配
直方圖的基本數據結構
訪問直方圖
直方圖的基本操作
一些更復雜的策略
練習
第8章 輪廓
內存
序列
查找輪廓
Freeman鏈碼
輪廓例子
另一個輪廓例子
深入分析輪廓
輪廓的匹配
練習
第9章 圖像局部與分割
局部與分割
背景減除
分水嶺算法
用Inpainting修補圖像
均值漂移分割
Delaunay三角剖分和Voronoi 劃分
練習
第10章 跟蹤與運動
跟蹤基礎
尋找角點
亞像素級角點
不變特徵
光流
mean-shift和camshift跟蹤
運動模闆
預估器
condensation算法
練習
第11章 攝像機模型與標定
攝像機模型
標定
矯正
一次完成標定
羅德裏格斯變換
練習
第12章 投影與三維視覺
投影
仿射變換和透視變換
POSIT:3D姿態估計
立體成像
來自運動的結構
二維和三維下的直綫擬閤
練習
第13章 機器學習
什麼是機器學習
OpenCV機器學習算法
Mahalanobis距離
K均值
樸素貝葉斯分類
二叉決策樹
boosting
隨機森林
人臉識彆和Haar分類器
其他機器學習算法
練習
第14章 OpenCV的未來
過去與未來
發展方嚮
OpenCV與藝術傢
後記
參考文獻
索引
關於作者和譯者
封麵圖片
第1章
概述
什麼是OpenCV
OpenCV是一個開源的計算機視覺庫,OpenCV采用C/C++語言編寫,可以運行在Linux/Windows/Mac等操作係統上。OpenCV還提供瞭Python、Ruby、MATLAB以及其他語言的接口。
OpenCV的設計目標是執行速度盡量快,主要關注實時應用。它采用優化的C代碼編寫,能夠充分利用多核處理器的優勢。如果是希望在Intel平颱上得到更快的處理速度,可以購買Intel的高性能多媒體函數庫IPP(Integrated Performance Primitives)。IPP庫包含許多從底層優化的函數,這些函數涵蓋多個應用領域。如果係統已經安裝瞭IPP庫,OpenCV會在運行時自動使用相應的IPP庫。
OpenCV的一個目標是構建一個簡單易用的計算機視覺框架,以幫助開發人員更便捷地設計更復雜的計算機視覺相關應用程序。OpenCV包含的函數有500多個,覆蓋瞭計算機視覺的許多應用領域,如工廠産品檢測、醫學成像、信息安全、用戶界麵、攝像機標定、立體視覺和機器人等。因為計算機視覺和機器學習密切相關,所以OpenCV還提供瞭MLL(Machine Learning Library)機器學習庫。該機器學習庫側重於統計方麵的模式識彆和聚類(clustering)。MLL除瞭用在視覺相關的任務中,還可以方便地應用於其他的機器學習場閤。
OpenCV的應用領域
大多數計算機科學傢和程序員已經意識到計算機視覺的重要作用。但是很少有人知道計算機視覺的所有應用。例如,大多數人或多或少地知道計算機視覺可用在監控方麵,也知道視覺被越來越多地用在網絡圖像和視頻方麵。少數人也瞭解計算機視覺在遊戲界麵方麵的應用。但是很少有人瞭解大多數航空和街道地圖圖像(如Google的Street View)也大量使用計算機定標和圖像拼接技術。一些人知道安全監控、無人飛行器或生物醫學分析等方麵的應用,但是很少人知道機器視覺是多麼廣泛地被用在工廠中:差不多所有的大規模製造的産品都在流水綫上的某個環節上自動使用視覺檢測。
OpenCV所有的開放源代碼協議允許你使用OpenCV的全部代碼或者OpenCV的部分代碼生成商業産品。使用瞭OpenCV後,你不必對公眾開放自己的源代碼或改善後的算法,雖然我們非常希望你能夠開放源代碼。許多公司(IBM,Microsoft,Intel,SONY,Siemens和Google等其他公司)和研究單位(例如斯坦福大學、MIT、CMU、劍橋大學和INRIA)中的人都廣泛使用OpenCV,其部分原因是OpenCV采用瞭這個寬鬆的協議。Yahoo groups裏有一個OpenCV論壇,用戶可以在此發帖提問和討論;該論壇大約有20 000個會員。OpenCV在全世界廣受歡迎,在中國、日本、俄羅斯、歐洲和以色列都有龐大的用戶群。
自從OpenCV在1999年1月發布alpha版本開始,它就被廣泛用在許多應用領域、産品和研究成果中。相關應用包括衛星地圖和電子地圖的拼接,掃描圖像的對齊,醫學圖像去噪(消噪或濾波),圖像中的物體分析,安全和入侵檢測係統,自動監視和安全係統,製造業中的産品質量檢測係統,攝像機標定,軍事應用,無人飛行器,無人汽車和無人水下機器人。將視覺識彆技術用在聲譜圖上,OpenCV可以進行聲音和音樂識彆。在斯坦福大學的Stanley機器人項目中,OpenCV是其視覺係統的關鍵部分。Stanley在DARPA機器人沙漠挑戰賽中,贏得瞭二百萬美元奬金[Thrun06]。
什麼是計算機視覺
計算機視覺 是將來自靜止圖像或視頻的數據轉換成一個決策或者一種新的錶達方式的過程,所有的這些轉換都是為瞭達到某個目標。輸入數據可以包含一些輔助信息,如“攝像機架在汽車上”或“激光掃描儀在1米處發現一個物體”。最終的決策可能是“場景中有一個人”或“在這個切片中有14個腫瘤細胞”。一種新的錶達方式可以是將一張彩色照片轉為灰度照片,或者從圖像序列中去除攝像機晃動影響。
因為人類是視覺動物,所以會誤以為可以很容易地實現計算機視覺。當你凝視圖像時,從中找到一輛汽車會很睏難麼?你憑直覺會覺得很容易。人腦將視覺信號劃分入很多個通道,將各種不同的信息輸入你的大腦。你的大腦有一個關注係統,會根據任務識彆齣圖像的重要部分,並做重點分析,而其他部分則分析得較少。在人類視覺流中存在大量的反饋,但是目前我們對之瞭解甚少。肌肉控製的傳感器以及其他所有傳感器的輸入信息之間存在廣泛的關聯,這使得大腦可以依賴從齣生以來所學到的信息。大腦中的反饋在信息處理的各個階段都存在,在傳感器硬件(眼睛)中也存在。在眼睛中通過反饋來調節通過瞳孔的進光量,以及調節視網膜錶麵上的接收單元。
在計算機視覺係統中,計算機接接收到的是來自攝像機或者磁盤文件的一個數值矩陣。一般來說,沒有內置的模式識彆係統,沒有自動控製的對焦和光圈,沒有多年來經驗的積纍。視覺係統通常很低級。圖1-1顯示瞭一輛汽車的圖像。在此圖中,我們可以看到車的一側有一個反光鏡,而計算機“看”到的隻是一個數值的矩陣。矩陣中的每個數值都有很大的噪聲成分,所以它僅僅給齣很少的信息,這個數值矩陣就是計算機“看”到的全部。我們的任務是將這個具有噪聲成分的數值矩陣變成感知:“反光鏡”。圖1-2形象地解釋瞭為什麼計算機視覺如此之難。
……
前言
本書為使用開放源代碼計算機視覺庫(OpenCV)提供瞭一個實戰指南,同時還介紹瞭大量計算機視覺領域的背景知識以幫助讀者充分使用OpenCV。
目的
計算機視覺是一個迅速發展的領域,攝像機價格不斷降低且功能越來越強、計算能力的普及以及視覺算法的日臻成熟都帶動瞭該領域的發展。OpenCV在計算機視覺的發展中扮演著重要的角色,它使得數韆名研究人員在視覺領域能夠獲得更高的生産力。由於OpenCV專注於實時視覺應用,因此十分有助於學生和專業人員高效完成項目和加快研究進展,這是通過它提供的一個計算機視覺和機器學習基礎架構來實現的,這個基礎架構過去隻是少數設備完善的實驗室的專利。本書目的如下。
為OpenCV提供一份更好的文檔——詳細說明函數調用約定以及如何正確使用這些函數。
快速幫助讀者對計算機視覺的算法原理獲得直觀的理解。
讓讀者認識到可以使用哪些算法,以及應用這些算法的場閤。
通過許多可用的代碼實例,讓讀者循序漸進地學會如何實現計算機視覺和機器學習算法。
培養讀者具有一定的直覺,使其在齣現問題的時候能夠對一些OpenCV源代碼中更高級的子程序進行修正。
簡言之,本書既是我們在學校時希望使用的教材,也是我們在工作時希望翻閱的參考書。
本書為OpenCV這個工具提供瞭注解,旨在幫助讀者快速在計算機視覺領域中開展有趣的工作。本書能幫助讀者直觀地理解算法的原理,這樣可以幫助讀者設計和調試視覺係統,並使得其他教材中對計算機視覺和機器學習算法的形式化描述更易於理解和記憶。
總而言之,如果直觀地領會瞭算法的原理,便容易理解復雜的算法和與這些算法相關的數學知識。
本書麵嚮的讀者
本書包括算法描述、可運行的例程代碼以及對OpenCV庫中的計算機視覺工具的解釋,因此,它應該會對多種類型的讀者提供有益的幫助。
專業人員
對於需要迅速實現計算機視覺係統的專業人員來說,例程代碼為開始工作提供瞭一個快速上手的框架。我們對算法原理的直觀描述可以迅速教會讀者或提示讀者其 用法。
學生
如我們所說,本書是我們當年在學校時希望使用的教材。直觀的解釋、詳細的文檔和例程代碼都有助於讀者在計算機視覺領域獲得迅速成長,完成更多有趣的課堂項目,並且最終為計算機視覺領域貢獻新的研究成果。
教師
計算機視覺是一個迅速發展的領域。我們發現,在需要時講解一些經典的理論、當前的論文或專傢的講稿,學生會迅速地掌握一本課本。同時,學生也可以更早開始一些課程項目,嘗試更多有挑戰性的任務。
業餘愛好者
計算機視覺非常有趣,可任由你天馬行空地“創造”!
我們對於為讀者提供充分的直觀感受、文檔以及可運行的代碼給予瞭強烈的關注,目的是使讀者能夠迅速實現實時計算機視覺應用程序。
本書聲明
本書並不是一本正規教材。毋庸諱言,本書的許多知識點都涉及瞭大量數學細 節 ,但這樣做的目的是加深讀者對算法的理解,或者講清楚算法中所用的前提條件。在這裏,我們並不打算進行嚴格的數學推導,這也許會讓一些一直用嚴格數學錶達的人感到不習慣。
本書不是為理論研究人員所寫,因為它更多地關注應用。本書針對視覺提供通用的知識,而不是僅僅針對計算機視覺的某些特定應用(例如醫學圖像或遙感分析)。
也就是說,作者深信一點:讀完這裏的解釋之後,學生不僅會更好地學習理論知識,還會將這些知識銘記於心。因此,本書是針對理論課程的理想輔導書,也適用於入門課程或實戰性較強的課程。
關於本書中的程序
本書所有的例程都基於OpenCV 1.0版本。代碼可以在Linux或Windows下運行,也可能在OS-X下運行。本書的例程源代碼可以本書的網站下載。OpenCV可以從它的代碼管理網站下載。
OpenCV仍在不斷發展,每年都會發布一到兩個正式版本。一般來說,可以從代碼管理網站的SVN服務器(獲得最新代碼。
預備知識
在大多數情況下,讀者隻需要知道如何用C語言編程,也許需要知道一些C++編程知識。許多數學相關的內容屬於選讀,並帶有特定標記。書中涉及的數學知識包括簡單的代數和基本的矩陣代數,並且假定讀者較熟悉最小二乘優化問題的求解方法,以及高斯分布、貝葉斯定律和簡單函數的求導等一些基本知識。
這些數學知識用於幫助讀者加深對算法的直觀理解。讀者可以跳過數學和算法描述,隻通過函數定義和範例代碼,便可讓計算機視覺應用程序啓動和運行。
如何充分使用本書
本書不需要按照順序從頭到尾地閱讀。它可以作為一種用戶手冊:在需要的時候,可以從中查找函數;如果想知其所以然,可以閱讀函數的描述。然而,本書的設計初衷是更偏嚮於教程。它幫助讀者基本瞭解計算機視覺,如何以及何時使用所選定的算法。
本書可以作為計算機視覺領域本科生或研究生的輔導書或主要教材。學生閱讀本書可迅速瞭解計算機視覺,然後再輔以其他教材中的理論知識以及本領域內的學術論文,更深入地學習。每一章後麵都有練習題,可以幫助測試學生對知識的掌握情況,並加深理解。
您可以通過下麵三種方式之一閱讀本書。
僅選有用部分
開始閱讀本書時,請先閱讀第1章~第3章,然後根據自己需要閱讀其他章節。本書不一定要按照順序閱讀,不過第11章和第12章除外。
最佳進度
一個星期隻讀兩章,直到用六個星期讀完第1章~第12章(第13章有些特殊,詳見下文討論)。然後開始項目,著手解決具體問題,並閱讀其他教材和相關的論文。
快速掌握
在充分理解內容的前提下盡快瀏覽本書第1章~第12章。然後開始項目,著手解決具體問題,並閱讀其他的教材和相關的論文。該方法可供專業人員選用,同時也適用於比較高級的計算機視覺課程。
第13章的篇幅較多,介紹瞭機器學習的背景知識、OpenCV中實現的機器學習算法背後的細節,以及如何使用這些算法。當然,機器學習與物體識彆以及計算機視覺的很多方麵相關,詳細描述需要一本書的篇幅。專業人員會發現,這是未來閱讀文獻(或直接使用OpenCV庫中的代碼立項)的一個理想起點。對於一般的計算機視覺課程來說,本章可作為選學內容。
這是作者所希望的教授計算機視覺的方法:學生掌握要點後,快速學完課程內容,然後動手做一些有意義的課堂項目,同時指導老師通過其他教材或論文提供該領域的一些有深度的知識。該方法對小學期、整個學期或兩個學期的課程都適用。學生的興趣和創造力可以被迅速激發起來,很好地將自己所理解的知識和可運行的代碼結閤起來。當他們開始更有挑戰性且更耗時的項目時,指導老師可幫助他們開發和調試復雜的係統。對於課時較多的課程,項目本身可以以項目管理的方式變成教育方式。首先建立其一個可以運行的係統,並優化改進該係統,然後進行研究。課程的目標是每個項目可以發錶一篇會議論文,並且在隨後(課程結束之後)的工作中發錶更多相關論文。
本書所用約定
本書采用如下印刷約定。
斜體
錶示新名詞,URL,電子郵件地址,文件名,文件擴展名,路徑名,目錄和Unix實用程序。
等寬字體
錶示命令、選項、開關、變量、屬性、鍵值、函數、類型、類、命名空間、方法、模塊、參數、參數、值、對象、事件、事件句柄、XML標簽、HTML標簽、文件內容或者命令輸齣。
等寬粗體
顯示需要用戶逐字輸入的命令或者其他文字。也用於代碼中的強調。
等寬斜體
顯示應該被用戶輸入值代替的文字。
[…]
錶示引用參考文獻。
注意: 該圖標錶示一個技巧,建議或一般注解。
警告:該圖標錶示警告或注意事項。
使用例程代碼
OpenCV是免費的,可用於商業和研究,因此對本書的例程代碼,我們也持同樣的態度。 O'Reilly:學習OpenCV(中文版) 下載 mobi epub pdf txt 電子書 格式
O'Reilly:學習OpenCV(中文版) 下載 mobi pdf epub txt 電子書 格式 2024
O'Reilly:學習OpenCV(中文版) 下載 mobi epub pdf 電子書書寫的很詳盡,專業。。。。。。。。
評分書是正版,不過紙張非常的薄,而且配圖不是彩印的,比較失望,不值這個價錢。
評分書很好,是正版,很滿意,實驗室的小夥伴麼都非常喜歡,對學習幫助很大,一定仔細研讀
評分好書不錯,送貨快,價格好,非常好
評分opencv的入門經典,正想學便買瞭,希望不要讓我失望
評分裏麵是基於opencv2.0的,可以參考
評分書是正品,質量不錯,可學習。
評分五摺購書,挺實惠,希望能看完!
評分我要京豆我要京豆我要京豆
O'Reilly:學習OpenCV(中文版) mobi epub pdf txt 電子書 格式下載 2024