需要帮助把一个最小化方程放入加权最小二乘法吗

2024-04-19 22:06:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是如何将加权最小二乘问题放入python解算器中。我正在尝试实现论文foundhere(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}

它表示为加权最小二乘问题。
wpsiI是我的知识,我正在尝试求解theta。你知道吗

一开始我试着创建一个函数,它取θ,返回这个方程的和,和上面表达的一样。然后我把它传给scipy.optimize.最小二乘法,但优化后θ值始终保持不变。我试着实现一个雅可比矩阵,但是得到的和会爆炸成巨大的负值。当我用一个像素来表示图像时(我用一个像素来表示图像)。你知道吗

然后我意识到我几乎肯定误解了如何解决这个问题,需要一些帮助来解决它。我目前的代码如下:

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) 

有些事情告诉我,我在处理这个问题的方法上有点偏离了底线,我可以用一根手指来指出正确的方向。谢谢你的时间。你知道吗

问题概述:

这种特殊的视觉方法称为光度立体。通过使用不同光源拍摄多幅场景图像,我们可以创建该场景的三维重建。
其中一个问题是,照明中的1/r^2衰减取决于与光源的距离,这意味着这不能通过正常的线性解决方案来解决。
本文提出的方法是一种求解近光立体光度的非线性方法。它有两个功能:

  • 它解决了
  • 通过交替解算器,由θ表示的每个像素处的反照率/强度。你知道吗

在这个问题上,我只想解方程的theta元素,它可以通过加权最小二乘法来求解。你知道吗


Tags: 方法图像selfdiffres像素scipy算器
1条回答
网友
1楼 · 发布于 2024-04-19 22:06:02

原来我对这个问题想得太多了。这可以分解为Ax=b形式的简单线性解。在这种情况下,当查看误差方程时:

argmin(THETA) sum(W * ||PSI * THETA - I||^2)

我们可以在均方根内把重量分配给各个部分。我们的等式是:

W * PSI * THETA = W * I

我们可以使用您最喜欢的线性解算器(即共轭梯度下降法)求解

相关问题 更多 >