我打算将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) 这个问题在某种程度上与语言无关,但我选择的工具恰好是一个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
以前,我根据解剖结构计算了方向轴,例如爪子中的脚趾.

但是我发现,当我无法很好地区分脚趾或"脚后跟"(蓝色方块)离开时,这不起作用.所以我决定寻找更好的选择,我决定尝试计算惯性轴.
这个页面给出了如何计算它的一个很好的解释,但我无法理解从质心(或我的情况下的压力)到一个角度的步骤.

解释归结为:
它使用压力中心和值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)