【发布时间】:2018-05-12 13:35:47
【问题描述】:
我的问题是如何将加权最小二乘问题放入 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 与光 i 的像素值)。
然后我意识到我几乎肯定误解了如何解决这个问题,并且可以使用一些帮助来解决它。我当前的代码如下:
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 元素,它可以通过加权最小二乘法来解决。
【问题讨论】:
标签: python scipy regression linear-algebra