OpenCV 為開放原始碼的電腦視覺開發套件,在電腦視覺領域扮演著非常重要的角色
本書是Python與C 雙實現,幫助讀者輕鬆駕馭OpenCV
本書幫助初學者更加快速、系統地掌握基本的數位影像處理技術的數學原理,以及如何將抽象的數學原理轉為程式實現的方法。
然後詳細介紹OpenCV 實現對應的函數,並分別列出C++ 介面和Python 介面的使用方法。
本書適用讀者:
影像演算法的數學原理部分適合數位影像處理的初學者,範例C++ 部分適合具備C++ 程式設計基礎者,範例Python 部分適合具備Python 程式設計基礎者。
書附光碟內容
佳魁官網提供下載
作者簡介:
張平
數學與應用數學碩士,演算法工程師。從事圖像演算法研究和產品的應用開發,還致力機器學習、資料採擷演算法的應用研發。
作者序
前言
數位影像處理,即用電腦對影像進行處理。初期,影像數位化的裝置是非常昂貴和複雜的,隨著網際網路、人工智慧、智慧硬體等技術的快速發展,硬體成本越來越便宜,使得在我們生活中產生了大量的影像和視訊,與此同時,電腦視覺技術在人類生活中造成的作用也越來越大,其在商業、工業、醫學等領域具有廣泛的應用。
如今,連市場上低價位的智慧型手機都可以設定一組高解析度的攝影機,Android 和蘋果手機應用市場中出現大量以影像處理為基礎的App,例如Rookie Cam、VSCO、Snapseed 等,這些App 內均有大量影像處理方法,如影像的修改、縮放、旋轉、美顏、飽和度和亮度的調整及其各種濾鏡方法等,通常可以滿足人們日常生活中拍照娛樂的需求。例如淘寶中的「拍立淘」功能,可以用它拍下我們喜歡的物品,然後會自動檢索出與其符合的商品。還有例如以人臉識別為基礎的手機支付、考勤系統等,以字元識別為基礎的智慧停車系統等,可見數位影像處理已經逐漸地和我們的生活、娛樂息息相關。
✾ 本書整體架構及特色
OpenCV 為開放原始碼的電腦視覺開發套件,在電腦視覺領域扮演著非常重要的角色,它在提供原始程式的同時,列出了非常完整的OpenCV 函數手冊及其範例手冊,這兩個文件也是學習OpenCV 的第一手和最重要的資料。這些優勢使得數千名研究人員在視覺領域能夠獲得更高的生產力,並幫助學生和專業人員快速開發和研究有關的機器視覺專案,我也是其中許多受益者之一。
本書大致依循經典教材岡薩雷斯的《數位影像處理( 第三版)》和OpenCV 使用手冊(主要是improc 模組)的知識脈絡,並在此基礎上加入某些實際方向的最新方法,試圖幫助初學者更加快速、系統地掌握基本的數位影像處理技術的數學原理,以及如何將抽象的數學原理轉為程式實現的方法。然後詳細介紹OpenCV 實現對應的函數,並分別列出C++ 介面和Python 介面的使用方法,以及OpenCV 2.X 和OpenCV3.X 的區別。
✾ 本書針對的讀者
本書中影像演算法的數學原理部分適合數位影像處理的初學者,範例的C++ 部分適合具備C++ 程式設計基礎的讀者,範例的Python 部分適合具備Python 程式設計基礎的讀者,同時對於使用OpenCV 2.X 版本的讀者,書中介紹OpenCV 3.X 版本的新特性,可以快速過渡到3.X 版本。
✾ 致謝
特別感謝電子工業出版社博文視點的編輯鄭柳潔老師,在撰寫本書的過程中,不厭其煩地解答我遇到的各種各樣的問題,真心感謝她一直以來的支援和肯定。
感謝CSDN 的白羽中,沒有您的幫助,將無法促成本書的出版。感謝我的朋友戴傳軍、張瑩瑩為本書提出寶貴的建議,並協助我完成書中一些非常重要的圖表。
感謝我的父母、姐姐一直以來對我生活和工作的支援。
感謝OpenCV 開放原始碼函數庫的所有貢獻者。
限於篇幅,加之作者水準有限,疏漏和錯誤在所難免,懇請讀者批評、指正。如果發現錯誤或有好的建議,請發郵件至wxcdzhangping@126.com,將不勝感激。
前言
數位影像處理,即用電腦對影像進行處理。初期,影像數位化的裝置是非常昂貴和複雜的,隨著網際網路、人工智慧、智慧硬體等技術的快速發展,硬體成本越來越便宜,使得在我們生活中產生了大量的影像和視訊,與此同時,電腦視覺技術在人類生活中造成的作用也越來越大,其在商業、工業、醫學等領域具有廣泛的應用。
如今,連市場上低價位的智慧型手機都可以設定一組高解析度的攝影機,Android 和蘋果手機應用市場中出現大量以影像處理為基礎的App,例如Rookie Cam、VSCO、Snapseed 等,這些App 內均有大量影像處理方法,如影像的修改、...
目錄
前言
01 OpenCV 入門
1.1 初識OpenCV
1.2 部署OpenCV
02 影像數位化
2.1 認識Numpy 中的ndarray
2.2 認識OpenCV 中的Mat類別
2.3 矩陣的運算
2.4 灰階影像數位化
2.5 彩色影像數位化
2.6 參考文獻
03 幾何轉換
3.1 仿射轉換
3.2 投影轉換
3.3 極座標轉換
3.4 參考文獻
04 比較度增強
4.1 灰階長條圖
4.2 線性轉換
4.3 長條圖正規化
4.4 伽馬轉換
4.5 全域長條圖均衡化
4.6 限制比較度的自我調整長條圖均衡化
4.7 參考文獻
05 影像平滑
5.1 二維離散旋積
5.2 高斯平滑
5.3 平均值平滑
5.4 中值平滑
5.5 雙邊濾波
5.6 聯合雙邊濾波
5.7 導向濾波
5.8 參考文獻
06 設定值分割
6.1 方法概述
6.2 長條圖技術法
6.3 熵演算法
6.4 Otsu 設定值處理
6.5 自我調整設定值
6.6 二值圖的邏輯運算
6.7 參考文獻
07 形態學處理
7.1 腐蝕
7.2 膨脹
7.3 開運算和閉運算
7.4 其他形態學處理操作
08 邊緣檢測
8.1 Roberts 運算元
8.2 Prewitt 邊緣檢測
8.3 Sobel 邊緣檢測
8.4 Scharr 運算元
8.5 Kirsch 運算元和Robinson運算元
8.6 Canny 邊緣檢測
8.7 Laplacian 運算元
8.8 高斯拉普拉斯(LoG)
8.9 高斯差分(DoG)邊緣檢測
8.10 Marr-Hildreth 邊緣檢測
8.11 參考文獻
09 幾何形狀的檢測和擬合
9.1 點集的最小外包
9.2 霍夫直線檢測
9.3 霍夫圓檢測
9.4 輪廓
9.5 參考文獻
10 傅立葉轉換
10.1 二維離散的傅立葉(逆)轉換
10.2 傅立葉幅度譜與相位譜
10.3 譜殘差顯著性檢測
10.4 旋積與傅立葉轉換的關係
10.5 透過快速傅立葉轉換計算旋積
10.6 參考文獻
11 頻率域濾波
11.1 概述及原理詳解
11.2 低通濾波和高通濾波
11.3 帶通和帶阻濾波
11.4 自訂濾波器
11.5 同態濾波
11.6 參考文獻
12 色彩空間
12.1 常見的色彩空間
12.2 調整彩色影像的飽和度
前言
01 OpenCV 入門
1.1 初識OpenCV
1.2 部署OpenCV
02 影像數位化
2.1 認識Numpy 中的ndarray
2.2 認識OpenCV 中的Mat類別
2.3 矩陣的運算
2.4 灰階影像數位化
2.5 彩色影像數位化
2.6 參考文獻
03 幾何轉換
3.1 仿射轉換
3.2 投影轉換
3.3 極座標轉換
3.4 參考文獻
04 比較度增強
4.1 灰階長條圖
4.2 線性轉換
4.3 長條圖正規化
4.4 伽馬轉換
4.5 全域長條圖均衡化
4.6 限制比較度的自我調整長條圖均衡化
4.7 參考文獻
05 影像平滑
5.1 二維離散旋積
5.2 高斯平滑
5.3 平均值平滑
5.4 中值...