我已经看到了很多关于算法基于什么的解释,但我似乎无法找到中轴转换本身的任何实际代码(伪代码或某种语言).
对于某些情况(例如具有离散角的多边形),它可以简化为delaunay三角形,但我更关心的是你有一个blob(例如人类被跟踪)并想要计算它的骨架.
这个伪代码会是什么样的?
language-agnostic algorithm image-processing computer-vision computational-geometry
我知道要从中心点绘制正多边形,您可以使用以下内容:
for (int i = 0; i < n; i++) {
p.addPoint((int) (100 + 50 * Math.cos(i * 2 * Math.PI / n)),
(int) (100 + 50 * Math.sin(i * 2 * Math.PI / n))
);
}
Run Code Online (Sandbox Code Playgroud)
但是,无论如何都要更改此代码(不添加旋转)以确保始终绘制多边形,以使最上边或最下边与180度线平行?例如,通常,上面的代码为五边形或正方形(分别为n = 5和4)会产生类似于:
我正在寻找的是:
是否有任何数学方法可以实现这一目标?
给定3D中的4条线(表示为几个点),我想找到空间中的点,该点最小化该点与每条线之间的距离之和.
我试图找到一种方法将其表述为最小二乘问题,但我不太确定我应该如何做.我目前正在尝试使用以下网址提供的距离定义:http://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html
有任何想法吗?
发现试图用来the usual trick
重新定义GaussianFilter []:
out[x_]:=Print["(*"<>ToString@x<>"*)"];
(* Redefining Circle[ ] works as expected*)
Unprotect[Circle];
Circle[a_,args__]:=
Block[{$i=True},{"Circle",a}]/;!TrueQ[$i];
Protect[Circle];
out@Circle[{0,1},1,{0,2Pi}]
(*{Circle, {0, 1}}*)
(* Redefining GaussianFilter[ ] does not*)
Unprotect[GaussianFilter];
GaussianFilter[a_,args__]:=
Block[{$j=True},{"GaussianFilter",a}]/;!TrueQ[$j];
Protect[GaussianFilter];
SetDelayed::write: Tag GaussianFilter in GaussianFilter[a_,args__] is Protected>>
Run Code Online (Sandbox Code Playgroud) 我有一个阻抗方程,我已将其转移到 Mathematica,希望能简化它。它代表电路原理图,电路阻抗(Z,来自 V = iZ)是 s 平面中多项的很大一部分。
作为一个简短的例子,它可能看起来像:
L0s + (R1/(1 + R1 C1 s) + R3b + L3s + V3/s)/(R2a L2a s/(R2a + L2a s))
Run Code Online (Sandbox Code Playgroud)
我想将数据重新排列为:
k1*s^-1 + k2*s^0 + k3*s^1 ...
Run Code Online (Sandbox Code Playgroud)
与代表多余数据的所有值k
(各种 R、L 和 C 值的分数)。
什么公式操作最适合用来制作这些类型的结构?
。
。
。
我相信该Collect
函数无法根据 s 的指数处理分离事物,即使方程经过简化然后展开全部,由于项之间的划分级别 - 有几层未解析的分数。
在想知道这个问题的同时,我也很好奇,如果我将所有内容都转换到时域,是否可以按素数(导出/积分的次数)排序?
S c0 + c1 + d/dt*c2 + d^2/dt^2*c3 ...
Run Code Online (Sandbox Code Playgroud) 我试图解决微分方程:
DSolve[{0.02*x^2*y''[x] - y'[x] - y[x] == 0}, y[x], x]
但我收到了警告:
Part::partw: Part 2 of {1} does not exist.
我如何理解这个警告?非常感谢.
我有一个沿着轨迹移动的图形对象.如何让相机跟随物体?
我正在尝试导入.avi文件进行帧处理.
Import["c:\\windows\\clock.avi","Elements"]
Import["c:\\windows\\clock.avi","VideoEncoding"]
Import["c:\\windows\\clock.avi"]
Import["c:\\windows\\clock.avi",{"Frames",{5,6}}]
Out[115]= {Animation,BitDepth,ColorSpace,Data,Duration,FrameCount,FrameRate,
Frames,GraphicsList,ImageList,ImageSize,VideoEncoding}
Out[116]= rle8
Out[117]= {1,2,3,4,5,6,7,8,9,10,11,12}
During evaluation of In[115]:= Import::fmterr: Cannot import data as video format.
During evaluation of In[115]:= Import::fmterr: Cannot import data as video format.
Out[118]= {$Failed,$Failed}
Run Code Online (Sandbox Code Playgroud)
它报告了我测试的所有avi文件的相同错误.
任何提示?
我现在能够使用hspec"概率"生成一个y轴上的值在0.0和1.0之间的直方图,但是我想知道是否有办法将其显示为百分比(这只会改变标签) y轴).
这是我目前正在使用的:
Histogram[rawdata, {{0, 10, 20, 30, 40, 50, 60, 70, 80, 90,100}}, "Probability",
PlotRange -> {0, 1}]
Run Code Online (Sandbox Code Playgroud)