问题标签 [laplacian]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cartesian-coordinates - 什么是具有球对称性的反应扩散算法的良好拉普拉斯算子?
我正在做反应扩散计算,我得到了与笛卡尔坐标系相关的伪影,并结合了拉普拉斯算子的设计。最初的圆形对称种子发展成
其中左上结构使用传统的垂直水平拉普拉斯算子,右上结构使用添加对角线的拉普拉斯算子。左下角是从最近的 12 个点和右下角的 20 个点计算得出的拉普拉斯算子。即使是 20 点版本也会在一段时间后衰减。此代码位于https://www.shadertoy.com/view/3sGXWG
在这种情况下是否有更好或“最佳”的拉普拉斯算子?有人建议使用六边形和傅立叶坐标。
我什至接受涉及其他坐标系的答案,只要它们可以转换回笛卡尔坐标以便在计算机屏幕上查看。
python - 关于在 Python 中正确实现拉普拉斯求解器的格林函数的建议?
我发现这篇论文详细介绍了一种快速解决拉普拉斯/泊松问题的方法,尤其是对于图像。作者描述了一种非常简单但功能强大的算法,使他们能够比其他更复杂的算法更快地解决这些问题。这篇论文的关键见解是一个易于计算的离散格林函数的公式。
尽管论文中明确说明了算法的伪代码(第 8 页),但我在计算这个格林函数时遇到了麻烦。我在下面复制了一个示例问题。
论文通过使用卷积关系 A * B = Finv( F(A) ⊙ F(B)) 找到内核,其中⊙是Hadamard乘积。应用这个关系并注意到拉普拉斯核 K_L 和格林函数 V_mono 的卷积等于狄拉克的增量,格林函数 V_mono 可以从其他两个已知量计算出来。
但是我在推导格林函数时一直出错。例如,在下面的代码中,狄拉克 delta 的傅里叶变换中没有零项;但是在拉普拉斯核的傅里叶变换中有一个零项。这使得 Hadamard 将这些量除以找到未定义的格林函数。但是,当将拉普拉斯算子应用于已知图像并使用它在反向过程中找到格林函数时,结果几乎相同。(唯一的功能差异是有问题的 [0,0] 条目在反向计算条目中有一个 10^18 条目,而解析计算的条目在那里有一个无限值。)
由于这是论文的症结所在,我无法应用重建算法。我该如何修复我的算法?
PS 出于引用目的,本文被 Beaini 等人命名为“使用绿色函数卷积进行梯度域图像编辑的快速和最优拉普拉斯求解器”。
c++ - 3通道图像上的OpenCV CUDA拉普拉斯滤波器
我想使用 OpenCV 的 CUDA(当前版本 4.3.0)命名空间将拉普拉斯滤波器应用于图像。目前 CUDA 版本的拉普拉斯滤波器不接受 3 通道图像:
https://docs.opencv.org/4.3.0/dc/d66/group__cudafilters.html#gabf85fe61958bb21e93211a6fcc7c5c3b
我对此的想法是拆分通道,单独应用过滤器,然后重新合并在一起。但是,在尝试将过滤器应用于各个通道时出现错误。
我的第一个问题来自 create filter 函数中的 type() 类型。我手动将其设置为 CV_8U 以解决该问题,但随后在应用过滤器时遇到了另一个问题。我做错了吗?
python - 绘制歌曲中每个独特声音循环的时间范围,使用 python Librosa 按声音相似度对行进行排序
背景
这是电子歌曲中歌曲剪辑的视频。在视频的开头,歌曲全速播放。当您放慢歌曲速度时,您可以听到歌曲使用的所有独特声音。其中一些声音重复。
问题描述
我要做的是创建如下所示的视觉效果,其中为每个独特的声音创建一个水平轨道/行,该轨道上的彩色块对应于声音正在播放的歌曲中的每个时间帧。音轨/行应按声音与每个声音的相似程度排序,更相似的声音靠得更近。如果声音是如此相同以至于人类无法区分它们,那么它们应该被认为是相同的声音。
- 如果它通常可以满足我的要求,我会接受一个不完美的解决方案
- 观看上面链接的视频,了解我所说的视频描述。它包括一个我手动创建的视觉网格,它几乎与我尝试生成的网格相匹配。
例如,如果下面的 5 个波中的每一个都代表一个声音发出的声波,那么这些声音中的每一个都将被认为是相似的,并且将在网格上垂直放置彼此靠近。
尝试
我一直在寻找 librosa 中的拉普拉斯分割示例。标记为结构组件的图形看起来可能是我需要的。从阅读论文来看,他们似乎正试图将歌曲分成合唱、诗句、桥牌等片段……但我实际上是在试图将歌曲分成 1 或 2 个节拍片段。
这是拉普拉斯分割的代码(如果您愿意,也可以使用Jupyter Notebook )。
我认为必须改变的一件主要事情是集群的数量,在示例中它们有 5 个,但我不知道我想要它是什么,因为我不知道有多少声音。我将它设置为 400 产生以下结果,这并不是我可以使用的东西。理想情况下,我希望所有块都是纯色:而不是介于最大红色和蓝色值之间的颜色。
(我把它横着看更像我上面的例子,更像我试图产生的输出)
附加信息
背景中可能还有鼓音轨,有时会同时播放多个声音。如果这些多个声音组被解释为一个独特的声音,那没关系,但我显然更喜欢它们是否可以被区分为单独的声音。
如果它更容易,您可以使用删除鼓循环
更新
我能够通过瞬变分离声音。目前这种作品,但是它分成了太多的声音,据我所知,它似乎主要只是将一些声音分成两个。我还可以从我正在使用的软件创建一个 midi 文件,并使用它来确定瞬态时间,但如果可以的话,我想在没有 midi 文件的情况下解决这个问题。midi 文件非常准确,将声音文件分成 33 个部分,而瞬态代码将声音文件分成 40 个部分。这是midi的可视化
所以仍然需要解决的部分将是
- 更好的瞬态分离
- 对声音进行排序
java - 第一次迭代发散的 FitzHugh-Nagumo 扩散模型的实现
我正在尝试实现本文中描述的模型,它模拟了 Alan Turing 提出的二维 FitzHugh-Nagumo 模型的方程,作为形成动物皮肤图案的模型——换句话说:模拟两种物质在表面上扩散,它们如何相互作用,以及出现什么模式。这是论文的结果:
我已经在 Processing/Java 中实现了它(至少我的解释),但它并没有像它应该的那样工作(值有很多不同,即使是第一次迭代),所以我想知道我的实现出了什么问题(包括在帖子的末尾)。
这些是论文中关于实施的 3 个相关部分:
1. U&V
2. 有限差分方程
为u和v的每个值(像素)定义了一个相当简单的像素卷积。下一代给定像素的值是使用它及其邻居的当前迭代值计算的。
3. 他们使用的常数
所以我遇到的问题是u和v的值迅速发散到无穷大/NaN(我希望它们应该保持在 0...1 范围内,尽管论文没有明确提到这一点)。v似乎首先发散,将u与它一起带走,如此处所示(对于一些常数索引):
代码
fft - 使用 fft 的二阶导数
smoothing - Meshlab Laplacian Smooth 引入了尖峰
我正在使用 MeshLab 平滑通过 marching_cubes 和 pymesh 从 3d numpy 数组获得的网格。我正在处理一些类似的网格,其中只有一个给我这个问题。使用的滤波器是带有参数的拉普拉斯平滑滤波器:
- 平滑步骤 = 1
- 一维边界平滑 = True
- 余切加权 = True
附上拉普拉斯平滑前后的网格图像。不幸的是,由于隐私问题,必须在感兴趣的区域裁剪图像。
追踪问题的任何帮助或任何调试建议都会非常有帮助。
谢谢!
python-3.x - 非规则网格上的离散拉普拉斯算子(python)
我已经为非常规网格(使用 scipy.spatial.Delaunay 函数创建)编写了 laplacien 函数。我没有错误但结果不正确:特征向量正确但特征值太高(绝对值)。
拉普拉斯算子是名为“M”的函数。
“in_curve 函数”返回由 f(x,y,*fargs) < 0(样本中的正方形)定义的曲线内的点。
“triang”函数返回带有添加点的点(三角形网格)。该函数对曲线的边缘使用另一个函数(对于大多数精度),在示例中它是“rect_rim”函数。
我使用了https://en.wikipedia.org/wiki/Discrete_Laplace_operator(“mesh laplacians”)中给出的公式。
python - 如何使用 KNN 结果快速创建图(ImageNet)
我有来自 KNN 的数组,如下所示:
例如:
[[0,12,1,13]
[1,9,4,76]]
....
[76,2,3,4]]
现在我需要使用这个数组创建一个图,我尝试for
通过添加节点和边在网络中循环,但图拉普拉斯矩阵与正确答案不匹配。因为我正在处理 ImageNet,所以无法逐个节点检查以找出错误所在。
然后我尝试用这个数组从 KNN 生成一个稀疏邻接矩阵,然后用nx.from_scipy_sparse_matrix
. 但即使使用lil_matrix
,生成稀疏邻接矩阵仍然很慢。
现在我想知道有没有更好更快的方法来实现这一目标?
PS(根据networkx,曾经我们使用添加边,比如G.add_edge(1, 2)
。我们不需要单独添加这个节点,比如G.add_node(1)
。但是根据我的观察,在处理大量数据时并不正确)