⛄一、正则化图像超分辨重建简介
1 超分辨率重建数学模型
设有N帧低分辨率观测图像yk(k=1,2,…,N),图像大小为M×M,将每帧低分辨率(LR)图像yk按列方向排成向量的形式,记作Yk,大小为[M2×1];x为原始高分辨率图像(HR),大小为rM×rM,r为分辨率增大系数,同样按列方向排列成向量的形式,记为X,大小为r2M2×1。图像的降质模型[2]如图1所示,F表示图像的运动矩阵,大小为r2M2×r2M2;H表示成像设备的PSF,大小为r2M2×r2M2;D表示高分辨率到低分辨率的欠采样,大小为M2×r2M2;V表示成像系统引入的噪声,大小为M2×1。
图1 系统成像模型
因此图像的成像模型可以表示为
Yk=DkHkFkX+Vk;k=1,2,…,N (1)
式(1)中下标k表示第k帧图像。成像设备和成像条件相同时,就有∀k,Hk=H,Dk=D。因此式(1)变为
Yk=DHFkX+Vk;k=1,2,…,N (2)
式(2)便是图像超分辨重建模型,即在已知Yk、D、H、Fk、Vk的情况下,如何估算出原始高分辨率图像X。在没有约束条件或者其他有关图像先验知识的限制下,式(2)的超分辨率重建问题是一个典型的反问题。
2 超分辨率图像重建
2.1正则化原理
一般可以采用无约束的最优化方法来解决式(2)这类问题。然而,用这类方法求得的最优解通常并不是唯一的,或者说是不稳定的。为了获得稳定解,通常还要对最优化方法附加某些约束条件,这种解决不适定问题的有约束最优化问题,就称为正则化问题。正则化函数方程如下:
式(3)中:λ为正则化系数,衡量数据项和正则项之间的相对贡献量。当p=1时,(3)式为具有L1范数的正则化问题;当p=2时,(3)式为具有L2范数的正则化问题。L1范数具有提高算法的运算速度等优点[3],所以论文采用L1范数。J为正则化函数,比如Tikhonov和GaussMarkov类型的正则化函数,但这些类型的函数会致使图像的边缘和细节被过度平滑。相反基于总变分的(TV)的正则化函数可以很好的保持图像的边缘和细节信息[4]。TV函数如下
式(4)中Ω表示图像空间,β为足够小的正数。因此式(4)离散化后为
利用变分方法求解式(6),最小化问题转化为求解Euler-Lagrange方程:
2.2 算法流程
根据论文2.1部分阐述,现总结论文算法如下:
(1)初始化迭代次数n=1,步长为1,最大迭代次数为20,利用插值的方法确定初始值X0;
(2)根据式(9)求得
(3)根据式(9)迭代更新,Xn+1=Xn-αGn;
(4)迭代次数n=n+1,若n<20,转到(2),否则转到(5);
(5)结束程序;Xn+1即为重建的高分辨率图像
⛄二、部分源代码
%基于L1范数的自适应双边总变分超分辨率图像序列重建
clear
clc
%% 载入数据
%load text;
%LR = double(text);
%load disk;
%LR = double(disk);
%load eia_lr;
%LR = double(eia_lr);
load text4;
LR = double(text4);
addpath([pwd ‘\LKOFlow’]); %增加搜索路径pwd表示当前路径,后面部分表示当前路径下的文件夹
%% 参数初始化
nuL1BTV = .005;
resFactor = 2; % 采样因子
maxiter = 30;
%% 图像配准
D = RegisterImageSeq( LR );
D = round( D .* resFactor );
D = mod( D, resFactor ) + resFactor;
Dr = floor( D / resFactor );
%% 样条插值放大
[X,Y] = meshgrid( 1 : size( LR, 2 ), 1 : size( LR, 1 ) );
for i = 1 : size( LR, 3 )
LR( :, :, i ) = interp2( X + Dr( i, 1 ), Y + Dr( i, 2 ), LR( :, :, i ), X, Y, ‘*spline’ );
end
[ X, Y ] = meshgrid( 0 : resFactor : ( size( LR, 2 ) - 1 ) * resFactor, …
0 : resFactor : (size( LR, 1 )- 1 ) * resFactor );
[ XI, YI ] = meshgrid( resFactor - 1 : ( size( LR, 2 ) ) * resFactor,…
resFactor - 1 : ( size( LR, 1 ) ) * resFactor );
HR = interp2( X, Y, LR( :, :, 1 ), XI, YI, ‘*spline’ ); % 样条插值得到初始高分辨率图像
%figure(‘name’, ‘插值算法放大结果’, ‘NumberTitle’, ‘off’)
%imshow( uint8( HR ) )
%% L1超分辨率重建
alpha1 =0.5;
I1 = L1ABTVSR1( LR( 2 : end, 2 : end, : ), D, HR, alpha1, resFactor, maxiter,nuL1BTV); % 超分辨率重建图像
figure(‘name’, ‘L1双边总变分算法重建结果’, ‘NumberTitle’, ‘off’)
imshow( uint8( I1 ) )
I = L1ABTVSR( LR( 2 : end, 2 : end, : ), D, HR,resFactor, maxiter); % 超分辨率重建图像
figure(‘name’, ‘L1自适应双边总变分算法重建结果’, ‘NumberTitle’, ‘off’)
imshow( uint8( I ) )
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]刘志文,潘晓露,李一民.L1范数的总变分正则化超分辨率图像重建[J].微处理机. 2012,33(03)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除