本发明涉及压缩成像技术领域,特别涉及一种基于深度神经网络的压缩编码孔径成像方法及系统。
背景技术:
压缩成像(compressedimaging,ci)作为压缩感知(compressedsensing,cs)在成像领域的重要应用,利用自然界中大部分图像在某些稀疏基上具有稀疏性或者可压缩性,通过较少的线性测量值重建出原始图像。
2006年,rice大学研制出的单像素相机(single-pixelcamera,spc),作为第一个成功的ci实例。但是spc架构的最大的问题在于一次曝光只能得到一个测量值,因此spc无法在高分辨率应用领域中广泛使用。2009年,marcia等人首先提出压缩编码孔径成像(compressedcodedapertureimaging,ccai),它可以在单次曝光条件下获取低分辨率压缩测量。其基本思想是首先生成一种随机编码孔径,其实质上是引入比针孔更复杂的点扩散函数,透过编码孔径之后在探测器上形成投影图像,这些图像叠加得到退化后的编码测量,然后利用探测器上记录的低分辨率测量值进行非线性重建。
与spc相比,编码孔径易于构建,并融入实用、稳健和紧凑的光学系统设计中,更重要的是,ccai通过单次曝光完成所有测量值的记录。在随后的工作中,ccai方法可以扩展到视频成像,高分辨率成像等。
但是,现有ccai的重建方法在针对大尺度图像的压缩重建时,仍存在显著的瓶颈:其一,利用显式矩阵构造的前向模型的精度高,但是其测量矩阵维数随图像尺寸的增加呈几何级增加,给测量矩阵的存储传输及计算方面带来严重的负担;其二,利用构造的前向算符可以避免矩阵维数过大的问题,但其只能通过梯度下降等优化方法进行求解,并且由于前向算符及其伴随算符的匹配度较差,导致重建图像的质量不高。其三,由于重建过程是通过迭代求解一个优化问题来完成的,计算复杂度非常高,耗时较长。
技术实现要素:
本发明的目的在于解决上述背景技术部分存在的问题,以改善压缩编码孔径成像重建的时间限制。
为实现以上目的,一方面,本发明采用一种基于深度神经网络的压缩编码孔径成像方法,包括如下步骤:
训练时,将训练集中每张图片裁剪成尺寸相同的子图像块,总共可得到d个尺寸相同的子图像块;
分别将每个子图像块与编码孔径进行卷积后,进行下采样操作,得到与每个子图像块对应的测量值和测量矩阵;
将每个子图像块及其对应的测量值作为训练数据对,并将训练数据对作为深度神经网络的输入,对该深度神经网络进行训练,得到训练好的深度神经网络;
测试时,将待重建图像的测量值作为所述训练好的深度神经网络的输入,进行图像重建。
进一步地,所述分别将每个子图像块与编码孔径进行卷积后,进行下采样操作,得到与每个子图像块对应的测量值和测量矩阵,包括:
根据压缩编码孔径的观测矩阵成像模型计算每个子图像块的对应的测量值,其压缩编码孔径的观测矩阵成像模型为:
y=vec(y)=vec(d↓(xtrue*h(cca))+e),
其中,vec(·)为向量化算子,
设
其中,ch是大小为n2×n2的对角矩阵,其对角元素为ch=diag(h(cca)),
将转换后的压缩编码孔径的观测矩阵成像模型表示为:
其中,
进一步地,在所述分别将每个子图像块与编码孔径进行卷积后,根据给定的下采样率进行下采样,得到与每个子图像块对应的测量值之前,还包括:
对所述测量矩阵r进行奇异值分解:r=u(∑0)vt,其中,∑表示维数为m2×n2的半正定对角矩阵,0表示m2×(n2-m2)维元素全为0的矩阵,
将所述压缩编码孔径的观测矩阵成像模型转换为:
y=rx=u(∑0)vtx=u(∑0)(v1v2)tx=u∑v1tx
其中,
令ysvd=∑-1uty,rsvd=v1t,获得新的测量系统:ysvd=rsvdx,ysvd表示优化后的测量值,rsvd表示优化后的测量矩阵。
进一步地,所述深度神经网络为ista-net-plus。
进一步地,在所述将待重建图像的测量值作为所述训练好的深度神经网络的输入,进行图像重建之前,还包括对所述训练好的深度神经网络模型进行测试,具体为:
将基准数据集中的测试集图片裁剪成p个尺寸相同的测试子图像块,该测试子图像块的尺寸与所述子图像块的尺寸相同;
分别将每个测试子图像块与所述编码孔径进行卷积后,进行下采样操作,得到与每个测试子图像块对应的测试测量值和测量矩阵;
将所述测试测量值作为所述训练好的深度神经网络模型的输入,完成对所述训练好的深度神经网络模型的测试。
另一方面,采用一种基于深度神经网络的压缩编码孔径成像系统,包括:裁剪模块、测量值计算模块、训练模块以及重建模块;
裁剪模块用于训练时将原始图片集中每个原始图片裁剪成d个尺寸相同的子图像块;
测量值计算模块用于分别将每个子图像块与编码孔径进行卷积后,进行下采样操作,得到与每个子图像块对应的测量值和测量矩阵;
训练模块用于将每个子图像块及其对应的测量值作为训练数据对,并将训练数据对作为深度神经网络的输入,对该深度神经网络进行训练,得到训练好的深度神经网络;
重建模块用于将待重建图像的测量值作为所述训练好的深度神经网络的输入,进行图像重建。
进一步地,所述测量值计算模块具体用于:
根据压缩编码孔径的观测矩阵成像模型计算每个子图像块的对应的测量值,其压缩编码孔径的观测矩阵成像模型为:
y=vec(y)=vec(d↓(xtrue*h(cca))+e),
其中,vec(·)为向量化算子,
设
其中,ch是大小为n2×n2的对角矩阵,其对角元素为ch=diag(h(cca)),
将转换后的压缩编码孔径的观测矩阵成像模型表示为:
其中,
进一步地,还包括与测量值计算模块输入端连接的预处理模块,预处理模块用于:
对所述测量矩阵r进行奇异值分解:r=u(∑0)vt,其中,∑表示维数为m2×n2的半正定对角矩阵,0表示m2×(n2-m2)维元素全为0的矩阵,
将所述压缩编码孔径的观测矩阵成像模型转换为:
y=rx=u(∑0)vtx=u(∑0)(v1v2)tx=u∑v1tx
其中,
令ysvd=∑-1uty,rsvd=v1t,获得新的测量系统:ysvd=rsvdx,ysvd表示优化后的测量值,rsvd表示优化后的测量矩阵。
进一步地,所述深度神经网络为ista-net-plus。
进一步地,还包括测试模块,测试模块输入端与所述训练模块连接、输出端与所述重建模块连接;
测试模块用于利用基准数据集中的测试集图片对所述训练好的深度神经网络模型进行测试。
与现有技术相比,本发明存在以下技术效果:本发明首先将尺寸较大的原始图片裁剪成多个尺寸相同的子图像块,子图像块经过与编码孔径进行卷积和下采样处理,得到与子图像块对应的测量值;通过预处理步骤,得到优化后的测量值和测量矩阵;然后将子图像块与其测量值构成数据对,对深度学习架构进行训练,得到最优的网络参数;最后直接将图像的测量值作为网络的输入,即可在非迭代的情况下进行图像的重建。本方案通过将深度学习引入压缩编码孔径的重建过程,利用图像与其测量值构成的数据对来训练深度学习架构,在图像对的重建过程通过非迭代完成,实现从低分辨率测量值的实时重建,改善压缩编码孔径成像重建的时间限制。
附图说明
下面结合附图,对本发明的具体实施方式进行详细描述:
图1是一种基于深度神经网络的压缩编码孔径成像方法的流程示意图;
图2是ista-net-plus的深度学习架构的流程图;
图3是本发明中成像系统的原理框图;
图4是一种基于基于深度神经网络的压缩编码孔径成像系统的结构示意图;
图5是单次重建实验结果示意图。
具体实施方式
为了更进一步说明本发明的特征,请参阅以下有关本发明的详细说明与附图。所附图仅供参考与说明之用,并非用来对本发明的保护范围加以限制。
如图1所示,本实施例公开了一种基于深度神经网络的压缩编码孔径成像方法,包括如下步骤s1-s4:
s1、训练时,将训练集中原始图片集中每个原始图片裁剪成d个尺寸相同的子图像块;
需要说明的是,本实施例中的随机裁剪相当于建立每个因子特征与相应类别的权重关系,减弱背景(或噪音)因子的权重,也就可以产生更好的学习效果,增加模型稳定性。
应当理解的是,本实施例中将原始图片裁剪的子图像块的数量越多,所构建的数据集越大,相对来说训练出来的结果会较好,但同时也应考虑数据集越大训练过程则越耗时。
s2、分别将每个子图像块与编码孔径进行卷积后,进行下采样操作,得到与每个子图像块对应的测量值;
s3、将每个子图像块及其对应的测量值作为训练数据对,并将训练数据对作为深度神经网络的输入,对该深度神经网络进行训练,得到训练好的深度神经网络;
s4、将待重建图像的测量值作为所述训练好的深度神经网络的输入,进行图像重建。
需要说明的是,本实施例中通过将图像及其对应的测量值作为一对训练对,从而构建出训练对集合,利用训练对集合对事先选定的深度学习框架进行训练,得到最优的网络参数,从而得到训练好的深度神经网络,然后将待重建图像对应的测量值作为训练好的深度神经网络的输入,即可在非迭代的情况下从低分辨率测量值进行原始图像的重建。
具体地,本实施例中将原始图片
具体地,测量值的计算过程对应于marcia等人提出的cca成像机制。假设压缩编码孔径的观测模型可表示为:
y=vec(y)=vec(d↓(xtrue*h(cca))+e),
其中,vec(·)为向量化算子,
设
其中,ch是大小为n2×n2的对角矩阵,其对角元素为ch=diag(h(cca)),
因此,压缩编码孔径的观测矩阵成像模型可表示为:
其中,
具体地,本实施例实验所用的训练集中有91张原始图片(原始图片尺寸不是完全一样的),在matlab或者python中,读取每一张图片之后,该处设置子图像块的大小是33×33,每隔7个像素进行一次裁剪。对这91张图片都进行这样的操作,得到子图像块的总数为d,本实施例中得到的训练的子图像块总数是85591。然后,每个图像块和编码孔径先进行卷积,再进行下采样得到测量值y,生成训练数据对
进一步地,在上述步骤s3:在所述分别将每个子图像块与编码孔径进行卷积后,根据给定的下采样率进行下采样,得到与每个子图像块对应的测量值之前,还包括对所述深度神经网络:
对所述测量矩阵r进行奇异值分解:r=u(∑0)vt,其中,∑表示维数为m2×n2的半正定对角矩阵,0表示m2×(n2-m2)维元素全为0的矩阵,
将所述压缩编码孔径的观测矩阵成像模型转换为:
y=rx=u(∑0)vtx=u(∑0)(v1v2)tx=u∑v1tx
其中,
令ysvd=∑-1uty,rsvd=v1t,获得新的测量系统:ysvd=rsvdx,ysvd表示优化后的测量值,rsvd表示优化后的测量矩阵。
其中,下采样率可以是不固定的,采样率越高,测量值中包含的信息就越多,重建结果会越好。单次重建实验选择的是30%,图像块的大小是33×33,拉成列向量就是1089×1,因此测量值的维数就是1089×30%=327。
需要说明的是,本方案的设计思路是通过深度神经网络来构造反向算符rb,实现从测量值中快速重建
进一步地,如图2所示,本方案中所采用的深度神经网络为ista-net-plus,迭代收缩-阈值算法(iterativeshrinkage-thresholdingalgorithm,ista)是一种流行的一阶近端方法,适合解决大尺度图像的线性逆问题。主要通过解决以下优化问题完成原始图像的重建:
其中,
具体来说,ista通过在以下更新步骤之间迭代来解决根据图像的测量值进行图像重建的问题:
r(k)=x(k-1)-ρrt(rx(k-1)-y),
其中,k是ista的迭代索引值,ρ是步长。
但是,对于更复杂的非正交(或甚至非线性)变换,获得x(k)仍然是困难的。并且,ista通常需要多次迭代才能获得令人满意的结果,因此计算量很大。所有参数如ρ和λ是预定义的(不随k变化),调整先验通常具有挑战性。
zhang等人通过神经网络结构构建了基于深度网络的压缩感知模型,将先前的ista更新步骤映射到由固定数量的阶段组成的深层网络架构,每个对应于传统ista中的一次迭代,提出ista-net和ista-net的改进版本ista-net-plus。与传统压缩感知算法不同,在压缩感知网络模型中参数无需提前预定义,网络模型会计算出最优参数,且迭代次数远小于常规压缩感知的迭代算法。主要分为两个模块:
r(k)模块:它用于产生立即重建结果r(k)。特别注意的是,rt(rr(k-1)-y)基本上是数据保真度项
r(k)=x(k-1)-ρ(k)rt(rx(k-1)-y),
x(k)模块:输入为r(k),输出为x(k),则有:
其中,
进一步地,利用训练对集合对所述深度神经网络模型进行训练,得到训练好的深度神经网络之后,还需对训练好的深度神经网络进行测试:具体为:
将基准数据集中的测试集图片裁剪成p个尺寸相同的测试子图像块,该测试子图像块的尺寸与所述子图像块的尺寸相同;
分别将每个测试子图像块与所述编码孔径进行卷积后,根据素数给定的下采样率进行下采样,得到与每个测试子图像块对应的测试测量值;
将所述测试测量值作为所述训练好的深度神经网络模型的输入,完成对所述训练好的深度神经网络模型的测试。
需要说明的是,本实施例中p的取值与d的取值不同,d是训练集中所有图像得到图像块的总数,p可以只是测试集中任意一张图片得到的图像块数。
需要说明的是,在测试时,选用广泛使用的基准数据集:set11,它们分别具有11个灰度图像。将测试集图片得到的测量值直接作为已经训练好的深度神经网络的输入,可在较短的时间内完成重建过程。
进一步,上述步骤s4:将待重建图像的测量值作为所述训练好的深度神经网络的输入,进行图像重建,具体包括步骤s41-s4:
s41、将待重建图像裁剪成p个尺寸相同的子图像块;
s42、分别将每个子图像块与编码孔径进行卷积后,进行下采样操作,得到与每个子图像块对应的测量值;
s43、将测量值输入所述训练好的深度神经网络,进行所述待重建图像的重建。
本实施例在前端测量值的获取中主要考虑测量矩阵的物理可实现的性质,后端重建过程更多的考虑对测量矩阵和测量值进行优化,以提高重建性能。通过将深度学习引入压缩编码孔径的重建过程,通过图像与测量值构成的数据对训练深度学习架构,在测试阶段的重建过程通过非迭代完成,实现从低分辨率测量值的实时重建。并且,在训练阶段,增加预处理模块,来增加前向算符和反向算符之间的匹配度,以提高重建性能。
如图3-4所示,本实施例公开了一种基于深度神经网络的压缩编码孔径成像系统,包括:裁剪模块10、测量值计算模块20、训练模块30以及重建模块40;
裁剪模块10用于将训练集中每个原始图片裁剪,总共可得到d个尺寸相同的子图像块;
测量值计算模块20用于分别将每个子图像块与编码孔径进行卷积后,进行下采样操作,得到与每个子图像块对应的测量值和测量矩阵;
训练模块30用于训练深度神经网络,将每个子图像块及其对应的测量值作为训练数据对,并将训练数据对作为深度神经网络的输入,对该深度神经网络进行训练,得到训练好的深度神经网络;
重建模块40用于测试时,将待重建图像的测量值作为所述训练好的深度神经网络的输入,可直接进行图像重建。
进一步地,还包括测试模块50,测试模块50输入端与所述训练模块30连接、输出端与所述重建模块40连接;
测试模块50用于利用基准数据集中的测试集图片对所述训练好的深度神经网络模型进行测试。
具体地,测量值计算模块20具体用于:
根据压缩编码孔径的观测矩阵成像模型计算每个子图像块的对应的测量值,其压缩编码孔径的观测矩阵成像模型为:
y=vec(y)=vec(d↓(xtrue*h(cca))+e),
其中,vec(·)为向量化算子,
设
其中,ch是大小为n2×n2的对角矩阵,其对角元素为ch=diag(h(cca)),
因此,压缩编码孔径的观测矩阵成像模型可表示为:
其中,
具体地,还包括与测量值计算模块20输出端连接的预处理模块,预处理模块用于:
对所述测量矩阵r进行奇异值分解:r=u(∑0)vt,其中,∑表示维数为m2×n2的半正定对角矩阵,0表示m2×(n2-m2)维元素全为0的矩阵,
将所述压缩编码孔径的观测矩阵成像模型转换为:
y=rx=u(∑0)vtx=u(∑0)(v1v2)tx=u∑v1tx
其中,
令ysvd=∑-1uty,rsvd=v1t,获得新的测量系统:ysvd=rsvdx,ysvd表示优化后的测量值,rsvd表示优化后的测量矩阵。
需要说明的是,本方案中深度神经网络采用ista-net-plus,是因为ista-net-plus框架与其他框架相比,重建性能较好,而且与本方案中的重建过程较为匹配。
需要说明的是,如图3所示,本实施例将ista-net-plus用于压缩编码孔径的成像过程中,其核心思想是通过学习深度神经网络来构造反向算符rb,实现从测量值中快速重建
为验证本方案的优越性,进行单次重建实验如下:
首先采样率sr定义为
图5所示为不同方法中下采样率为30%时264×264boats和528×528flinstones的重建结果。从图5中可以明显看出,在采样率相同时,与传统cca相比,本方法cca-svd的重建质量更高,并消除了传统cca由于块处理带来的块效应。和cca-orth相比,本方法在测量值的获取中,不用显式构造行正交的矩阵,更有利于硬件的实施,同时得到较好的重建质量。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。