1 图像处理 2
1.1 基本定义 2
1.2 图像形成 3
1.3 图像处理操作 6
1.4 应用实例 8
1.5 实时图像处理 10
1.6 嵌入式图像处理 11
1.7 串行处理 12
1.8 并行性 14
1.9 硬件图像处理系统 17
2 现场可编程门阵列 17
2.1 可编程逻辑器件 19
2.1.1 FPGA与ASIC 21
2.2 FPGA和图像处理 23
2.3 FPGA的内部 24
2.3.1 逻辑器件 24
2.3.2 互连 26
2.3.3 输入和输出 27
2.3.4 时钟 28
2.3.5 配置 28
2.3.6 功耗 29
2.4 FPGA产品系列及其特点 31
2.4.1 Xilinx 31
2.4.2 Altera 35
2.4.3 Lattice半导体公司 41
2.4.4 Achronix 43
2.4.5 SiliconBlue 44
2.4.6 Tabula 44
2.4.7 Actel 45
2.4.8 Atmel 46
2.4.9 QuickLogic 46
2.4.10 MathStar 47
2.4.11 Cypress 47
2.5 选择FPGA或开发板 48
3 编程语言 53
3.1 硬件描述语言 53
3.2 基于软件的语言 58
3.2.1 结构化方法 60
3.2.2 扩展语言 61
3.2.3 本地编译技术 66
3.3 Visual语言 69
3.3.1 行为式描述 69
3.3.2 数据流 70
3.3.3 混合型 71
3.4 小结 73
4 设计流程 76
4.1 问题描述 76
4.2 算法开发 77
4.2.1 算法开发过程 77
4.2.2 算法结构 78
4.2.3 FPGA开发问题 81
4.3 结构选择 82
4.3.1 系统级结构 82
4.3.2 计算结构 84
4.3.3 硬件和软件的划分 88
4.4 系统实现 90
4.4.1 映射到FPGA资源 91
4.4.2 算法映射问题 93
4.4.3 设计流程 95
4.5 为调整和调试进行设计 96
4.5.1 算法调整 96
4.5.2 系统调试 97
5 映射技术 99
5.1 时序约束 99
5.1.1 低级流水线 99
5.1.2 处理同步 101
5.1.3 多时钟域 103
5.2 存储器带宽约束 104
5.2.1 存储器架构 105
5.2.2 高速缓存 107
5.2.3 行缓冲 108
5.2.4 其他存储器结构 110
5.3 资源约束 113
5.3.1 资源复用 113
5.3.2 资源控制器 116
5.3.3 重配置性 120
5.4 计算技术 122
5.4.1 数字系统 122
5.4.2 查找表 127
5.4.3 CORDIC 131
5.4.4 近似 137
5.4.5 其他方法 138
5.5 小结 140
6 点操作 141
6.1 单幅图像上的点操作 141
6.1.1 对比度和亮度调节 142
6.1.2 全局阈值化和等高线阈值化 145
6.1.3 查找表实现 147
6.2 多幅图像上的点操作 148
6.2.1 图像均值 149
6.2.2 图像相减 150
6.2.3 图像比对 154
6.2.4 亮度缩放 155
6.2.5 图像掩模 156
6.3 彩色图像处理 157
6.3.1 伪彩色 158
6.3.2 色彩空间转换 160
6.3.3 颜色阈值化 172
6.3.4 颜色校正 173
6.3.5 颜色增强 176
6.4 小结 176
7 直方图操作 177
7.1 灰度级直方图 177
7.1.1 数据汇集 179
7.1.2 直方图均衡化 183
7.1.3 自动曝光 187
7.1.4 阈值选择 188
7.1.5 直方图相似性 194
7.2 多维直方图 194
7.2.1 三角阵列 195
7.2.2 多维统计信息 196
7.2.3 颜色分割 200
7.2.4 颜色索引 203
7.2.5 纹理分析 204
8 局部滤波器 207
8.1 缓存 207
8.2 线性滤波器 211
8.2.1 噪声平滑 212
8.2.2 边缘检测 213
8.2.3 边缘增强 215
8.2.4 线性滤波器技术 215
8.3 非线性滤波器 219
8.3.1 边缘方向 221
8.3.2 非极大值抑制 222
8.3.3 零交点检测 222
8.4 排序滤波器 223
8.4.1 排序滤波器的排序网络 225
8.4.2 自适应直方图均衡化 229
8.5 颜色滤波器 230
8.6 形态学滤波器 232
8.6.1 二值图像的形态学滤波 233
8.6.2 灰度图像形态学 236
8.6.3 颜色形态学滤波 238
8.7 自适应阈值分割 238
8.7.1 误差扩散 239
8.8 小结 240
9 几何变换 242
9.1 前向映射 242
9.1.1 可分离映射 243
9.2 逆向映射 248
9.3 插值 250
9.3.1 双线性插值 251
9.3.2 双三次插值 253
9.3.3 样条插值 254
9.3.4 通过插值压缩数据 256
9.4 映射的优化 256
9.5 图像配准 258
9.5.1 基于特征的方法 258
9.5.2 基于区域的方法 262
9.5.3 应用 267
10 线性变换 270
10.1 傅里叶变换 270
10.1.1 快速傅里叶变换 271
10.1.2 滤波 277
10.1.3 逆滤波 279
10.1.4 插值 280
10.1.5 配准 281
10.1.6 特征提取 281
10.1.7 哥兹柔算法 282
10.2 离散余弦变换 283
10.3 小波变换 286
10.3.1 滤波实现 288
10.3.2 小波变换的应用 292
10.4 图像和视频编码 293
11 目标检测和标记 293
11.1 包围盒 300
11.2 游程编码 302
11.3 链码 303
11.3.1 串行实现算法 304
11.3.2 单次扫描算法 304
11.3.3 特征提取 307
11.4 连通域标注 309
11.4.1 随机读取算法 309
11.4.2 多次扫描算法 309
11.4.3 两次扫描算法 310
11.4.4 单次扫描算法 312
11.4.5 多输入标号 314
11.4.6 进一步优化 315
11.5 距离变换 315
11.5.1 形态学方法 316
11.5.2 倒角距离 316
11.5.3 可分离变换 318
11.5.4 应用 320
11.5.5 测地线距离变换 321
11.6 分水岭变换 321
11.6.1 流水算法 322
11.6.2 浸入算法 323
11.6.3 应用 324
11.7 哈夫变换 325
11.7.1 直线哈夫变换 326
11.7.2 圆哈夫变换 328
11.7.3 广义哈夫变换 329
11.8 小结 329
12 接口 331
12.1 摄像机输入 331
12.1.1 摄像机接口标准 331
12.1.2 消除隔行扫描 336
12.1.3 全局和卷帘快门的校正 336
12.1.4 Bayer模板处理 337
12.2 显示输出 339
12.2.1 显示器驱动 340
12.2.2 显示内容 342
12.3 串行通信 345
12.3.1 PS2接口 345
12.3.2 I2C总线 347
12.3.3 SPI总线 349
12.3.4 RS-232接口 349
12.3.5 USB接口 350
12.3.6 以太网 350
12.3.7 PCI Express 351
12.4 存储器 352
12.4.1 静态随机存储器(SRAM) 352
12.4.2 动态随机存储器 353
12.4.3 闪存 354
1 2.5 小结 354
13 测试、调整和调试 354
13.1 设计 356
13.1.1 随机噪声源 357
13.2 实现 359
13.2.1 常见的实现错误 361
13.3 调试 362
13.4 时序收敛 363
14 应用实例 366
14.1 彩色区域跟踪 366
14.2 镜头畸变校正 369
14.2.1 畸变描述 369
14.2.2 畸变校正 372
14.3 中央窝传感器 374
14.3.1 中央窝映射 376
14.3.2 使用传感器 378
14.4 深度成像 379
14.4.1 扩展精确测量范围 381
14.5 实时生产线分级 382
14.5.1 软件算法 383
14.5.2 硬件实现 384
14.6 小结 387
参考文献 388