相关疑难解决方法(0)

使用scipy.optimize.curve_fit - ValueError和minpack.error拟合2D高斯函数

我打算将2D高斯函数拟合到显示激光束的图像,以获得其参数FWHM和位置.到目前为止,我试图了解如何在Python中定义2D高斯函数以及如何将x和y变量传递给它.

我写了一个小脚本来定义该函数,绘制它,为它添加一些噪声,然后尝试使用它curve_fit.除了我尝试将模型函数适合噪声数据的最后一步之外,一切似乎都有效.这是我的代码:

import scipy.optimize as opt
import numpy as np
import pylab as plt


#define model function and pass independant variables x and y as a list
def twoD_Gaussian((x,y), amplitude, xo, yo, sigma_x, sigma_y, theta, offset):
    xo = float(xo)
    yo = float(yo)    
    a = (np.cos(theta)**2)/(2*sigma_x**2) + (np.sin(theta)**2)/(2*sigma_y**2)
    b = -(np.sin(2*theta))/(4*sigma_x**2) + (np.sin(2*theta))/(4*sigma_y**2)
    c = (np.sin(theta)**2)/(2*sigma_x**2) + (np.cos(theta)**2)/(2*sigma_y**2)
    return offset + amplitude*np.exp( - (a*((x-xo)**2) + 2*b*(x-xo)*(y-yo) + c*((y-yo)**2)))

# Create x and y indices
x = np.linspace(0, …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy data-fitting

23
推荐指数
3
解决办法
4万
查看次数

查找图像中的空白区域

这个问题在某种程度上与语言无关,但我选择的工具恰好是一个numpy数组.

我正在做的是通过PIL获取两个图像的差异:

img = ImageChops.difference(img1, img2)
Run Code Online (Sandbox Code Playgroud)

我想找到包含从一张图片到另一张图片的变化的矩形区域.当然有内置.getbbox()方法,但是如果有两个区域有变化,它会从一个区域返回一个框到另一个区域,如果每个角落只有1个像素变化,它将返回整个图像.

例如,考虑以下o是非零像素:

______________________
|o            ooo    |
|      oooo   ooo    |
|      o             |
|      o  o          |
|                    |
|     oo       o     |
|    o  o     ooo    |
|     oo     ooooo   |
|             ooo    |
|              o     |
|____________________|
Run Code Online (Sandbox Code Playgroud)

我想得到包含每个非零区域的边界框的4x4元组.对于边缘情况

oooo
o
o  o
Run Code Online (Sandbox Code Playgroud)

结构,我并不十分担心这是如何处理的 - 要么将两个部分单独或一起使用,因为倒L形的边界将完全重叠单个像素的边界.

我从来没有做过任何先进的图像处理,所以我想在我真正写任何东西之前得到一些输入(如果我已经使用的模块中有预先存在的方法,我欢迎他们!).

我的psuedocode-ish版本是这样的:

for line in image:
   started = False
   for pixel in line:
      if pixel and not started:
         started = True
         save start …
Run Code Online (Sandbox Code Playgroud)

python language-agnostic numpy image-processing python-imaging-library

10
推荐指数
1
解决办法
3120
查看次数

如何计算方向轴?

以前,我根据解剖结构计算了方向轴,例如爪子中的脚趾.

在此输入图像描述

但是我发现,当我无法很好地区分脚趾或"脚后跟"(蓝色方块)离开时,这不起作用.所以我决定寻找更好的选择,我决定尝试计算惯性轴.

这个页面给出了如何计算它的一个很好的解释,但我无法理解从质心(或我的情况下的压力)到一个角度的步骤.

在此输入图像描述

解释归结为: 在此输入图像描述 它使用压力中心和值p,我不知道它是什么.

我可以访问为人类脚计算此轴的Matlab代码,并尽力将其转换为Python:

x = 0.508 # sensor size in the x-direction
y = 0.762 # sensor size in the y-direction
Ptot = 0 # total pressure 
Px   = 0 # first order moment(x)
Py   = 0 # first order moment(y)
Pxx  = 0 # second order moment (y)
Pyy  = 0 # second order moment (x)
Pxy  = 0 # second order moment (xy)

for row in range(rows): # y-direction
    for col in …
Run Code Online (Sandbox Code Playgroud)

python image-processing

8
推荐指数
1
解决办法
5450
查看次数