首页 > 其他分享 >【Tikhonov】基于Tikhonov正则化的图像超分辨率重建

【Tikhonov】基于Tikhonov正则化的图像超分辨率重建

时间:2022-12-16 19:44:24浏览次数:33  
标签:Tikhonov object Rs double 分辨率 FFT 正则

1.软件版本

matlab2013b

2.系统原理

对于图像超分辨率重建的问题,常常涉及到大规模的方程组求解,且方程的维数往往很大。所以正则化方法的求解算法中常用到迭代算法。这里主要说明一下以迭代Tikhonov正则化方法为例,该方法是利用正则参数的某些先验性质,同时对精确解施加光滑性的条件,按照后验选择策略从而改进收敛速度并决定正则参数。

首先进行收敛性分析。直接得到复原结果

但是由于逆矩阵的求解十分复杂,本文采用迭代下降算法求解复原图像,迭代过程满足

 

 

 

3.部分源码

function [object,yy,err,Iter_Max]=func_Tikhonov(I1);

Images = I1;
Fact_cos_sin = func_cos_sin(Images);
H = func_fuzzy_gauss(I1,1);

%参数初始化
Iter_Max = 30;
[Rs,Cs,Ks] = size(Images);
fft_operator = fft2([0,-1,0;-1,4,-1;0,-1,0],Rs,Cs);
fft_images = fft2(Images,Rs,Cs);
fft_nimages = fft2(I1,Rs,Cs);
FFT_H = fft2(H,Rs,Cs);
FFT_H = FFT_H.*Fact_cos_sin;
CONJ_FFT_H = conj(FFT_H);
det_FFT_H = abs(FFT_H);
det_FFT_p = abs(fft_operator);
I2 = I1;
Y = I1;
mark = 0;
%迭代过程
for k=1:Iter_Max
% 求正则化参数 AL
A = H;
B = imfilter(Y,[0,-1,0;-1,4,-1;0,-1,0],'replicate');
N = imfilter(I2,A,'replicate');
a1 = norm((double(Y)-double(N)),2).^2;
a2 = norm(double(Y),2).^2;
AL = log(a1/a2/1e2+1);

FFT_X1 = fft2(I2,Rs,Cs);
FFT_X1_t = CONJ_FFT_H.*FFT_X1;
FFT_object = FFT_X1_t+CONJ_FFT_H.*fft_images-FFT_X1_t.*(det_FFT_H.^2+AL*det_FFT_p.^2);
object = abs(ifft2(FFT_object));

object_max = max(max(object)); %标定
object_min = min(min(object));
object =(object-object_min)*255/(object_max-object_min);
object = uint8(object);
I3 = object;
t = I2;
I2 = I3;
diff =(norm(double(I3)-double(t),2).^2)/((norm(double(t),2)).^2);
yy(k) = AL;
err(k) = diff;
end

4.仿真结论

这个部分的仿真效果如下所示:

 

 A05-19

标签:Tikhonov,object,Rs,double,分辨率,FFT,正则
From: https://www.cnblogs.com/matlabfpga/p/16988177.html

相关文章