本書不是一本純粹的基于軟件算法的教程,亦不是一本單一講述FPGA硬件實(shí)現(xiàn)的書,而是一本從圖像處理算法理論基礎(chǔ)出發(fā),結(jié)合MATLAB軟件實(shí)現(xiàn),最終采用FPGA進(jìn)行并行硬件加速的指南。書中選用了一些常用的圖像處理算法,相關(guān)章節(jié)大都遵循"算法理論→MATLAB軟件驗(yàn)證→FPGA硬件實(shí)現(xiàn)”的流程,將這些算法由淺入深、循序漸進(jìn)地從算法理論講解到FPGA硬件實(shí)現(xiàn)。 本書適合對FPGA圖像處理感興趣的讀者,需讀者熟悉MATLAB軟件與Verilog語言,并且具備一定的FPGA基礎(chǔ)。如果是FPGA初學(xué)者,可以先閱讀筆者的另外兩本書:《FPGA設(shè)計(jì)技巧與案例開發(fā)詳解(第3版)》《Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程(第4版)》。 本書的所有例程均已經(jīng)過了驗(yàn)證,并且已經(jīng)在實(shí)際項(xiàng)目中得到了多次應(yīng)用,配套的代碼及參考資料可聯(lián)系筆者獲。ㄠ]箱crazyfpga@qq.com)。
韓彬,網(wǎng)名CrazyBingo(CB),分別在杭州電子科技大學(xué)、西安電子科技大學(xué)獲得學(xué)士學(xué)位、碩士學(xué)位,曾在中興微電子(深圳市中興微電子技術(shù)有限公司)負(fù)責(zé)多年的多媒體SOC前端開發(fā)工作,以及FPGA加速驗(yàn)證等事宜,在視頻圖像前后處理算法加速領(lǐng)域,有豐富的經(jīng)驗(yàn)與實(shí)戰(zhàn)的積累。此外,這些年作者編寫過大量FPGA教程,也編寫過無數(shù)FPGA圖像的處理方案與架構(gòu),并相繼出版了《FPGA設(shè)計(jì)技巧與案例開發(fā)詳解(第3版)》《Verilog數(shù)字系統(tǒng)教程(第4版)》等書,獲得業(yè)界廣泛好評。
目 錄
第1章 什么是硬件加速引擎 1
1.1 CPU是怎么加速的? 1
1.1.1 CPU體系結(jié)構(gòu)加速 1
1.1.2 CPU流水線加速 3
1.2 什么是硬件加速引擎 5
1.2.1 蘋果M1芯片架構(gòu) 6
1.2.2 海思Hi3516A芯片架構(gòu) 8
1.2.3 本書圖像加速內(nèi)容 9
1.3 FPGA軟件仿真環(huán)境介紹 10
1.3.1 FPGA目錄規(guī)劃約定 10
1.3.2 仿真驗(yàn)證平臺介紹 10
1.3.3 相關(guān)軟件環(huán)境介紹 13
1.4 FPGA硬件驗(yàn)證平臺介紹 14
第2章 RGB轉(zhuǎn)YCbCr算法介紹及MATLAB與FPGA實(shí)現(xiàn) 17
2.1 RGB與YCbCr色域介紹 17
2.1.1 RGB模型 18
2.1.2 YCbCr色域介紹 20
2.2 RGB轉(zhuǎn)YCbCr加速運(yùn)算 22
2.2.1 讓你的軟件飛起來 22
2.2.2 FPGA硬件加速思維 24
2.2.3 FPGA硬件實(shí)現(xiàn)推導(dǎo) 27
2.3 RGB轉(zhuǎn)YCbCr的MATLAB實(shí)現(xiàn) 27
2.3.1 MATLAB代碼的設(shè)計(jì) 27
2.3.2 仿真數(shù)據(jù)的準(zhǔn)備 31
2.4 RGB轉(zhuǎn)YCbCr的FPGA實(shí)現(xiàn) 32
2.4.1 FPGA代碼的實(shí)現(xiàn) 33
2.4.2 仿真流程的詳解 36
第3章 常用圖像增強(qiáng)算法介紹及MATLAB與FPGA實(shí)現(xiàn) 39
3.1 直方圖均衡算法的實(shí)現(xiàn) 39
3.1.1 直方圖均衡的原理 39
3.1.2 直方圖均衡的MATLAB實(shí)現(xiàn) 42
3.1.3 直方圖均衡的FPGA實(shí)現(xiàn) 47
3.1.4 直方圖均衡的ModelSim仿真 51
3.2 對比度算法的實(shí)現(xiàn) 53
3.2.1 對比度增強(qiáng)的原理 53
3.2.2 指數(shù)對比度增強(qiáng)的MATLAB實(shí)現(xiàn) 56
3.2.3 指數(shù)對比度增強(qiáng)的FPGA實(shí)現(xiàn) 58
3.2.4 指數(shù)對比度增強(qiáng)的ModelSim仿真 60
3.3 Gamma映射算法的實(shí)現(xiàn) 62
3.3.1 Gamma映射的原理 62
3.3.2 Gamma映射的MATLAB實(shí)現(xiàn) 66
3.3.3 Gamma映射的FPGA實(shí)現(xiàn) 69
3.3.4 Gamma映射的ModelSim仿真 71
第4章 常用圖像降噪算法介紹及MATLAB與FPGA實(shí)現(xiàn) 73
4.1 降噪原理介紹 73
4.1.1 為什么要降噪 73
4.1.2 什么是噪聲 73
4.1.3 圖像降噪簡介 74
4.2 均值濾波算法的實(shí)現(xiàn) 75
4.2.1 均值濾波算法的理論 75
4.2.2 均值濾波的MATLAB實(shí)現(xiàn) 75
4.2.3 均值濾波的FPGA實(shí)現(xiàn) 78
4.2.4 均值濾波的ModelSim仿真 82
4.3 中值濾波算法的實(shí)現(xiàn) 84
4.3.1 中值濾波算法的理論 84
4.3.2 中值濾波的MATLAB實(shí)現(xiàn) 87
4.3.3 中值濾波的FPGA實(shí)現(xiàn) 90
4.3.4 中值濾波的ModelSim仿真 90
4.4 高斯濾波算法的實(shí)現(xiàn) 93
4.4.1 高斯濾波算法的理論 95
4.4.2 高斯濾波的MATLAB實(shí)現(xiàn) 97
4.4.3 高斯濾波的FPGA實(shí)現(xiàn) 99
4.4.4 高斯濾波的ModelSim仿真 104
4.5 雙邊濾波算法的實(shí)現(xiàn) 107
4.5.1 雙邊濾波算法的理論 107
4.5.2 雙邊濾波的MATLAB實(shí)現(xiàn) 109
4.5.3 雙邊濾波的FPGA實(shí)現(xiàn) 118
4.5.4 雙邊濾波的ModelSim仿真 123
第5章 常用圖像二值化算法介紹及MATLAB與FPGA實(shí)現(xiàn) 126
5.1 圖像二值化的目的 126
5.2 全局閾值二值化算法 127
5.2.1 全局閾值二值化算法的理論與MATLAB實(shí)現(xiàn) 128
5.2.2 全局閾值二值化的MATLAB實(shí)現(xiàn) 131
5.2.3 全局閾值二值化的FPGA實(shí)現(xiàn) 131
5.3 局部閾值二值化算法 131
5.3.1 局部閾值二值化算法的理論 131
5.3.2 局部閾值二值化的MATLAB實(shí)現(xiàn) 132
5.3.3 局部閾值二值化的FPGA實(shí)現(xiàn) 134
5.3.4 局部閾值二值化的ModelSim仿真 136
5.4 Sobel邊緣檢測算法 140
5.4.1 Sobel邊緣檢測算法的理論 141
5.4.2 Sobel邊緣檢測的MATLAB實(shí)現(xiàn) 142
5.4.3 Sobel邊緣檢測的FPGA實(shí)現(xiàn) 144
5.4.4 Sobel邊緣檢測的ModelSim仿真 145
5.5 二值化腐蝕、膨脹算法 147
5.5.1 二值化腐蝕、膨脹算法的理論 147
5.5.2 二值化腐蝕、膨脹的MATLAB實(shí)現(xiàn) 148
5.5.3 二值化腐蝕、膨脹的FPGA實(shí)現(xiàn) 152
5.5.4 二值化腐蝕、膨脹的ModelSim仿真 153
5.6 幀間差算法及運(yùn)動檢測算法 155
5.6.1 幀間差算法及運(yùn)動檢測算法的理論 155
5.6.2 幀間差及運(yùn)動檢測的MATLAB實(shí)現(xiàn) 157
5.6.3 幀間差及運(yùn)動檢測的FPGA實(shí)現(xiàn) 164
第6章 常用圖像銳化算法介紹及MATLAB與FPGA實(shí)現(xiàn) 165
6.1 圖像銳化的原理 165
6.1.1 一階微分的邊緣檢測 166
6.1.2 二階微分的邊緣檢測 167
6.1.3 一階微分與二階微分的邊緣檢測對比 168
6.2 Robert銳化算法的實(shí)現(xiàn) 170
6.2.1 Robert銳化算法的理論 170
6.2.2 Robert銳化的MATLAB實(shí)現(xiàn) 170
6.2.3 Robert銳化的FPGA實(shí)現(xiàn) 172
6.2.4 Robert銳化的ModelSim仿真 173
6.3 Sobel銳化算法的實(shí)現(xiàn) 176
6.3.1 Sobel銳化算法的理論 176
6.3.2 Sobel銳化的MATLAB實(shí)現(xiàn) 177
6.3.3 Sobel銳化的FPGA實(shí)現(xiàn) 179
6.3.4 Sobel銳化的ModelSim仿真 180
6.4 Laplacian銳化算法的實(shí)現(xiàn) 182
6.4.1 Laplacian銳化算法的理論 182
6.4.2 Laplacian銳化的MATLAB實(shí)現(xiàn) 183
6.4.3 Laplacian銳化的FPGA實(shí)現(xiàn) 185
6.4.4 Laplacian銳化的ModelSim仿真 186
第7章 常用圖像縮放算法介紹及MATLAB與FPGA實(shí)現(xiàn) 190
7.1 最近鄰插值算法的實(shí)現(xiàn) 191
7.1.1 最近鄰插值算法的理論 191
7.1.2 最近鄰插值的MATLAB實(shí)現(xiàn) 192
7.1.3 最近鄰插值的FPGA實(shí)現(xiàn) 194
7.1.4 最近鄰插值的ModelSim仿真 197
7.2 雙線性插值算法的實(shí)現(xiàn) 199
7.2.1 雙線性插值算法的理論 199
7.2.2 雙線性插值的MATLAB實(shí)現(xiàn) 201
7.2.3 雙線性插值的FPGA實(shí)現(xiàn) 204
7.2.4 雙線性插值的ModelSim仿真 209
7.3 雙三次插值算法的實(shí)現(xiàn) 214
7.3.1 雙三次插值算法的理論 214
7.3.2 雙三次插值的MATLAB實(shí)現(xiàn) 216
7.3.3 雙三次插值的FPGA實(shí)現(xiàn) 219
7.4 淺談基于深度學(xué)習(xí)的縮放算法 219
7.4.1 DL-SR算法的理論 219
7.4.2 DL-SR算法的性能提升 222
7.4.3 DL-SR與High-level CV的區(qū)別 223
7.4.4 DL-SR的幾點(diǎn)思考與未來 223
第8章 基于LeNet5的深度學(xué)習(xí)算法介紹及MATLAB與FPGA實(shí)現(xiàn) 225
8.1 神經(jīng)網(wǎng)絡(luò)的介紹 225
8.1.1 人工神經(jīng)網(wǎng)絡(luò) 225
8.1.2 卷積神經(jīng)網(wǎng)絡(luò) 226
8.2 基于LeNet5 卷積神經(jīng)網(wǎng)絡(luò)的MATLAB實(shí)現(xiàn) 229
8.2.1 LeNet5卷積神經(jīng)網(wǎng)絡(luò)的簡介 229
8.2.2 LeNet5卷積神經(jīng)網(wǎng)絡(luò)的MATLAB實(shí)現(xiàn) 230
8.2.3 基于LeNet5卷積神經(jīng)網(wǎng)絡(luò)的FPGA實(shí)現(xiàn) 233
8.3 基于攝像頭的字符識別FPGA Demo的搭建與實(shí)現(xiàn) 240
第9章 傳統(tǒng)ISP及AISP的圖像處理硬件加速引擎介紹 248
9.1 ISP介紹 248
9.1.1 ISP簡介 248
9.1.2 ISP的應(yīng)用 250
9.1.3 ISP基礎(chǔ)算法及流水線 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在圖像領(lǐng)域的應(yīng)用 259
9.2.2 AISP簡介 260
9.2.3 AISP的產(chǎn)業(yè)化應(yīng)用 265
9.2.4 本章小結(jié) 267
延伸閱讀 268
縮略語 271