实例:Tikhonov 正则化模型用于图片去噪
对于真实图片 和带噪声的图片 (其中 是高斯白噪声)。 Tikhonov 正则化模型为:
其中 , 分别表示 在水平和竖直方向上的向前差分, 为正则化系数。 上述优化问题的目标函数中,第二项要求恢复的 有较好的光滑性,以达到去噪的目的。 注意到上述目标函数是可微的,我们利用结合BB步长和非精确搜索的 的梯度下降对其进行求解。
目录
图片和参数准备
设定随机种子。clear;
seed = 97006855;
ss = RandStream('mt19937ar','Seed',seed);
RandStream.setGlobalStream(ss);
载入未加噪的原图作为参考,记录为 u0 。u = load ('tower.mat');
u = u.B1;
u = double(u);
[m,n] = size(u);
u0 = u;
生成加噪的图片,噪声 的每个元素服从独立的高斯分布 ,并对每个像素进行归一化处理(将像素值转化到[0,1]区间内)。注意到 MATLAB 的 imshow 函数(当第二个参数设定为空矩阵时),能够自动将矩阵中最小的元素对应到黑色,将最大的元素对应为白色。u = u + 20*randn(m,n);
maxu = max(u(:)); minu = min(u(:));
u = (u - minu)/(maxu - minu);
参数设定,以一个结构体提供各参数,分别表示 ,梯度和函数值的停机标准,输出的详细程度,和最大迭代次数。opts = struct();
opts.xtol = 1e-8;
opts.gtol = 1e-6;
opts.ftol = 1e-16;
opts.record = 1;
opts.maxit = 200;
求解正则化优化问题
分别取正则化系数为 和 ,利用带BB 步长的梯度下降求解对应的优化问题,见 。lambda = 0.5;
fun = @(x) TV(x,u,lambda);
[x1,~,out1] = fminGBB(u,fun,opts);
lambda = 2;
fun = @(x) TV(x,u,lambda);
[x2,~,out2] = fminGBB(u,fun,opts);
结果可视化,将不同正则化系数的去噪结果以图片形式展示。subplot(2,2,1);
imshow(u0,[]);
title('原图')
subplot(2,2,2);
imshow(u,[]);
title('高斯噪声')
subplot(2,2,3);
imshow(x1,[]);
title('\lambda = 0.5')
subplot(2,2,4);
imshow(x2,[]);
title('\lambda = 2')
print(gcf,'-depsc','tv.eps')
Tikhonov 正则化模型的目标函数值和梯度计算
该无约束优化问题的目标函数为:
function [f,g] = TV(x,y,lambda)
% $y, \lambda$ 分别表示带噪声图片和正则化参数, |f| , |g| 表示在 |x| 点处的目标函数值和梯度。
%
% 第一项 $\frac{1}{2}\|x-y\|_F^2$ 用于控制去噪后的图片 $x$和带噪声的图片 $y$之间的距离。
f = .5*norm(x - y, 'fro')^2;
计算两个方向上的离散差分, , 。[m,n] = size(y);
dx = zeros(m,n); dy = zeros(m,n); d2x = zeros(m,n);
for i = 1:m
for j = 1:n
ip1 = min(i+1,m); jp1 = min(j+1,n);
im1 = max(i-1,1); jm1 = max(j-1,1);
dx(i,j) = x(ip1,j) - x(i,j);
dy(i,j) = x(i,jp1) - x(i,j);
离散的拉普拉斯算子 d2x : 。d2x(i,j) = x(ip1,j) + x(im1,j) + x(i,jp1) + x(i,jm1) - 4*x(i,j);
end
end
计算目标函数的第二项(Tikhonov 正则化)并与第一项合并得到当前点处的目标函数值。f = f + lambda * (norm(dx,'fro')^2 + norm(dy,'fro')^2);
目标函数的梯度可以解析地写出:
g = x - y - 2*lambda*d2x;
end----------- fminBB -----------
Iter tau f(X) nrmG XDiff FDiff ls-Iter
1 1.00e-03 2.629222e+03 1.45e+02 5.95e-03 8.00e-03 1
2 1.51e-01 9.175358e+02 4.11e+01 8.91e-01 6.51e-01 1
3 1.64e-01 7.462106e+02 1.84e+01 2.75e-01 1.87e-01 1
4 1.72e-01 7.065740e+02 1.01e+01 1.29e-01 5.30e-02 1
5 2.69e-01 6.907343e+02 6.47e+00 1.11e-01 2.24e-02 1
6 2.07e-01 6.873219e+02 4.80e+00 5.47e-02 4.93e-03 1
7 1.71e-01 6.855923e+02 2.75e+00 3.34e-02 2.51e-03 1
8 1.22e-01 6.849654e+02 1.56e+00 1.37e-02 9.13e-04 1
9 1.90e-01 6.845722e+02 1.11e+00 1.21e-02 5.73e-04 1
10 5.10e-01 6.841900e+02 4.77e-01 2.31e-02 5.57e-04 1
11 6.50e-01 6.843040e+02 1.69e+00 1.27e-02 1.66e-04 1
12 1.24e-01 6.841453e+02 1.81e-01 8.52e-03 2.32e-04 1
13 1.13e-01 6.841432e+02 5.07e-02 8.32e-04 2.93e-06 1
14 1.14e-01 6.841430e+02 4.34e-02 2.35e-04 3.96e-07 1
15 7.89e-01 6.841422e+02 1.17e-02 1.40e-03 1.13e-06 1
16 7.62e-01 6.841422e+02 1.12e-02 3.65e-04 1.64e-08 1
17 4.27e-01 6.841422e+02 4.78e-03 1.94e-04 3.00e-08 1
18 3.20e-01 6.841422e+02 7.08e-03 6.24e-05 1.23e-09 1
19 1.43e-01 6.841422e+02 1.85e-03 4.14e-05 3.98e-09 1
20 1.15e-01 6.841422e+02 2.94e-04 8.64e-06 2.88e-10 1
21 1.16e-01 6.841422e+02 2.48e-04 1.39e-06 1.33e-11 1
22 3.12e-01 6.841422e+02 1.63e-04 3.16e-06 2.30e-11 1
23 8.69e-01 6.841422e+02 4.40e-05 5.76e-06 1.80e-11 1
24 8.68e-01 6.841422e+02 2.26e-04 1.56e-06 4.33e-12 1
25 1.57e-01 6.841422e+02 7.42e-05 1.45e-06 4.21e-12 1
26 1.21e-01 6.841422e+02 1.10e-05 3.65e-07 4.72e-13 1
27 1.18e-01 6.841422e+02 5.44e-06 5.26e-08 1.44e-14 1
28 1.58e-01 6.841422e+02 2.77e-06 3.51e-08 4.98e-15 1
29 3.05e-01 6.841422e+02 9.32e-07 3.45e-08 1.99e-15 1
----------- fminBB -----------
Iter tau f(X) nrmG XDiff FDiff ls-Iter
1 1.00e-03 1.026495e+04 5.71e+02 2.38e-02 3.18e-02 1
2 4.19e-02 2.703994e+03 1.83e+02 9.77e-01 7.37e-01 1
3 4.69e-02 1.686197e+03 9.35e+01 3.51e-01 3.76e-01 1
4 4.92e-02 1.377296e+03 5.89e+01 1.88e-01 1.83e-01 1
5 8.74e-02 1.192642e+03 4.67e+01 2.10e-01 1.34e-01 1
6 5.73e-02 1.140369e+03 3.76e+01 1.09e-01 4.38e-02 1
7 4.92e-02 1.106747e+03 2.57e+01 7.54e-02 2.95e-02 1
8 3.31e-02 1.090588e+03 1.73e+01 3.47e-02 1.46e-02 1
9 6.35e-02 1.073568e+03 1.40e+01 4.48e-02 1.56e-02 1
10 1.99e-01 1.046828e+03 9.63e+00 1.13e-01 2.49e-02 1
11 3.21e-01 1.100469e+03 6.46e+01 1.26e-01 5.12e-02 1
12 3.26e-02 1.036404e+03 4.77e+00 8.59e-02 5.82e-02 1
13 3.08e-02 1.035957e+03 2.45e+00 5.99e-03 4.31e-04 1
14 3.13e-02 1.035775e+03 2.30e+00 3.13e-03 1.75e-04 1
15 5.25e-01 1.034289e+03 1.39e+00 4.94e-02 1.43e-03 1
16 3.98e-01 1.034501e+03 2.67e+00 2.26e-02 2.05e-04 1
17 1.56e-01 1.034173e+03 2.23e+00 1.70e-02 3.17e-04 1
18 8.73e-02 1.034226e+03 3.13e+00 7.95e-03 5.09e-05 1
19 3.89e-02 1.034060e+03 5.86e-01 4.96e-03 1.60e-04 1
20 3.39e-02 1.034054e+03 2.25e-01 8.11e-04 6.05e-06 1
21 3.67e-02 1.034052e+03 2.01e-01 3.37e-04 1.66e-06 1
22 5.22e-02 1.034050e+03 1.83e-01 4.27e-04 1.93e-06 1
23 5.19e-01 1.034040e+03 1.89e-01 3.86e-03 1.02e-05 1
24 2.48e-01 1.034053e+03 9.94e-01 1.91e-03 1.30e-05 1
25 4.91e-02 1.034043e+03 6.13e-01 1.99e-03 9.47e-06 1
26 3.05e-02 1.034038e+03 6.78e-02 7.62e-04 5.60e-06 1
27 3.08e-02 1.034038e+03 5.74e-02 8.52e-05 1.26e-07 1
28 1.24e-01 1.034037e+03 3.79e-02 2.91e-04 2.93e-07 1
29 2.39e-01 1.034037e+03 2.80e-02 3.69e-04 2.82e-07 1
30 4.92e-01 1.034037e+03 3.50e-02 5.62e-04 2.21e-07 1
31 6.05e-01 1.034039e+03 3.63e-01 8.63e-04 2.69e-06 1
32 4.59e-02 1.034037e+03 1.54e-01 6.79e-04 2.29e-06 1
33 3.77e-02 1.034037e+03 4.97e-02 2.36e-04 4.17e-07 1
34 3.33e-02 1.034037e+03 2.53e-02 6.76e-05 5.49e-08 1
35 5.37e-02 1.034037e+03 1.11e-02 5.55e-05 2.33e-08 1
36 8.19e-02 1.034037e+03 5.12e-03 3.71e-05 5.67e-09 1
37 9.77e-02 1.034037e+03 8.37e-03 2.04e-05 2.64e-10 1
38 3.33e-02 1.034037e+03 2.60e-03 1.14e-05 1.13e-09 1
39 3.34e-02 1.034037e+03 2.39e-03 3.55e-06 2.04e-10 1
40 4.07e-02 1.034037e+03 2.27e-03 3.96e-06 2.18e-10 1
41 8.42e-01 1.034037e+03 1.01e-03 7.81e-05 2.19e-09 1
42 7.26e-01 1.034037e+03 1.70e-02 2.98e-05 4.70e-09 1
43 4.77e-02 1.034037e+03 9.71e-03 3.31e-05 3.19e-09 1
44 3.06e-02 1.034037e+03 1.46e-03 1.21e-05 1.42e-09 1
45 3.13e-02 1.034037e+03 1.08e-03 1.87e-06 5.61e-11 1
46 1.10e-01 1.034037e+03 2.20e-04 4.85e-06 6.90e-11 1
47 1.24e-01 1.034037e+03 9.48e-05 1.11e-06 2.73e-12 1
48 1.01e-01 1.034037e+03 6.96e-05 3.89e-07 2.97e-13 1
49 7.62e-02 1.034037e+03 8.56e-05 2.16e-07 3.25e-14 1
50 3.34e-02 1.034037e+03 2.35e-05 1.17e-07 1.16e-13 1
51 3.26e-02 1.034037e+03 2.10e-05 3.13e-08 1.58e-14 1
52 3.88e-02 1.034037e+03 1.99e-05 3.32e-08 1.63e-14 1
53 7.31e-01 1.034037e+03 1.41e-05 5.94e-07 1.53e-13 1
54 5.04e-01 1.034037e+03 7.10e-05 2.90e-07 9.95e-14 1
55 1.24e-01 1.034037e+03 1.97e-04 3.60e-07 4.57e-13 1
56 3.18e-02 1.034037e+03 1.43e-05 2.56e-07 5.71e-13 1
57 3.05e-02 1.034037e+03 6.92e-06 1.78e-08 4.17e-15 1
58 3.75e-02 1.034037e+03 4.43e-06 1.06e-08 1.32e-15 1
59 9.71e-02 1.034037e+03 2.37e-06 1.76e-08 1.32e-15 1
60 9.63e-02 1.034037e+03 1.60e-06 9.32e-09 2.20e-16 1
61 1.92e-01 1.034037e+03 1.36e-06 1.25e-08 6.59e-16 1
62 1.28e-01 1.034037e+03 1.53e-06 7.12e-09 0.00e+00 1
结果分析
首先针对图片去噪的效果进行分析。我们发现利用 Tikhonov 正则化模型可以有效地去除图片中的噪声。 当正则化系数 增大时,去噪的效果逐渐增强,但是图片中的物体边界也逐渐模糊。
同时我们也对带BB 步长的梯度下降法在其中的表现进行分析:在这两个问题中 BB 步长的梯度下降法都以非常迅速地速度收敛到了最优值。当最终收敛时,我们看到梯度的范数 nrmG 已经很小,这表明算法有较好的收敛性。同时注意到,虽然我们采用了回退法的线搜索方法, 但是在上面的应用中 BB 步长总是自然地满足了线搜索准则的要求,因此没有进行额外的步长衰减 (每一步的步长试探次数 ls-Iter 均为1)。
参考页面
在此页面中我们利用梯度法求解模型,算法详见 带BB步长线搜索的梯度法 。
版权声明
此页面为《最优化:建模、算法与理论》、《最优化计算方法》配套代码。 代码作者:文再文、刘浩洋、户将,代码整理与页面制作:杨昊桐。
著作权所有 (C) 2020 文再文、刘浩洋、户将