从图像/ Seam去除python / scipy的2D曲线估计

时间:2017-09-29 05:17:59

标签: python opencv image-processing scipy

我正在从拼接图像中去除缝线。我已经浏览了这个链接https://biop.epfl.ch/pdf/ASSEMBLY_poster.pdf并尝试实施。如何从RGB图像估计拟合抛物线,需要从原始图像中减去。我知道我可以使用scipy中的curve_fit,但我不知道如何传递我的xdata和ydata。到目前为止我所知道的,xdata将包含图像坐标(i,j)和ydata将包含强度级别,我很困惑。 我在这里附上我的代码,检查一下。

import cv2
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt

im1=cv2.imread("images/images/image_495.jpg",0)
value=[]
for i in range(im1.shape[0]):
    for j in range(im1.shape[1]):
        value.append(im1[i][j])
x=list(range(im1.shape[0]))
y=list(range(im1.shape[1]))
def fun(data,a,b,c,d):
    x,y = data
    f=a*(x**2)+b*x+d*(y**2)+e*y+c
    return f 
z=np.array(value)
popt,pcov=curve_fit(fun,np.hstack((x,y)),z,p0=[1,1,1,1])

如何传递图像坐标的x,y数据,len(x)和len(y)也不同。

1 个答案:

答案 0 :(得分:0)

你必须执行以下步骤:

  1. 计算图像的平均值
  2. 对于每个像素计算px值 - 均值
  3. 您将得到一组3d点(x,y,强度)
  4. 将抛物面拟合到该数据Paraboloid (3D parabola) surface fitting python
  5. 执行减法。