主要内容

基于问题的大规模约束线性最小二乘

这个例子展示了如何通过求解一个大规模有界约束的线性最小二乘优化问题来恢复模糊图像。这个例子使用了基于问题的方法。关于基于求解器的方法,请参见基于求解器的大规模约束线性最小二乘

这个问题

这是一张人们坐在车里的照片,上面有一个有趣的车牌。

负载optdeblur[m, n] =大小(P);mn = m * n;图imshow (P);colormap(灰色);轴图像;标题([int2str(m)“x”int2str (n)' ('int2str(mn))像素的])

图中包含轴。标题为149 x 311(46339)像素的轴包含图像类型的对象。

问题是要采取模糊版本的这张照片,并试图去模糊它。起始图像是黑白的,这意味着它由m x n矩阵P中从0到1的像素值组成。

增加运动

用上面和下面的5个像素平均每个像素来模拟垂直运动的模糊效果。构造一个稀疏矩阵D用一个矩阵乘法模糊。

模糊= 5;mindex = 1:锰;nindex = 1:锰;mindex=[mindex I +1:mn 1:mn- I];nindex = [nindex 1: mn-i i + 1 mn):;结束D =稀疏(mindex nindex 1 /(2 + 1) *模糊);

画一幅D的图。

cla轴ijx = 31;y = 15;xlim ([0, x + 1]);ylim ([0, y + 1]);[ix, iy] = meshgrid (1: (xs-1), 1: (ys-1));L = abs(ix-iy) <=模糊;文本(iy ix (l) (l),“x”)文本(第九(~ l), iy (l ~),' 0 ')文本(xs*one(ys,1),1:ys,“……”);文本(1:xs,ys*one(xs,1),“……”);头衔('模糊运算符D (x = 1/11)'

将图像P乘以矩阵D得到模糊图像G。

G = D * (P (:));图imshow(重塑(G, m, n));

图中包含一个坐标轴。轴包含一个image类型的对象。

图像清晰得多;您无法再读取车牌。

模糊的图像

为了消除模糊,假设你知道模糊算子d,你能多好地消除模糊并恢复原始图像P?

最简单的方法是解一个最小二乘问题x

最小值 D x - G 2 0 x 1

这个问题采用模糊矩阵D给定的,并试图找到x这使得Dx最接近GDP.为了使解表示感象素值,将解限制为从0到1。

x = optimvar (“x”、锰、下界的0,“UpperBound”,1);expr=D*x-G;objec=expr'*expr;blurprob=optim问题(“目标”, objec);索尔=解决(blurprob);
用四轴飞行器解决问题。找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
xpic =重塑(sol.x, m, n);图imshow (xpic)标题(“解模糊图像”

图中包含一个坐标轴。标题为Deblurred Image的轴包含一个Image类型的对象。

去除模糊的图像比模糊的图像清晰得多。您可以再次读取车牌。但是,去除模糊的图像有一些瑕疵,例如右下人行道区域的水平带。也许可以通过正则化来消除这些瑕疵。

正则化

正则化是使解平滑的一种方法。有许多正规化方法。简单的方法是,在目标函数中加入如下项:

最小值 D + ε x - G 2 0 x 1

这个词 ε 使得到的二次问题更稳定。取 ε 0 0 2 然后再解决这个问题。

另外= speye (mn);expr2 = (D + 0.02*addI)*x - G;objec2 = expr2 ' * expr2;blurprob2 = optimproblem (“目标”, objec2);sol2 =解决(blurprob2);
用四轴飞行器解决问题。找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
xpic2 =重塑(sol2.x, m, n);图imshow (xpic2)标题(“解模糊正规化的形象”

图中包含一个轴。标题为“去模糊正则化图像”的轴包含类型为“图像”的对象。

显然,这个简单的正则化不会删除工件。

相关话题