我的问题是如何将加权最小二乘问题放入python求解器中。我试图在文件here中实施这些方法(PDF警告)。帖子底部有一个问题概述。
具体来说,我想从以下最小化方程(本文中的19)开始:
latex formula can be found here:
\frac{min}{\Theta \epsilon M} \sum_{j=1}^{n} \sum_{i=1}^{m}(w(i,j))\left | \Psi(i,j)*\Theta (i,j) - I(i,j) \right |^{2}
它表示为加权最小二乘问题
w
,psi
和I
是我的知识,我正在努力解决theta
。
我首先尝试创建一个函数,它接受theta并返回这个等式的总和,就像它在上面所表达的那样。然后我将它传递给scipy.optimize.least_squares,但优化后theta值始终保持不变。我尝试实现一个雅可比,但结果总和爆炸到巨大的负值。我试图在图像上运行它也需要很长时间(我是带有光i的像素j的像素值)。
然后我意识到我几乎肯定会误解如何解决这个问题并且可以使用一些帮助来接近它。我目前的代码如下:def theta_solver(self, theta):
imshape = self.images.shape
sm = 0
for j in j_array:
for i in i_array:
w = self.get_w(i, j, theta)
psi = self.non_diff_smoothing(self.get_psi(i, j))
diff = psi*(theta[i, j]) - self.I[i, j]
res = w*(diff)
sm += res
return sm
def solve_theta(self, theta_guess):
res = scipy.optimize.least_squares(self.theta_solver, theta_guess)
有些东西告诉我,我已经离开基地,因为我正在接近这个问题,我可以用正确的方向指。谢谢你的时间。
问题概述:
这种特殊的视觉方法称为光度立体声。通过拍摄具有不同光源的场景的多个图像,我们可以创建该场景的3D重建
一个问题是1/r^2
照明的衰减取决于与光源的距离,这意味着这不能通过正常的线性解来解决。
本文中记录的方法是用于求解近光光度立体声的非线性方法。它做了两件事:
Z
和在这个问题中,我只是试图解决方程的theta
元素,这可以通过加权最小二乘法求解。
答案 0 :(得分:0)
原来我严重过度思考这个问题。这可以分解为Ax = b形式的简单线性解。在查看误差方程时,在这种情况下:
argmin(THETA) sum(W * ||PSI * THETA - I||^2)
我们可以通过均方根内的部分分配权重。我们的等式最终成为:
W * PSI * THETA = W * I
我们可以使用您最喜欢的线性求解器(即共轭梯度下降)来解决这个问题