我有一个SDF,它是一个2d numpy数组,也是一个3d数组的图像特征数组,它在第三维中有各种纹理。所以在我的等式中,我有这个:
ux = np.sum(cv2.blur(phi0*txtre, (3, 3)))/np.sum(cv2.blur(phi0, (3, 3)))
vx = np.sum(cv2.blur((1-phi0)*txtre, (3, 3)))/np.sum(cv2.blur((1-phi0), (3, 3)))
a = (txtre - ux)**2
b = (txtre - vx)**2
dphidt = dirac(phi) * (cv2.blur((a - b), (3, 3)))
phi += (dt * dphidt) #dt is just to maintain CFL condition
这里我有 phi0 ,它是SDF的重要部分,是2d数组, txtre 是3d数组。但是这条线给了我广播错误。
稍后我需要采用渐变并更新 phi (SDF),只需更改 phi dphidt 。那么如何处理所有广播?
此处 dirac 功能定义如下
def dirac(p):
out = np.abs(p) <= 0.5