我希望对Matlab中的以下积分获得解析(封闭形式)解决方案。但是,Matlab给我有关实部和虚部的答案。如何获得仅包含“真实”部分的答案。这是完整的代码。
# ---- Image from video
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (21, 21), 0)
# if the average frame is None, initialize it
if average is None:
print("[INFO] starting background model...")
average = gray.copy().astype("float")
return 0, image
# accumulate the weighted average between the current frame and
# previous frames, then compute the difference between the current
# frame and running average
cv2.accumulateWeighted(gray, average, 0.5)
frame_delta = cv2.absdiff(gray, cv2.convertScaleAbs(average))
# threshold the delta image, dilate the thresholded image to fill
# in holes, then find contours on thresholded image
thresh = cv2.threshold(frame_delta, var_sis.config["delta_thresh"], 255,
cv2.THRESH_BINARY)[1]
thresh = cv2.dilate(thresh, None, iterations=2)
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if imutils.is_cv2() else cnts[1]
sorted contours = sorted(cnts, key=lambda x: cv2.contourArea(x), reverse=True)
# -----> I got contourns
答案 0 :(得分:2)
您所获得的(具有某些恒定因素)具有以下形式
✔ using the Infinite Red boilerplate v3 (code name 'Bowser')
✔ added React Native 0.57.7 in 38.8s
an error occured while installing ignite-ir-boilerplate-bowser boilerplate.
Error: template not found /Users/tyler/Github/ReactNativeBowser/node_modules/ignite-ir-boilerplate-bowser/boilerplate/.gitignore
这由表格的两个术语组成
1i * (c * erf(1i * a) - erf(c * 1i * (a - 2)))
又称为虚误差函数 - 1i * erf(1i * x)
。事实证明
erfi()
因此,对于erfi(x) = - 1i * erf(1i * x) = 2/sqrt(pi) * integral(@(t)exp(t.^2),0,x)
的实值,您的表达式实际上是真实的,并且x
和thetak >= 0
和sik
是实数时就是这种情况。
您开始使用的积分可以简化为sjk
的积分(使用某种仿射变换),众所周知,该积分没有“闭合形式”,但通常写为
exp(-t^2)
我强烈建议您阅读error function上的Wikipedia文章。
此外,我建议使用比MATLAB符号工具箱更适合初学者使用的CAS。我要推荐的一种免费且开源的CAS是Maxima。
(由于SO上缺少LaTeX,因此全部以MATLAB表示法编写。)
答案 1 :(得分:1)
您获得的答案(如果您有与我的Matlab版本相似的答案),并且我在此处复制了答案:
/ / 2 \
| 1/2 1/2 | thetak (sik - sjk) |
- | 2 pi exp| - ------------------- |
\ \ 2 /
/ / 1/2 1/2 \
| | 2 (-thetak) (sik i + sjk i) |
| erf| --------------------------------- | i -
\ \ 2 /
/ 1/2 1/2 \ \ \
| 2 (-thetak) (sik i + sjk i - 2 i) | | |
erf| --------------------------------------- | i | | /
\ 2 / / /
1/2
(4 (-thetak) )
给人的印象是,到处都有复数i。
但是实际上,由于(-thetak)^(1/2),这是一个错误的印象。
实际上,取负数的平方根将生成一个“ i”,该“ i”反过来将“杀死”与其“接触”的其他“ i”。由于可以找到(-thetak)^(1/2)的事实,所以这种取消将在不同的位置发生:
1)在erf表达式中和
2)作为公共分母(最后一行)。
验证规则i ^ 2 = -1适用于所有地方,不留任何生存“ i”的机会...
最终付出(我将thetak = s ^ 2设置为s> 0):
/ / \
| 1/2 1/2 | s^2 (sik - sjk)^2 |
- | 2 pi exp| - ------------------- |
\ \ 2 /
/ / 1/2 \
| | 2 s (sik + sjk ) |
| erf| ----------------------- | -
\ \ 2 /
/ 1/2 \ \ \
| 2 s (sik + sjk - 2 ) | | |
erf| ----------------------------- | | | / (4 s)
\ 2 / / /
编辑:您可能已经摆脱了集成。这个想法是将$ exp(-thetak *((t-sik)^ 2 +(t-sjk)^ 2))$中的平方转换为所谓的“规范形式”,在您的情况下为:$ exp (-thetak *((((tA)^ 2 + B))/ C); $其中$ A,B,C $可以表示为sik和sjk的函数(例如$ A =(sik + sjk)/ 2 $);这样,设置$ T = t-A $,您将返回到具有公式的经典高斯积分:
$$ \ frac {2} / {\ sqrt {\ pi}} \ int_a ^ b exp(-t ^ 2} dt)(erf(b)-erf(a))$$