一、图像及图像重建技术
视觉是人类获取信息的主要途径, 大部分基于视觉的应用效果都依赖于图像质量。大数据时代, 数字图像已经被广泛地应用到国民经济各个领域。并且随着信息技术的发展, 图像的应用场景也会不断地延伸, 人们对图像数据的质量也会提出更高的要求, 然而在获取图像的过程中, 由于设备、技术等原因导致了获取的图像清晰度不能满足特定任务的需求, 因此数字图像处理技术就发挥了重要的作用。
图像的分辨率是衡量图像清晰度的重要指标, 分辨率越高, 数据能传达的信息越多, 越有利于图像在任务中的应用和分析。提高图像分辨率是图像处理中的重要任务之一。
图像超分辨率重建是以获取的原始图像或退化的图像序列为输入数据, 通过一系列图像处理和算法, 生成更高质量图像的技术和过程, 是综合了图像处理、人工智能等多门学科的交叉技术。目前已经在医学图像处理、视频监控等方面得到了应用, 随着图像应用领域的扩大, 图像高清重建技术将得到更多的关注, 有着更加广阔的应用前景。1964年, Harris和Goodman提出了利用外推频谱的方法合成细节信息更丰富的单帧图像技术是最早出现的图像超分辨率概念。后人对其进行了进一步的研究, 并相继提出了各种图像重建方法。
图像分辨率退化因素主要包括运动变换D、成像系统F、成像系统分辨率R以及加性噪声N的影响, 线性模型可以表示为:。超分辨率图像与图像降分辨率退化模型是可逆过程, 这一过程为图像超分辨率重建技术奠定了理论基础。当前的超分辨率重建技术主要有基于插值、重构和学习的重建算法。基于插值的重建技术出现较早, 它将单副图像看作是平面上的一个点, 在已知像素信息的基础上, 用高分辨率信息进行插值拟合, 这一过程可以用插值核来完成, 算法相对简单。随后陆续出现的迭代反投影等基于重构的算法则是从图像的退化模型出发, 通过提取低分辨率图像中的关键信息, 并结合高分辨率图像的先验知识来约束超分辨率过程。随着人工智能的兴起, 超分辨率重建技术利用了大量的训练数据, 基于数据学习和模型训练, 训练学习不同分辨率图像之间的映射关系预测高分辨率从而实现图像的超分辨率重建。建立映射关系的算法有K-近邻学习算法、回归学习算法和基于深度学习算法等。随着深度学习这一人工智能分支的深入研究, 基于深度学习算法逐渐显露出优势。
二、Python在人工智能方面的应用优势
当前最热门的人工智能编程语言Python是2018年IEEE Spectrum编程语言排行榜之首。作为一门科学研究语言, Python的三大用途是Web开发、数据科学 (包括深度学习、数据分析和数据可视化) 、脚本编程。作为一门开源程序语言, Python开发的程序可以轻松地移植到很多平台。Python在人工智能方面应用的优越性主要是它的开发效率高, 有庞大的第三方数据处理库支撑, 如Numpy、Scipy、MatPlotlib、Torch等。其中Numpy库是Python程序中最基础的库, 它使得Python能够对矩阵进行方便的运算, 这也是Python能够方便处理图像数据的基础工具。Numpy能够改善数学矢量运算性能, 加快程序执行速度。Scipy是一个针对工程和科学库, 它的功能是在Numpy基础提供高效的数学运算, 比如积分、导数、优化等。MatPlotlib是Python的绘图库, 利用MatPlotlib, 仅需要几行代码, 就可以生成直方图、散点图等各种数据图。另外, Python的Broadcasting机制使得形状不同的矩阵和标量之间可以直接运算, 简化了编程代码, 是Python的一大创新。
三、Python在图像超分辨率技术中的应用
SRCNN模型是人工智能领域早期出现的图像超分辨率重建解决方案, 包括图像块的提取和特征表示、特征非线性映射和重建。Python实现SRCNN处理模型, 采用三个卷积核, 第一层为 (9×9×1) , 第二层为 (1×1×64) , 第三层为 (5×5×32) 。首先图像预处理时将图像像素取值归一化处理后放大, 然后将放大后的图像作为卷积网络的输入, 进行插值运算。SRCNN的两个评价指标:PSNR (峰值信噪比) 和SSIM (结构相似性) 。2018年提出的SFTGAN超分辨率重建方法, 使用图像的分割掩码作为超分辨率的先验特征条件, 即模型中有特征空间转换层, 在超分辨图像的合成中使用语义图, 语义图的生成依赖图像分割网络。模型除了低分辨率图像的输入还有一个分割语义图的输入, 语义图约束了图像重建的解空间。Python实现SFTGAN模型的结构代码:
(1) 调用Torch的nn.Sequential容器快速搭建神经网络, 继承了Module的神经网络结构, 按构造顺序对网络进行添加。
self.res=B.sequential (conv0, conv1, conv2) #sequential容器组织连接网络
(2) 定义模型架构、网络的卷积层数和blocks。
(3) 定义核心的SFTLayer层, 定义空间特征变换映射, 部分核心组成如下:
SFTLayer特征转换模块是网络的核心部分, 它简化了模型的训练复杂度。
和另一应用广泛的矩阵运算工具Matlab相比, Python实现图像超分辨率算法的优点是有丰富的插件可以调用。在本例中, Python调用Torch快速搭建神经网络, 调用Opencv处理图像格式, 运用numpy进行计算, 这些工具给Python开发提供了很大的便利, 也是Python能在人工智能领域占据榜首的重要因素。
摘要:图像超分辨率重建技术是低分辨率图像经过一系列算法处理后转换成高分辨率图像的过程, 随着图像数据的应用领域不断延伸, 这一技术也逐渐成了图像处理研究热点之一。近几年Python语言在人工智能领域逐渐占领榜首, 它的优越性在于强大的第三方数据处理工具的支持。本文在图像超分辨率重建技术发展和Python语言特点的基础上, 介绍了Python语言在实现超分辨率图像中的应用。
关键词:超分辨率,图像,Python