このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,大規模な範囲制約付き線形最小二乗最適化問題を解いて,不鮮明なイメージを修正する方法を説明します。この例では,ソルバーベースのアプローチを使用します。問題ベースのアプローチについては,大規模な制約付き線形最小二乗法,問題ベースを参照してください。
興味深いナンバープレートの自動車に乗っている人物の写真があります。
负载optdeblur[m, n] =大小(P);mn = m * n;imshow (P)标题(sprintf (“原始图像,大小%d-by-%d, %d像素”, m, n, mn))
問題は,この写真にブレを追加してからブレを除去しようとすることです。最初のイメージは白黒であり,m行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) < = 5;文本(iy ix (l) (l),“x”)文本(第九(~ l), iy (l ~),' 0 ')文本(x *的(y, 1), 1: y,“……”);文本(1:x, y *的(x, 1),“……”);标题('模糊运算符D (x = 1/11)')
イメージPに行列Dを乗算して,ブレを追加したイメージGを作成します。
G = D * (P (:));图imshow(重塑(G, m, n));标题(模糊图像的)
イメージは判別が困難になり,ナンバープレートを読むことができなくなりました。
ブレを除去するため,ブレを追加する演算子Dが既知であると仮定します。どの程度,ブレを除去して,元のイメージPを復元できるでしょうか。
最も簡単な方法は,次の最小二乗問題をxについて解くことです。
という条件で
この問題では,与えられたブレ追加行列Dを使用して,DxがG=DPに最も近くなるxを求めようとします。解が妥当なピクセル値を表すように,解を0から1に制限します。
磅= 0 (mn, 1);Ub = 1 + lb;索尔= lsqlin (D、G ,[],[],[],[], 磅,乌兰巴托);
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
xpic =重塑(溶胶,m, n);图imshow (xpic)标题(“解模糊图像”)
ブレを除去したイメージは,ブレを追加したイメージよりはるかに鮮明になっています。再び,ナンバープレートを読むことができるようになりました。しかし,ブレを除去したイメージには,右下の舗道の部分にある水平の帯のような不自然さがあります。おそらく,これらの不自然さは,正則化によって除去できます。
正則化は,解を平滑化する方法です。正則化の方法は多数あります。簡単なアプローチとして,次のように目的関数に項を追加します。
という条件で
という項は,生成される二次問題をより安定させます。 を使用して,再び問題を解きます。
另外= speye (mn);sol2 = lsqlin (D + 0.02 *另外,G ,[],[],[],[], 磅,乌兰巴托);
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
xpic2 =重塑(sol2, m, n);图imshow (xpic2)标题(“解模糊正规化的形象”)
この簡単な正則化では,不自然さが除去されないようです。