我的问题是如何将加权最小二乘问题放入python求解器中。我正在尝试在此处找到的论文(PDF警告)中实施方法。帖子底部有一个问题概述。
特别是我想从以下最小式方程式开始(论文中的19个):
可以在此处找到乳胶公式:
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.leastrongquares,但是在优化后,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代表的每个像素处的反照率/强度。
在这个问题中,我只想求解方程的theta
元素,该元素可以通过加权最小二乘求解。
事实证明,我严重地思考了这个问题。可以将其分解为形式AX = B的简单线性解决方案。查看错误方程时,在这种情况下:
argmin(THETA) sum(W * ||PSI * THETA - I||^2)
我们只能通过均方根内的零件分配重量。我们的方程式最终是:
W * PSI * THETA = W * I
我们可以使用您喜欢的线性求解器(即共轭梯度下降)