基于MATLAB與FPGA的圖像處理教程 ( 簡體 字) |
作者:韓彬,林海全,姜宇奇 | 類別:1. -> 工程繪圖與工程計算 -> Matlab 2. -> 電子工程 -> FPGA |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 56222 詢問書籍請說出此書號!【有庫存】 NT售價: 490 元 |
出版日:1/1/2023 |
頁數:288 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121447594 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:業內有很多介紹MATLAB圖像處理的書,如《數字圖像處理(MATLAB版)》(作者岡薩雷斯),也有不少介紹FPGA圖像處理的書,如《FPGA數字圖像采集與處理》(作者吳厚航),但尚未出現一本結合MATLAB仿真與FPGA實現的圖像處理教程。單純地學習MATLAB圖像處理的讀者,很難在FPGA上對其算法用硬件實現;單純地學習FPGA圖像處理的讀者,又很難從底層了解算法的原理與實現。因此,本書的出現將填補業內這一空缺,會給對該領域感興趣的讀者,帶來不一樣的福音。
本書將從圖像格式轉換、降噪、增強、二值化、銳化、縮放等傳統基礎圖像算法入手,從原理到MATLAB設計、FPGA硬件加速實現進行由淺入深、循序漸進的介紹。以深度學習算法LeNet5為例,介紹如何用FPGA實現較簡單的硬件加速卷積神經網絡。最后,作為畫龍點睛之筆,介紹傳統ISP和新興AISP的理論概念及區別,并闡述未來圖像硬件加速的發展走向。
為了讓讀者能夠更好地了解本書的架構,筆者整理了章節規劃的圖譜,如下所示。讀者可以按順序閱讀,也可以根據自己的興趣挑重點查閱,章節規劃沒有嚴格的先后順序。
圖像算法的實現屬于方法論,優秀的圖像算法事半功倍;同樣如何用更低的PPA(Power Performance Area,即功耗、性能、面積,是芯片最主要的三個評價指標)在FPGA/IC上實現圖像算法的硬件加速,也是一門學問,需要充分理解圖像算法的實現過程,掌握FPGA的設計思維,并且熟練運用FPGA常用的加速思維。筆者曾在《FPGA設計技巧與案例開發詳解(第3版)》一書中講述了很多的FPGA設計技巧,本書將重點針對圖像處理,為讀者講解具體的算法實現。
截至本書出版前,筆者在IC公司已經工作7年有余,深刻地感受到研發人員的能力對自主研發代碼質量(設計功能不考慮時序、門控時鐘滿天飛等)的影響,目前雖然功能驗證及后端收斂可以正常流片,但考慮到PPA對成本及競爭力的影響,目前PPA還有很大的提升空間。因此,本書旨在帶給讀者圖像處理的硬件加速思維,希望讀者能夠學會圖像處理的FPGA加速方法,同時能夠掌握在IC中設計優秀電路的技術。希望本書的出版,能夠幫助提高IC行業人才的質量與產品的競爭力。
本書內容體系
本書共9章,分為3部分,各部分對應的章節和具體內容如下。
第1部分為第1章,由韓彬編寫,主要通過對CPU結構體系加速,以及Apple M1芯片架構、海思3516A芯片架構的介紹,講解什么是硬件加速引擎。同時這一章也介紹了FPGA軟件仿真環境,以及可配套的FPGA圖像處理開發板。
第2部分包括第2~8章,主要介紹常用的圖像處理算法的理論、MATLAB設計,以及FPGA硬件加速實現,相關章節內容介紹如下。
(1)第2~5章由韓彬編寫,主要介紹RGB轉YCbCr算法、常用圖像增強算法、常用圖像降噪算法,以及常用圖像二值化算法。
(2)第6、7章由林海全編寫,主要介紹常用圖像銳化算法、常用圖像縮放算法,其中第7章中的“淺談基于深度學習的縮放算法”,由從事多媒體算法開發的孔德輝博士編寫。
(3)第8章由姜宇奇博士編寫,以典型的基于LeNet5的深度學習算法為例,介紹如何在MATLAB與FPGA上實現實時的手寫數字識別。
第3部分為第9章,作為本書的畫龍點睛之筆,主要介紹傳統ISP和新興AISP的理論概念及區別,讓讀者對圖像算法的硬件加速應用有一個更深刻的認知。
本書讀者對象
? FPGA技術愛好者;
? 有圖像算法基礎,想了解FPGA圖像處理的讀者;
? 有FPGA基礎,想了解圖像算法開發流程的讀者;
? 期望從事多媒體芯片前端開發的讀者;
? 大、中專院校的學生和老師;
? 相關培訓學校的學員。 |
內容簡介:本書不是一本純粹的基于軟件算法的教程,亦不是一本單一講述FPGA硬件實現的書,而是一本從圖像處理算法理論基礎出發,結合MATLAB軟件實現,最終采用FPGA進行并行硬件加速的指南。書中選用了一些常用的圖像處理算法,相關章節大都遵循"算法理論→MATLAB軟件驗證→FPGA硬件實現”的流程,將這些算法由淺入深、循序漸進地從算法理論講解到FPGA硬件實現。 本書適合對FPGA圖像處理感興趣的讀者,需讀者熟悉MATLAB軟件與Verilog語言,并且具備一定的FPGA基礎。如果是FPGA初學者,可以先閱讀筆者的另外兩本書:《FPGA設計技巧與案例開發詳解(第3版)》《Verilog數字系統設計教程(第4版)》。 本書的所有例程均已經過了驗證,并且已經在實際項目中得到了多次應用,配套的代碼及參考資料可聯系筆者獲取。 |
目錄:第1章 什么是硬件加速引擎 1
1.1 CPU是怎么加速的? 1
1.1.1 CPU體系結構加速 1
1.1.2 CPU流水線加速 3
1.2 什么是硬件加速引擎 5
1.2.1 蘋果M1芯片架構 6
1.2.2 海思Hi3516A芯片架構 8
1.2.3 本書圖像加速內容 9
1.3 FPGA軟件仿真環境介紹 10
1.3.1 FPGA目錄規劃約定 10
1.3.2 仿真驗證平臺介紹 10
1.3.3 相關軟件環境介紹 13
1.4 FPGA硬件驗證平臺介紹 14
第2章 RGB轉YCbCr算法介紹及MATLAB與FPGA實現 17
2.1 RGB與YCbCr色域介紹 17
2.1.1 RGB模型 18
2.1.2 YCbCr色域介紹 20
2.2 RGB轉YCbCr加速運算 22
2.2.1 讓你的軟件飛起來 22
2.2.2 FPGA硬件加速思維 24
2.2.3 FPGA硬件實現推導 27
2.3 RGB轉YCbCr的MATLAB實現 27
2.3.1 MATLAB代碼的設計 27
2.3.2 仿真數據的準備 31
2.4 RGB轉YCbCr的FPGA實現 32
2.4.1 FPGA代碼的實現 33
2.4.2 仿真流程的詳解 36
第3章 常用圖像增強算法介紹及MATLAB與FPGA實現 39
3.1 直方圖均衡算法的實現 39
3.1.1 直方圖均衡的原理 39
3.1.2 直方圖均衡的MATLAB實現 42
3.1.3 直方圖均衡的FPGA實現 47
3.1.4 直方圖均衡的ModelSim仿真 51
3.2 對比度算法的實現 53
3.2.1 對比度增強的原理 53
3.2.2 指數對比度增強的MATLAB實現 56
3.2.3 指數對比度增強的FPGA實現 58
3.2.4 指數對比度增強的ModelSim仿真 60
3.3 Gamma映射算法的實現 62
3.3.1 Gamma映射的原理 62
3.3.2 Gamma映射的MATLAB實現 66
3.3.3 Gamma映射的FPGA實現 69
3.3.4 Gamma映射的ModelSim仿真 71
第4章 常用圖像降噪算法介紹及MATLAB與FPGA實現 73
4.1 降噪原理介紹 73
4.1.1 為什么要降噪 73
4.1.2 什么是噪聲 73
4.1.3 圖像降噪簡介 74
4.2 均值濾波算法的實現 75
4.2.1 均值濾波算法的理論 75
4.2.2 均值濾波的MATLAB實現 75
4.2.3 均值濾波的FPGA實現 78
4.2.4 均值濾波的ModelSim仿真 82
4.3 中值濾波算法的實現 84
4.3.1 中值濾波算法的理論 84
4.3.2 中值濾波的MATLAB實現 87
4.3.3 中值濾波的FPGA實現 90
4.3.4 中值濾波的ModelSim仿真 90
4.4 高斯濾波算法的實現 93
4.4.1 高斯濾波算法的理論 95
4.4.2 高斯濾波的MATLAB實現 97
4.4.3 高斯濾波的FPGA實現 99
4.4.4 高斯濾波的ModelSim仿真 104
4.5 雙邊濾波算法的實現 107
4.5.1 雙邊濾波算法的理論 107
4.5.2 雙邊濾波的MATLAB實現 109
4.5.3 雙邊濾波的FPGA實現 118
4.5.4 雙邊濾波的ModelSim仿真 123
第5章 常用圖像二值化算法介紹及MATLAB與FPGA實現 126
5.1 圖像二值化的目的 126
5.2 全局閾值二值化算法 127
5.2.1 全局閾值二值化算法的理論與MATLAB實現 128
5.2.2 全局閾值二值化的MATLAB實現 131
5.2.3 全局閾值二值化的FPGA實現 131
5.3 局部閾值二值化算法 131
5.3.1 局部閾值二值化算法的理論 131
5.3.2 局部閾值二值化的MATLAB實現 132
5.3.3 局部閾值二值化的FPGA實現 134
5.3.4 局部閾值二值化的ModelSim仿真 136
5.4 Sobel邊緣檢測算法 140
5.4.1 Sobel邊緣檢測算法的理論 141
5.4.2 Sobel邊緣檢測的MATLAB實現 142
5.4.3 Sobel邊緣檢測的FPGA實現 144
5.4.4 Sobel邊緣檢測的ModelSim仿真 145
5.5 二值化腐蝕、膨脹算法 147
5.5.1 二值化腐蝕、膨脹算法的理論 147
5.5.2 二值化腐蝕、膨脹的MATLAB實現 148
5.5.3 二值化腐蝕、膨脹的FPGA實現 152
5.5.4 二值化腐蝕、膨脹的ModelSim仿真 153
5.6 幀間差算法及運動檢測算法 155
5.6.1 幀間差算法及運動檢測算法的理論 155
5.6.2 幀間差及運動檢測的MATLAB實現 157
5.6.3 幀間差及運動檢測的FPGA實現 164
第6章 常用圖像銳化算法介紹及MATLAB與FPGA實現 165
6.1 圖像銳化的原理 165
6.1.1 一階微分的邊緣檢測 166
6.1.2 二階微分的邊緣檢測 167
6.1.3 一階微分與二階微分的邊緣檢測對比 168
6.2 Robert銳化算法的實現 170
6.2.1 Robert銳化算法的理論 170
6.2.2 Robert銳化的MATLAB實現 170
6.2.3 Robert銳化的FPGA實現 172
6.2.4 Robert銳化的ModelSim仿真 173
6.3 Sobel銳化算法的實現 176
6.3.1 Sobel銳化算法的理論 176
6.3.2 Sobel銳化的MATLAB實現 177
6.3.3 Sobel銳化的FPGA實現 179
6.3.4 Sobel銳化的ModelSim仿真 180
6.4 Laplacian銳化算法的實現 182
6.4.1 Laplacian銳化算法的理論 182
6.4.2 Laplacian銳化的MATLAB實現 183
6.4.3 Laplacian銳化的FPGA實現 185
6.4.4 Laplacian銳化的ModelSim仿真 186
第7章 常用圖像縮放算法介紹及MATLAB與FPGA實現 190
7.1 最近鄰插值算法的實現 191
7.1.1 最近鄰插值算法的理論 191
7.1.2 最近鄰插值的MATLAB實現 192
7.1.3 最近鄰插值的FPGA實現 194
7.1.4 最近鄰插值的ModelSim仿真 197
7.2 雙線性插值算法的實現 199
7.2.1 雙線性插值算法的理論 199
7.2.2 雙線性插值的MATLAB實現 201
7.2.3 雙線性插值的FPGA實現 204
7.2.4 雙線性插值的ModelSim仿真 209
7.3 雙三次插值算法的實現 214
7.3.1 雙三次插值算法的理論 214
7.3.2 雙三次插值的MATLAB實現 216
7.3.3 雙三次插值的FPGA實現 219
7.4 淺談基于深度學習的縮放算法 219
7.4.1 DL-SR算法的理論 219
7.4.2 DL-SR算法的性能提升 222
7.4.3 DL-SR與High-level CV的區別 223
7.4.4 DL-SR的幾點思考與未來 223
第8章 基于LeNet5的深度學習算法介紹及MATLAB與FPGA實現 225
8.1 神經網絡的介紹 225
8.1.1 人工神經網絡 225
8.1.2 卷積神經網絡 226
8.2 基于LeNet5 卷積神經網絡的MATLAB實現 229
8.2.1 LeNet5卷積神經網絡的簡介 229
8.2.2 LeNet5卷積神經網絡的MATLAB實現 230
8.2.3 基于LeNet5卷積神經網絡的FPGA實現 233
8.3 基于攝像頭的字符識別FPGA Demo的搭建與實現 240
第9章 傳統ISP及AISP的圖像處理硬件加速引擎介紹 248
9.1 ISP介紹 248
9.1.1 ISP簡介 248
9.1.2 ISP的應用 250
9.1.3 ISP基礎算法及流水線 253
9.1.4 Bayer域的圖像處理算法 254
9.1.5 RGB域的圖像處理算法 256
9.1.6 YUV域的圖像處理算法 258
9.2 基于AI的ISP圖像加速引擎介紹 259
9.2.1 AI在圖像領域的應用 259
9.2.2 AISP簡介 260
9.2.3 AISP的產業化應用 265
9.2.4 本章小結 267
延伸閱讀 268
縮略語 271 |
序: |