Python 圖像處理實戰 (Hands-On Image Processing with Python: Expert techniques for advanced image analysis and effective interpretation of image data)

Sandipan Dey 譯 陳盈 , 鄧軍

買這商品的人也買了...

商品描述

本書將使用Python工具和框架探索用於解決圖像處理挑戰的算法。
讀者將學習圖像處理庫(PIL、skimage、scipy)的使用方法,
並能夠在Python 3中快速實現複雜的圖像處理算法(圖像增強、過濾、分割、對象檢測、分類等)。
讀者將使用機器學習模型以及cikit-learn和深度學習模型,探索圖像絎縫、各向異性擴散、
泊松圖像混合等高級問題,最後學習如何通過各種算法以實現高效的圖像處理。

作者簡介

Sandipan Dey

是一位興趣廣泛的數據科學家,主要研究機器學習、深度學習、圖像處理和計算機視覺,
曾在推薦系統、行業動態預測模型、傳感器定位模型、情感分析和設備預測等眾多數據科學領域工作過。

桑迪潘•戴伊獲美國馬里蘭大學計算機科學碩士學位,在IEEE數據挖掘會議和期刊上發表了數篇學術論文,
並在數據科學、機器學習、深度學習和圖像處理及相關課程/專業等方面獲得了100多個慕課(mooc)學習認證。
他經常在博客空間(sandipanweb)撰寫博客,是機器學習教育愛好者。
非常感謝全球頂尖商學院最近幾年提供的優秀在線課程。
這些課程包括:圖像處理(由杜克大學、西北大學提供),計算機視覺與圖像分析(由微軟提供),
計算攝影(由佐治亞理工學院提供),機器學習(由斯坦福大學、多倫多大學和加利福尼亞大學圣迭戈分校提供),深度學習(由deeplearning.ai和谷歌在線提供)。

目錄大綱

目錄
第1章圖像處理入門1
1.1什麼是圖像處理及圖像處理的應用2
1.1.1什麼是圖像以及圖像是如何存儲的2
1.1.2什麼是圖像處理4
1.1.3圖像處理的應用4
1.2圖像處理流程4
1.3在Python中安裝不同的圖像處理庫6
1.3.1安裝pip 6
1.3.2在Python中安裝圖像處理庫6
1.3. 3安裝Anaconda發行版7
1.3.4安裝Jupyter筆記本7
1.4使用Python進行圖像輸入/輸出和顯示8
1.4.1使用PIL讀取、保存和顯示圖像8
1.4.2使用matplotlib讀取、保存和顯示圖像10
1.4.3使用scikit-image讀取、保存和顯示圖像12
1.4.4使用SciPy的misc模塊讀取、保存和顯示圖像14
1.5處理不同的文件格式和圖像類型,並執行基本的圖像操作15
1.5.1處理不同的文件格式和圖像類型16
1.5.2執行基本的圖像操作20
小結38
習題39
拓展閱讀40

第2章採樣、傅里葉變換與卷積41
2.1圖像形成—採樣和量化42
2.1.1採樣42
2.1.2量化48
2.2離散傅里葉變換51
2.2.1為什麼需要DFT 51
2.2.2用快速傅里葉變換算法計算DFT 51
2.3理解卷積56
2.3 .1為什麼需要卷積圖像57
2.3.2使用SciPy信號模塊的convolve2d函數進行卷積57
2.3.3使用SciPy中的ndimage.convolve函數進行卷積61
2.3.4相關與卷積62
小結.66
習題.66

第3章卷積和頻域濾波67
3.1卷積定理和頻域高斯模糊67
3.2頻域濾波75
3.2.1什麼是濾波器75
3.2.2高通濾波器76
3 .2.3低通濾波器81
3.2.4 DoG帶通濾波器87
3.2.5帶阻(陷波)濾波器88
3.2.6圖像復原90
小結98
習題98

第4章圖像增強99
4.1逐點強度變換—像素變換100
4.1.1對數變換101
4.1.2冪律變換103
4.1.3對比度拉伸104
4.1.4二值化108
4.2直方圖處理—直方圖均衡化和直方圖匹配112
4.2.1基於scikit-image的對比度拉伸和直方圖均衡化113
4.2.2直方圖匹配117
4.3線性噪聲平滑120
4.3.1 PIL平滑120
4.3.2基於SciPy ndimage進行盒核與高斯核平滑比較124
4.4非線性噪聲平滑124
4.4.1 PIL平滑125
4.4.2 scikit-image平滑(去噪) 127
4.4.3 SciPy ndimage平滑131
小結132
習題133

第5章應用導數方法實現圖像增強134
5.1圖像導數—梯度和拉普拉斯算子134
5.1.1導數與梯度135
5.1.2拉普拉斯算子138
5.1.3噪聲對梯度計算的影響140
5.2銳化和反銳化掩模141
5.2.1使用拉普拉斯濾波器銳化圖像141
5.2.2反銳化掩模142
5.3使用導數和濾波器進行邊緣檢測..144
5.3.1用偏導數計算梯度大小145
5.3.2 scikit-image的Sobel邊緣檢測器146
5.3.3 scikit-image的不同邊緣檢測器—Prewitt、Roberts、Sobel、Scharr和Laplace 148
5.3.4 scikit-image的Canny邊緣檢測器151
5.3.5 LoG濾波器和DoG濾波器152
5.3.6基於LoG濾波器的邊緣檢測157
5.3.7基於PIL發現和增強邊緣159
5.4圖像金字塔—融合圖像160
5.4.1 scikit-image transform pyramid模塊的高斯金字塔160
5.4.2 scikit-image transform pyramid模塊的拉普拉斯金字塔162
5.4.3構造高斯金字塔164
5.4.4僅通過拉普拉斯金字塔重建圖像168
5.4.5基於金字塔的圖像融合170
小結172
習題173

第6章形態學圖像處理174
6.1基於scikit-image形態學模塊的形態學圖像處理174
6.1.1對二值圖像的操作175
6.1.2利用開、閉運算實現指紋清洗183
6.1.3灰度級操作184
6.2基於scikit-image filter.rank模塊的形態學圖像處理185
6.2.1形態學對比度增強186
6.2.2使用中值濾波器去噪187
6.2.3計算局部熵188
6.3基於SciPy ndimage.morphology模塊的形態學圖像處理189
6.3.1填充二值對像中的孔洞189
6.3.2採用開、閉運算去噪190
6.3.3計算形態學Beucher梯度191
6.3.4計算形態學拉普拉斯193
小結194
習題194

第7章圖像特徵提取與描述符196
7.1特徵檢測器與描述符196
7.2哈里斯角點檢測器198
7.2.1 scikit-image包198
7.2.2哈里斯角點特徵在圖像匹配中的應用200
7.3基於LoG、DoG和DoH的斑點檢測器204
7.3.1高斯拉普拉斯204
7.3.2高斯差分205
7.3.3黑塞矩陣205
7.4基於方向梯度直方圖的特徵提取206
7.4.1計算HOG描述符的算法206
7.4.2基於scikit-image計算HOG描述符207
7 .5尺度不變特徵變換208
7.5.1計算SIFT描述符的算法.208
7.5.2 opencv和opencv-contrib的SIFT函數209
7.5.3基於BRIEF、SIFT和ORB匹配圖像的應用210
7.6類Haar特徵及其在人臉檢測中的應用217
7.6.1基於scikit-image的類Haar特徵描述符218
7. 6.2基於類Haar特徵的人臉檢測的應用219
小結222
習題222

第8章圖像分割223
8.1圖像分割的概念223
8.2霍夫變換—檢測圖像中的圓和線224
8.3二值化和Otsu分割227
8.4基於邊緣/區域的圖像分割229
8.4.1基於邊緣的圖像分割229
8.4.2基於區域的圖像分割231
8.5基於菲爾森茨瓦布高效圖的分割算法、SLIC算法、快速移位圖像分割算法、
緊湊型分水嶺算法及使用SimpleITK的區域生長算法234
8.5.1基於菲爾森茨瓦布高效圖的分割算法235
8.5. 2 SLIC算法238
8.5.3快速移位圖像分割算法240
8.5.4緊湊型分水嶺算法241
8.5.5使用SimpleITK的區域生長算法243
8.6活動輪廓算法、形態學蛇算法和基於OpenCV的GrabCut圖像分割算法245
8.6.1活動輪廓算法245
8.6.2形態學蛇算法247
8.6.3基於OpenCV的GrabCut圖像分割算法250
小結253
習題253

第9章圖像處理中的經典機器學習方法255
9.1監督學習與無監督學習255
9.2無監督機器學習—聚類、 PCA和特徵臉256
9.2.1基於圖像分割與顏色量化的k均值聚類算法256
9.2.2用於圖像分割的譜聚類算法260
9.2.3 PCA與特徵臉261
9. 3監督機器學習—基於手寫數字數據集的圖像分類268
9.3.1下載MNIST(手寫數字)數據集270
9.3.2可視化數據集270
9.3.3通過訓練KNN、高斯貝葉斯和SVM模型對MNIST數據集分類272
9.4監督機器學習—目標檢測278
9.4.1使用類Haar特徵的人臉檢測和使用AdaBoost的級聯分類器—Viola-Jones算法279
9.4. 2使用基於HOG特徵的SVM檢測目標283
小結287
習題287

第10章圖像處理中的深度學習—圖像分類289
10.1圖像處理中的深度學習289
10.1.1什麼是深度學習290
10.1 .2經典學習與深度學習290
10.1.3為何需要深度學習292
10.2卷積神經網絡292
10.3使用TensorFlow或Keras進行圖像分類295
10.3.1使用TensorFlow進行圖像分類295
10.3.2使用Keras對密集全連接層進行分類302
10.3.3使用基於Keras的捲積神經網絡進行分類306
10.4應用於圖像分類的主流深度卷積神經網絡311
小結322
習題322

第11章圖像處理中的深度學習—目標檢測等323
11.1 YOLO v2 323
11.1.1對圖像進行分類與定位以及目標檢測324
11.1.2使用卷積神經網絡檢測目標325
11.1.3使用YOLO v2 326
11.2利用DeepLab v3+的深度語義分割333
11. 2.1語義分割334
11.2.2 DeepLab v3+ 334
11.3遷移學習—什麼是遷移學習以及什麼時候使用遷移學習337
11.4使用預訓練的Torch模型和cv2實現神經風格遷移342
11.4 .1了解NST算法342
11.4.2使用遷移學習實現NST 342
11.4.3計算總損失##344
11.5使用Python和OpenCV實現神經風格遷移344
小結347
習題347

第12章圖像處理中的其他問題348
12.1接縫雕刻348
12.1.1使用接縫雕刻進行內容感知的圖像大小調整349
12.1.2使用接縫雕刻移除目標.352
12.2無縫克隆和泊松圖像編輯354
12.3圖像修復356
12.4變分圖像處理358
12.4.1全變分去噪359
12.4.2使用全變分去噪創建平面紋理卡通圖像361
12.5圖像絎縫362
12.5.1紋理合成362
12.5.2紋理遷移362
12.6人臉變形363
小結364
習題364