Preface

目前在跟随导师的研究方向,进行数字图像处理方向的学习和工作,因此打算写一点读书笔记在这里。

使用的入门参考教材见Reference。不过代码实践应该主要使用Python完成,某些情况下可能会使用Matlab;也可能会穿插一些使用HDL(Verilog/SystemVerilog)实现某些算法的内容。

为什么主要使用Python?

  • 基础库众多,屏蔽了图像文件预处理的诸多细节,更容易使人专注在算法本身;
  • 代码容易使用VCS(版本控制系统,如git)进行管理;
  • 配合PYNQ进行高效开发。

根据Dr. Gonzalez的定义,数字图像处理至少要包含以下要素:

  • 使用数字计算机,
  • 输入数字图像,
  • 输出可以是数字图像,也可以是对图像的特征提取及识别。

起源

数字图像处理这门学科的起源,最早可以追溯到20世纪早期的新闻业 —— 由于Bartlane电缆传输系统[1]的引入,横跨大西洋的图像传输成为可能。虽然Bartlane系统的持续改进,使图像传输的质量大幅改善,但是我们依然不认为它是数字图像处理技术的一种:它并没有引入数字计算机。

现代数字图像处理技术是建立在冯·诺依曼架构的计算机之上的。冯·诺伊曼架构包含两个关键概念:a. 暂存数据和程序的存储器;b. 条件分支。这两个关键概念是现代CPU的理论基础。虽然计算机出现于20世纪40年代,但是直到1970年,大规模集成电路(Large-scale Integretion, LI)技术出现后,数字图像处理技术才得到了勉强可以满足需求的算力。

冷战期间,美苏军备竞赛在太空领域的竞争也客观上促进了数字图像处理技术的发展。

图像信号

表示

一幅图像可以视作一个二元函数,记作f(x,y)f(x, y),其中,x,yx, y是空间坐标或者说平面坐标,而在任意坐标(x,y)(x, y)处,函数ff的幅值称作图像信号的强度。对于不同的图像,信号的强度表征的含义也不尽相同。例如,对于灰度图像,信号强度表示图像某点的亮度,或称灰度(grey level);对于RGB图像,信号强度则表示每个色彩通道的幅值。

假如坐标x,yx, y以及函数ff的幅值都是有限而离散的,我们称这样的图像为数字图像。数字图像由有限个元素组成,这些元素和(x,y)(x, y)坐标一一对应,称为像元或者像素(pixel)。

获取

电磁频谱

狭义的图像信号仅指人眼可见光范围内,由于光的传播形成的图像;广义上,任何波的传播都可以形成图像。事实上,除了可见光之外,常用于医疗诊断和工业探伤的X射线、用于雷达探测的高频电磁波、用于水下探测的声纳信号以及物体自发放射的红外线等,都可用于成像及分析。

对不同的波形成的图像,需要使用不同波段的传感器转换数字信号才可以进行分析。现在,多波段融合传感器也是传感器发展的一个潮流方向。不过传感器技术不是本次讨论的重点,故不再赘述。

Reference

  1. Digital Image Processing(3rd Edition), RafaelC.Gonzalez
  2. 图像处理与图像分析基础(C/C++语言版), 任明武,2022

  1. 该系统以离散的点集传输灰度图像,这种思想很接近现在的数字图像的概念。 ↩︎